class AWS::Creds::Store

Public Class Methods

new(opts={}) click to toggle source
# File lib/aws/creds/store.rb, line 19
def initialize opts={}
  # :keytab => false to disable autoloading
  keytab = opts[:keytab] || '~/.awscreds'
  import_keytab keytab if keytab

  @default = opts[:default]
  @default ||= ENV['AWS_IDENTITY'] unless opts[:ignore_environment]
  @default ||= 'default'
end

Public Instance Methods

[](name) click to toggle source
Calls superclass method
# File lib/aws/creds/store.rb, line 37
def [] name
  super name.to_s
end
credentials() click to toggle source
# File lib/aws/creds/store.rb, line 33
def credentials
  values
end
default?(name) click to toggle source
# File lib/aws/creds/store.rb, line 45
def default? name
  name == @default
end
default_keypair() click to toggle source
# File lib/aws/creds/store.rb, line 41
def default_keypair
  self[@default]
end
identities() click to toggle source
# File lib/aws/creds/store.rb, line 29
def identities
  keys
end
import_keytab(path) click to toggle source
# File lib/aws/creds/store.rb, line 49
def import_keytab path
  read_config(path).lines.each do |line, idx|
    fields = line.chomp.split ':'
    raise InvalidKeyTab.new path, "missing fields line #{idx}" unless fields.length >= 3
    self[fields[0]] = KeyPair.new fields[1], fields[2]
  end
  self
end
read_config(path) click to toggle source
# File lib/aws/creds/store.rb, line 58
def read_config path
  path = File.expand_path path

  raise MissingKeyTab.new path, 'does not exist' unless File.exists? path

  mode = File.stat(path).mode & 07777

  unless mode & 07077 == 0
    raise UnsafePerms.new path, "unsafe permissions (#{sprintf '%#04o', mode}); please chmod go= #{File.expand_path path}"
  end

  File.read path
end