module AwsAssumeRole::Store::Keyring

Constants

KEYRING_KEY

Public Instance Methods

delete_credentials(id, backend: nil) click to toggle source
# File lib/aws_assume_role/store/keyring.rb, line 47
def delete_credentials(id, backend: nil)
    semaphore.synchronize do
        keyring(backend).delete_password(KEYRING_KEY, id)
    end
end
fetch(id, backend: nil) click to toggle source
# File lib/aws_assume_role/store/keyring.rb, line 40
def fetch(id, backend: nil)
    logger.debug "Fetching #{id} from keyring"
    fetched = keyring(backend).get_password(KEYRING_KEY, id)
    raise Aws::Errors::NoSuchProfileError if fetched == "null" || fetched.nil? || !fetched
    JSON.parse(fetched, symbolize_names: true)
end
keyring(backend = AwsAssumeRole::Config.backend) click to toggle source
# File lib/aws_assume_role/store/keyring.rb, line 31
def keyring(backend = AwsAssumeRole::Config.backend)
    keyrings[backend] ||= begin
        try_backend_plugin
        klass = backend ? "Keyring::Backend::#{backend}".constantize : nil
        logger.debug "Initializing #{klass} backend"
        ::Keyring.new(klass)
    end
end
keyrings() click to toggle source
# File lib/aws_assume_role/store/keyring.rb, line 21
def keyrings
    @keyrings ||= {}
end
save_credentials(id, credentials, expiration: nil, backend: nil) click to toggle source
# File lib/aws_assume_role/store/keyring.rb, line 53
def save_credentials(id, credentials, expiration: nil, backend: nil)
    credentials_to_persist = Serialization.credentials_to_hash(credentials)
    credentials_to_persist[:expiration] = expiration if expiration
    semaphore.synchronize do
        keyring(backend).delete_password(KEYRING_KEY, id)
        keyring(backend).set_password(KEYRING_KEY, id, credentials_to_persist.to_json)
    end
end
semaphore() click to toggle source
# File lib/aws_assume_role/store/keyring.rb, line 17
def semaphore
    @semaphore ||= Mutex.new
end
try_backend_plugin() click to toggle source
# File lib/aws_assume_role/store/keyring.rb, line 25
def try_backend_plugin
    return if AwsAssumeRole::Config.backend_plugin.blank?
    logger.info "Attempting to load #{AwsAssumeRole::Config.backend_plugin} plugin"
    require AwsAssumeRole::Config.backend_plugin
end