Class: ChefVaultRetry::Item

Inherits:
Object
  • Object
show all
Defined in:
lib/chef-vault-retry.rb

Class Method Summary collapse

Class Method Details

.load(v, i, retries = 40, databag_fallback = true) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/chef-vault-retry.rb', line 23

def self.load(v, i, retries = 40, databag_fallback = true)
  if ChefVault::Item.vault?(v, i)
    retries.times do
      begin
        return ChefVault::Item.load(v, i)
      rescue ChefVault::Exceptions::SecretDecryption
        puts 'SecretDecryption exception raised; '\
             "please refresh vault item (#{v}/#{i})"
        sleep 30
        next
      end
    end
    fail "Failed after #{retries} attempts to decrypt #{v}/#{i}"
  elsif databag_fallback
    Chef::DataBagItem.load(v, i)
  else
    fail "#{v}/#{i} vault item not found and databag_fallback not permitted"
  end
end