Class: ComputeKeypairs

Inherits:
Object
  • Object
show all
Defined in:
lib/danarchy_sys/openstack/compute/keypairs.rb

Overview

OpenStack Keypair Management

Instance Method Summary collapse

Constructor Details

#initialize(compute, settings) ⇒ ComputeKeypairs

Returns a new instance of ComputeKeypairs.



4
5
6
7
# File 'lib/danarchy_sys/openstack/compute/keypairs.rb', line 4

def initialize(compute, settings)
  @compute = compute
  @settings = settings
end

Instance Method Details

#all_keypairsObject



18
19
20
# File 'lib/danarchy_sys/openstack/compute/keypairs.rb', line 18

def all_keypairs
  @compute.key_pairs
end

#check_keypair(keypair_name) ⇒ Object



33
34
35
36
37
38
# File 'lib/danarchy_sys/openstack/compute/keypairs.rb', line 33

def check_keypair(keypair_name)
  keypairs = list_keypairs

  return true if keypairs.include?(keypair_name)
  false
end

#create_keypair(keypair_name) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/danarchy_sys/openstack/compute/keypairs.rb', line 51

def create_keypair(keypair_name)
  keypair = @compute.create_key_pair(keypair_name)
  pemfile = pemfile_path(keypair_name)

  # create pemfile at pemfile_path
  keyhash = keypair.body['keypair']
  private_key = keyhash['private_key']
  File.open(pemfile, 'w') do |f|
    f.puts(private_key)
    f.chmod(0600)
  end

  # Verify and return keypair & pemfile
  keypair_check = check_keypair(keypair_name)
  pemfile_check = pemfile_check(pemfile)
  if keypair_check == true && pemfile_check == true
    puts "Created keypair and pemfile for #{keypair_name}!"
    return get_keypair(keypair_name)
  else
    abort("Error: Could not create keypair: #{keypair}") if keypair_check == false
    abort("Error: Could not create pemfile: #{pemfile}") if pemfile_check == false
  end
end

#delete_keypair(keypair_name) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/danarchy_sys/openstack/compute/keypairs.rb', line 75

def delete_keypair(keypair_name)
  # check for and delete key and .pem file
  pemfile = pemfile_path(keypair_name)
  pem_check = pemfile_check(pemfile)
  kp_check = check_keypair(keypair_name)

  @compute.delete_key_pair(keypair_name) if kp_check  == true
  File.delete(pemfile) if pem_check == true

  return true if check_keypair(keypair_name) == false
  false
end

#get_keypair(keypair_name) ⇒ Object



40
41
42
43
44
45
46
47
48
49
# File 'lib/danarchy_sys/openstack/compute/keypairs.rb', line 40

def get_keypair(keypair_name)
  keypairs = all_keypairs
  keypair = 'nil'

  keypairs.each do |kp|
    keypair = kp if kp.name == keypair_name
  end

  keypair
end

#list_keypairsObject



22
23
24
25
26
27
28
29
30
31
# File 'lib/danarchy_sys/openstack/compute/keypairs.rb', line 22

def list_keypairs
  keypair_list = []
  keypairs = all_keypairs

  keypairs.each do |kp|
    keypair_list.push(kp.name)
  end

  keypair_list
end

#pemfile_check(pemfile) ⇒ Object



13
14
15
16
# File 'lib/danarchy_sys/openstack/compute/keypairs.rb', line 13

def pemfile_check(pemfile)
  return true if File.exist?(pemfile)
  false
end

#pemfile_path(keypair_name) ⇒ Object



9
10
11
# File 'lib/danarchy_sys/openstack/compute/keypairs.rb', line 9

def pemfile_path(keypair_name)
  "#{@settings[:ssh_key_path]}/#{keypair_name}.pem"
end