1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/openstack/models/compute/key_pair.rb
Nelvin Driz 7cf6031c81 [openstack|compute] Add Tenants and Fix Authentication Implementation
Fixed typorgraphical errors. Authentication assumes or does not require
certain parameters that is actually needed depending on the setup or
scenario. Opted to simply make it detect it if not specified to make it
easier for first time users to use.

Conflicts:

	lib/fog/openstack.rb
2012-04-30 10:34:58 +08:00

59 lines
1.3 KiB
Ruby

require 'fog/core/model'
module Fog
module Compute
class OpenStack
class KeyPair < Fog::Model
identity :name
attribute :fingerprint
attribute :public_key
attribute :private_key
attribute :user_id
attr_accessor :public_key
def destroy
requires :name
connection.delete_key_pair(name)
true
end
def save
requires :name
data = if public_key
connection.create_key_pair(name, public_key).body['keypair']
else
connection.create_key_pair(name).body['keypair']
end
new_attributes = data.reject {|key,value| !['fingerprint', 'public_key', 'name', 'private_key', 'user_id'].include?(key)}
merge_attributes(new_attributes)
true
end
def write(path="#{ENV['HOME']}/.ssh/fog_#{Fog.credential.to_s}_#{name}.pem")
if writable?
split_private_key = private_key.split(/\n/)
File.open(path, "w") do |f|
split_private_key.each {|line| f.puts line}
f.chmod 0600
end
"Key file built: #{path}"
else
"Invalid private key"
end
end
def writable?
!!(private_key && ENV.has_key?('HOME'))
end
end
end
end
end