Class: Awsam::Key

Inherits:
Object
  • Object
show all
Defined in:
lib/awsam/key.rb

Constant Summary collapse

KEYFILE =
"key.pem"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(keydir) ⇒ Key

Returns a new instance of Key.



9
10
11
12
13
14
15
16
# File 'lib/awsam/key.rb', line 9

def initialize(keydir)
  @name = File.basename(keydir)
  @dir = keydir
  if @name == Awsam::DEFAULT_LINK_NAME
    # This is required for the default link
    raise "Can not name a key: #{Awsam::DEFAULT_LINK_NAME}"
  end
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



7
8
9
# File 'lib/awsam/key.rb', line 7

def name
  @name
end

Class Method Details

.import(acctdir, key_name, key_file) ⇒ Object



22
23
24
25
26
27
28
29
30
31
# File 'lib/awsam/key.rb', line 22

def self.import(acctdir, key_name, key_file)
  dir = File.join(Key::keys_dir(acctdir), key_name)
  FileUtils.mkdir(dir) unless File.exist?(dir)

  File.open(File.join(dir, KEYFILE), "w", 0400) do |f|
    f << File.read(key_file)
  end

  Key.new(dir)
end

.keys_dir(base) ⇒ Object



33
34
35
36
37
# File 'lib/awsam/key.rb', line 33

def self.keys_dir(base)
  dir = File.join(base, "keys")
  FileUtils.mkdir(dir) unless File.exist?(dir)
  dir
end

Instance Method Details

#pathObject



18
19
20
# File 'lib/awsam/key.rb', line 18

def path
  File.join(@dir, KEYFILE)
end


39
40
41
42
43
44
45
46
# File 'lib/awsam/key.rb', line 39

def print_environ
  envs = {
    "AMAZON_SSH_KEY_NAME" => @name,
    "AMAZON_SSH_KEY_FILE" => self.path
  }

  Utils::bash_environ(envs)
end

#removeObject



48
49
50
51
# File 'lib/awsam/key.rb', line 48

def remove
  FileUtils.rm(self.path)
  FileUtils.rmdir(@dir)
end