class ComputeKeypairs

OpenStack Keypair Management

Public Class Methods

new(compute, settings) click to toggle source
# File lib/danarchy_sys/openstack/compute/keypairs.rb, line 4
def initialize(compute, settings)
  @compute = compute
  @settings = settings
end

Public Instance Methods

all_keypairs() click to toggle source
# File lib/danarchy_sys/openstack/compute/keypairs.rb, line 18
def all_keypairs
  @compute.key_pairs
end
check_keypair(keypair_name) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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_keypairs() click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# File lib/danarchy_sys/openstack/compute/keypairs.rb, line 9
def pemfile_path(keypair_name)
  "#{@settings[:ssh_key_path]}/#{keypair_name}.pem"
end