mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
81 lines
2.5 KiB
Ruby
81 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
|