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/rackspace/requests/compute_v2/create_image.rb
Paul Thornthwaite 2e0b7e545a Standardise empty lines throughout codebase
Done with `rubocop --auto-correct --only EmptyLineBetweenDefs,EmptyLines,EmptyLinesAroundBody`
2014-05-26 14:20:02 +01:00

97 lines
3.9 KiB
Ruby

module Fog
module Compute
class RackspaceV2
class Real
# Create an image from a running server
#
# @param [String] server_id Id of server to create image from
# @param [String] name name for created image
# @param [Hash] options
# @option options [Hash] :metadata - key value pairs of image metadata
# @return [Excon::Response] response
# @raise [Fog::Compute::RackspaceV2::NotFound] - HTTP 404
# @raise [Fog::Compute::RackspaceV2::BadRequest] - HTTP 400
# @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500
# @raise [Fog::Compute::RackspaceV2::ServiceError]
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/Create_Image-d1e4655.html
#
# * State Transition:
# * SAVING -> ACTIVE
# * SAVING -> ERROR (on error)
def create_image(server_id, name, options = {})
data = {
'createImage' => {
'name' => name
}
}
data['createImage'].merge!(options)
request(
:body => Fog::JSON.encode(data),
:expects => 202,
:method => 'POST',
:path => "servers/#{server_id}/action"
)
end
end
class Mock
def create_image(server_id, name, options = {})
image_id = Fog::Rackspace::MockData.uuid
image = {
"OS-DCF:diskConfig" => "AUTO",
"created" => "2012-02-28T19:38:57Z",
"id" => image_id,
"links" => [
{
"href" => "https://dfw.servers.api.rackspacecloud.com/v2/010101/images/#{image_id}",
"rel" => "self"
},
{
"href" => "https://dfw.servers.api.rackspacecloud.com/010101/images/#{image_id}",
"rel" => "bookmark"
},
{
"href" => "https://dfw.servers.api.rackspacecloud.com/010101/images/#{image_id}",
"rel" => "alternate",
"type" => "application/vnd.openstack.image"
}
],
"metadata" => {
"arch" => "x86-64",
"auto_disk_config" => "True",
"com.rackspace__1__build_core" => "1",
"com.rackspace__1__build_managed" => "0",
"com.rackspace__1__build_rackconnect" => "0",
"com.rackspace__1__options" => "0",
"com.rackspace__1__visible_core" => "1",
"com.rackspace__1__visible_managed" => "0",
"com.rackspace__1__visible_rackconnect" => "0",
"image_type" => "base",
"org.openstack__1__architecture" => "x64",
"org.openstack__1__os_distro" => "org.ubuntu",
"org.openstack__1__os_version" => "11.10",
"os_distro" => "ubuntu",
"os_type" => "linux",
"os_version" => "11.10",
"rax_managed" => "false",
"rax_options" => "0"
},
"minDisk" => 10,
"minRam" => 256,
"name" => "Ubuntu 11.10",
"progress" => 100,
"status" => "SAVING",
"updated" => "2012-02-28T19:39:05Z"
}
self.data[:images][image_id] = image
response(
:status => 202,
:headers => {"Location" => "/#{image_id}"}
)
end
end
end
end
end