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/hp/requests/compute_v2/create_image.rb

63 lines
2.2 KiB
Ruby

module Fog
module Compute
class HPV2
class Real
# Create an image from an existing server
#
# ==== Parameters
# * 'server_id'<~String> - UUId of server to create the image from
# * 'name'<~String> - Name of the image
# * 'metadata'<~Hash> - A hash of metadata options
#
# ==== Returns
# Does not return a response body.
def create_image(server_id, name, metadata = {})
body = { 'createImage' =>
{ 'name' => name,
'metadata' => metadata
}
}
server_action(server_id, body)
end
end
class Mock
def create_image(server_id, name, metadata = {})
response = Excon::Response.new
if list_servers_detail.body['servers'].detect {|_| _['id'] == server_id}
response.status = 202
image_id = Fog::HP::Mock.uuid.to_s
data = {
'id' => image_id,
'server' => {"id"=>server_id, "links"=>[{"href"=>"http://nova1:8774/v1.1/servers/#{server_id}", "rel"=>"bookmark"}]},
'links' => [{"href"=>"http://nova1:8774/v1.1/tenantid/images/#{image_id}", "rel"=>"self"}, {"href"=>"http://nova1:8774/tenantid/images/#{image_id}", "rel"=>"bookmark"}],
'metadata' => metadata || {},
'name' => name || "image_#{rand(999)}",
'progress' => 0,
'minDisk' => 0,
'minRam' => 0,
'status' => 'SAVING',
'updated' => "2012-01-01T13:32:20Z",
'created' => "2012-01-01T13:32:20Z"
}
self.data[:last_modified][:images][data['id']] = Time.now
self.data[:images][data['id']] = data
response.headers = {'Content-Length' => '0', 'Content-Type' => 'text/html; charset=UTF-8', 'Date' => Time.now, 'Location' => "http://nova1:8774/v1.1/images/#{image_id}"}
response.body = '' # { 'image' => data } no data is returned
response
else
raise Fog::Compute::HPV2::NotFound
end
end
end
end
end
end