module Vault

Constants

VALID_NAME

Public Class Methods

data_bag(secret) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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