class Awsam::Account

Constants

DEFAULT_REGION

Attributes

keys[R]
name[R]

Public Class Methods

load_from_disk(dir) click to toggle source
# File lib/awsam/account.rb, line 26
def self.load_from_disk(dir)
  name = File.basename(dir)
  conffile = File.join(dir, 'conf.yml')

  return nil unless File.exist?(conffile)

  File.open(conffile) do |yf|
    @conf = YAML::load(yf)
  end

  Account.new(name, @conf)
end
new(name, params) click to toggle source
# File lib/awsam/account.rb, line 13
def initialize(name, params)
  if name == Awsam::DEFAULT_LINK_NAME
    # We require this for our default account symlink
    raise "Can not name an account: #{Awsam::DEFAULT_LINK_NAME}"
  end
  @name = name
  @params = params

  @params[:aws_region] ||= DEFAULT_REGION

  load_keys
end

Public Instance Methods

access_key() click to toggle source
# File lib/awsam/account.rb, line 131
def access_key
  @params[:access_key]
end
aws_region() click to toggle source
# File lib/awsam/account.rb, line 139
def aws_region
  @params[:aws_region]
end
desc() click to toggle source

Export params…need better way to do this

# File lib/awsam/account.rb, line 127
def desc
  @params[:description]
end
ec2_url() click to toggle source
# File lib/awsam/account.rb, line 143
def ec2_url
  "https://ec2.#{aws_region}.amazonaws.com"
end
find_key(name) click to toggle source
# File lib/awsam/account.rb, line 73
def find_key(name)
  @keys[name]
end
get_default_key() click to toggle source
# File lib/awsam/account.rb, line 101
def get_default_key
  dflt = Utils::get_default(conf_file('keys'))
  @keys[dflt]
end
get_environ() click to toggle source
# File lib/awsam/account.rb, line 56
def get_environ
  envs = {
    "AMAZON_ACCESS_KEY_ID"     => @params[:access_key],
    "AWS_ACCESS_KEY_ID"        => @params[:access_key],
    "AWS_ACCESS_KEY"           => @params[:access_key],

    "AMAZON_SECRET_ACCESS_KEY" => @params[:secret_key],
    "AWS_SECRET_ACCESS_KEY"    => @params[:secret_key],
    "AWS_SECRET_KEY"           => @params[:secret_key],

    "AMAZON_AWS_ID"            => @params[:aws_id],
    "AWS_DEFAULT_REGION"       => @params[:aws_region],

    "EC2_URL"                  => ec2_url
  }
end
import_key(name, path) click to toggle source
# File lib/awsam/account.rb, line 77
def import_key(name, path)
  @keys[name] = Key.import(conf_file, name, path)
end
load_keys() click to toggle source
# File lib/awsam/account.rb, line 39
def load_keys
  @keys = Hash.new
  base = conf_file('keys')
  return unless File.exist?(base)
  Utils::confdir_scan(base) do |name|
    @keys[name] = Key.new(File.join(base, name))
  end
end
print_environ(set_export) click to toggle source
print_unset_environ() click to toggle source
remove() click to toggle source
# File lib/awsam/account.rb, line 106
def remove
  dir = conf_file
  acct = Awsam::Accounts::get_default
  if acct && acct.name == @name
    # Need to remove default link if we're the default account
    Awsam::Accounts::remove_default
  end

  FileUtils.rm_rf(dir)
end
remove_key(name) click to toggle source
# File lib/awsam/account.rb, line 81
def remove_key(name)
  return false unless @keys.has_key?(name)

  dflt = get_default_key
  Utils::remove_default(conf_file('keys')) if dflt && dflt.name == name
  @keys[name].remove
  @keys.delete(name)
  true
end
save() click to toggle source
# File lib/awsam/account.rb, line 117
def save
  dir = File.join(Awsam::get_accts_dir, @name)
  FileUtils.mkdir(dir) unless File.exist?(dir)

  File.open(File.join(dir, 'conf.yml'), "w", 0600) do |out|
    YAML.dump(@params, out )
  end
end
secret_key() click to toggle source
# File lib/awsam/account.rb, line 135
def secret_key
  @params[:secret_key]
end
set_default_key(keyname) click to toggle source
# File lib/awsam/account.rb, line 91
def set_default_key(keyname)
  key = @keys[keyname]
  unless key
    $stderr.puts "No key named #{keyname}"
    return false
  end

  Utils::set_default(conf_file('keys'), keyname)
end

Private Instance Methods

conf_file(file = nil) click to toggle source
# File lib/awsam/account.rb, line 149
def conf_file(file = nil)
  dir = File.join(Awsam::get_accts_dir(), @name)

  return file.nil? ? dir : File.join(dir, file)
end