class Armrest::Services::KeyVault::Base

Private Instance Methods

api() click to toggle source
# File lib/armrest/services/key_vault/base.rb, line 11
def api
  check_vault_configured!
  vault_subdomain = @vault.downcase
  endpoint = "https://#{vault_subdomain}.vault.azure.net"
  logger.debug "Azure vault endpoint #{endpoint}"
  Armrest::Api::Main.new(
    api_version: "7.1",
    endpoint: endpoint,
    resource: "https://vault.azure.net",
  )
end
check_vault_configured!() click to toggle source
# File lib/armrest/services/key_vault/base.rb, line 24
    def check_vault_configured!
      return if @vault
      logger.error "ERROR: Vault has not been configured.".color(:red)
      logger.error <<~EOL
        Please configure the Azure KeyVault you want to use.  Examples:

        1. env var

            ARMREST_VAULT=demo-vault

        2. class var

            Armrest::KeyVault::Secret.vault = "demo-vault"
      EOL
      raise VaultNotConfiguredError.new
    end
standard_error_message(resp) click to toggle source

Secret error handling: 1. network 2. json parse 3. missing secret

Azure API responses with decent error message when

403 Forbidden - KeyVault Access Policy needs to be set up
404 Not Found - Secret name is incorrect
# File lib/armrest/services/key_vault/base.rb, line 47
def standard_error_message(resp)
  data = JSON.load(resp.body)
  data['error']['message']
rescue JSON::ParserError
  resp.body
end