fog--fog/lib/fog/hp/requests/compute/create_key_pair.rb

77 lines
2.5 KiB
Ruby

module Fog
module Compute
class HP
class Real
# Create a new keypair
#
# ==== Parameters
# * key_name<~String> - Name of the keypair
# * public_key<~String> - The public key for the keypair
#
# ==== Returns
# * response<~Excon::Response>:
# * body<~Hash>:
# * 'keypair'<~Hash> - The keypair data
# * 'public_key'<~String> - The public key for the keypair
# * 'private_key'<~String> - The private key for the keypair
# * 'user_id'<~String> - The user id
# * 'fingerprint'<~String> - SHA-1 digest of DER encoded private key
# * 'name'<~String> - Name of key
#
# {Openstack API Reference}[http://docs.openstack.org]
def create_key_pair(key_name, public_key = nil)
if public_key.nil?
data = {
'keypair' => {
'name' => key_name
}
}
else
data = {
'keypair' => {
'name' => key_name,
'public_key' => public_key
}
}
end
request(
:body => Fog::JSON.encode(data),
:expects => 200,
:method => 'POST',
:path => 'os-keypairs.json'
)
end
end
class Mock
def create_key_pair(key_name, public_key = nil)
response = Excon::Response.new
unless self.data[:key_pairs][key_name]
response.status = 200
private_key, new_public_key = Fog::HP::Mock.key_material
new_public_key = public_key if public_key # if public key was passed in
data = {
'public_key' => new_public_key,
'fingerprint' => Fog::HP::Mock.key_fingerprint,
'name' => key_name
}
self.data[:last_modified][:key_pairs][key_name] = Time.now
self.data[:key_pairs][key_name] = { 'keypair' => data }
if public_key
response.body = { 'keypair' => data.merge({'user_id' => Fog::HP::Mock.user_id,}) }
else
response.body = { 'keypair' => data.merge({'private_key' => private_key, 'user_id' => Fog::HP::Mock.user_id,}) }
end
else
#raise Fog::Compute::HP::NotFound
response.status = 400
raise(Excon::Errors.status_error({:expects => 200}, response))
end
response
end
end
end
end
end