class SettingsReader::VaultResolver::Configuration

Configurations for vault resolver

Attributes

lease_refresh_interval[RW]

How often do we check if secret lease is about to expire Default: 60seconds

lease_renew_delay[RW]

Time before expiration when we try to renew the lease Default: 300seconds

lease_renew_error_listener[RW]

Block to be executed when lease is not refreshed Default: empty proc

lease_renew_retries[RW]

How many times to retry renew of the secret Default: 4

lease_renew_success_listener[RW]

Block to be executed when lease is refreshed Default: empty proc

logger[RW]

Logger for gem Default: Logger.new(STDOUT, level: Logger::ERROR)

retrieval_retries[RW]

How many times to retry retrieval of the secret Default: 2

Public Class Methods

new() click to toggle source
# File lib/settings_reader/vault_resolver/configuration.rb, line 33
def initialize
  @logger = Logger.new($stdout, level: Logger::ERROR)
  @retrieval_retries = 2
  @lease_refresh_interval = 60
  @lease_renew_delay = 300
  @lease_renew_retries = 4
  @lease_renew_error_listener = proc {}
  @lease_renew_success_listener = proc {}
end

Public Instance Methods

setup_lease_refresher(cache, previous_task = nil) click to toggle source
# File lib/settings_reader/vault_resolver/configuration.rb, line 43
def setup_lease_refresher(cache, previous_task = nil)
  previous_task&.shutdown

  timer_task = Concurrent::TimerTask.new(execution_interval: lease_refresh_interval) do
    SettingsReader::VaultResolver::Refresher.new(cache, self).refresh
  end
  timer_task.add_observer(SettingsReader::VaultResolver::RefresherObserver.new(self))
  timer_task.execute
  timer_task
end
vault_engine_for(address) click to toggle source
# File lib/settings_reader/vault_resolver/configuration.rb, line 62
def vault_engine_for(address)
  unless (engine = vault_engines.detect { |e| e.retrieves?(address) })
    raise SettingsReader::VaultResolver::Error, "Unknown engine for #{address}"
  end

  engine
end
vault_engines() click to toggle source
# File lib/settings_reader/vault_resolver/configuration.rb, line 54
def vault_engines
  @vault_engines ||= [
    SettingsReader::VaultResolver::Engines::KV2.new(self),
    SettingsReader::VaultResolver::Engines::Database.new(self),
    SettingsReader::VaultResolver::Engines::Auth.new(self)
  ]
end