class SettingsReader::VaultResolver::Engines::Abstract

Abstract interface for Vault Backends

Attributes

config[R]

Public Class Methods

new(config) click to toggle source
# File lib/settings_reader/vault_resolver/engines/abstract.rb, line 10
def initialize(config)
  @config = config
end

Public Instance Methods

get(address) click to toggle source
# File lib/settings_reader/vault_resolver/engines/abstract.rb, line 18
def get(address)
  return unless (vault_secret = get_secret_with_retries(address))

  wrap_secret(address, vault_secret)
rescue Vault::VaultError => e
  raise SettingsReader::VaultResolver::Error, e.message
end
renew(entry) click to toggle source
# File lib/settings_reader/vault_resolver/engines/abstract.rb, line 26
def renew(entry)
  return unless entry.leased?

  new_secret = renew_lease_with_retries(entry)
  entry.update_renewed(new_secret)
  true
rescue Vault::VaultError => e
  raise SettingsReader::VaultResolver::Error, e.message
end
retrieves?(_address) click to toggle source
# File lib/settings_reader/vault_resolver/engines/abstract.rb, line 14
def retrieves?(_address)
  raise NotImplementedError
end

Protected Instance Methods

get_secret(address) click to toggle source
# File lib/settings_reader/vault_resolver/engines/abstract.rb, line 50
def get_secret(address)
  raise NotImplementedError
end
get_secret_with_retries(address) click to toggle source
# File lib/settings_reader/vault_resolver/engines/abstract.rb, line 38
def get_secret_with_retries(address)
  Vault.with_retries(Vault::HTTPConnectionError, attempts: config.retrieval_retries) do
    get_secret(address)
  end
end
renew_lease(entry) click to toggle source
# File lib/settings_reader/vault_resolver/engines/abstract.rb, line 54
def renew_lease(entry)
  raise NotImplementedError
end
renew_lease_with_retries(address) click to toggle source
# File lib/settings_reader/vault_resolver/engines/abstract.rb, line 44
def renew_lease_with_retries(address)
  Vault.with_retries(Vault::HTTPConnectionError, attempts: config.lease_renew_retries) do
    renew_lease(address)
  end
end
wrap_secret(address, secret) click to toggle source
# File lib/settings_reader/vault_resolver/engines/abstract.rb, line 58
def wrap_secret(address, secret)
  SettingsReader::VaultResolver::Entry.new(address, secret)
end