Module: Vault
- Defined in:
- lib/vault-ruby-wrapper.rb
Constant Summary collapse
- VALID_NAME =
/^[\.\-[:alnum:]_]+$/
Class Method Summary collapse
- .data_bag(secret) ⇒ Object
- .data_bag_item(secret, item) ⇒ Object
- .secret_data(secret) ⇒ Object
- .validate_name!(name) ⇒ Object
Class Method Details
.data_bag(secret) ⇒ Object
21 22 23 24 |
# File 'lib/vault-ruby-wrapper.rb', line 21 def self.data_bag(secret) validate_name!(secret) return secret_data(secret).keys.collect{|k| k.to_s} end |
.data_bag_item(secret, item) ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/vault-ruby-wrapper.rb', line 26 def self.data_bag_item(secret, item) validate_name!(secret) validate_name!(item) data = secret_data(secret)[item.to_sym] unless data.to_s.strip.empty? return JSON.parse(data) end raise 'item does not exist' end |
.secret_data(secret) ⇒ Object
12 13 14 15 16 17 18 19 |
# File 'lib/vault-ruby-wrapper.rb', line 12 def self.secret_data(secret) mysecret = nil Vault.with_retries(Vault::HTTPConnectionError, attempts: 5) do mysecret = Vault.logical.read("secret/#{secret}") # rubocop:disable Lint/AssignmentInCondition end return mysecret.data if mysecret raise "Secret '#{secret}' returned an empty value" end |
.validate_name!(name) ⇒ Object
6 7 8 9 10 |
# File 'lib/vault-ruby-wrapper.rb', line 6 def self.validate_name!(name) unless name =~ VALID_NAME raise "DataBags must have a name matching #{VALID_NAME.inspect}, you gave #{name.inspect}" end end |