module Fog module Compute class HP class Real # Create an image from an existing server # # ==== Parameters # * server_id<~Integer> - Id of server to create image from # * name<~String> - Name of the image # * metadata<~Hash> - A hash of metadata options # * 'ImageType'<~String> - type of the image i.e. Gold # * 'ImageVersion'<~String> - version of the image i.e. 2.0 # # ==== Returns # Does not return a response body. def create_image(server_id, name, metadata = {}) body = { 'createImage' => { 'name' => name, 'metadata' => { 'ImageType' => metadata[:image_type], 'ImageVersion' => metadata[:image_version] } } } server_action(server_id, body) end end class Mock def create_image(server_id, name, metadata = {}) response = Excon::Response.new response.status = 202 image_id = Fog::Mock.random_numbers(6).to_s data = { 'id' => image_id, 'server' => {"id"=>"3", "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, 'status' => 'SAVING', 'updated' => "", 'created' => "" } 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 sent response end end end end end