1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

[rackspace|compute_v2] Image list returns details

Ensure consistency with detailed Flavor lists
This commit is contained in:
Chris Wuest 2013-08-26 18:42:14 -05:00
parent b14c25d3af
commit c9b2fed02d
3 changed files with 55 additions and 2 deletions

View file

@ -76,6 +76,7 @@ module Fog
request :create_image
request :list_images
request :list_images_detail
request :get_image
request :delete_image

View file

@ -39,7 +39,6 @@ module Fog
# @raise [Fog::Compute::RackspaceV2::InternalServerError] - HTTP 500
# @raise [Fog::Compute::RackspaceV2::ServiceError]
# @note Fog's current implementation only returns 1000 images.
# @note Fog does not retrieve all image details. Please use get to retrieve all details for a specific image.
# @see http://docs.rackspace.com/servers/api/v2/cs-devguide/content/List_Images-d1e4435.html
def all(options = {})
options = {
@ -51,7 +50,7 @@ module Fog
}.merge!(options)
merge_attributes(options)
data = service.list_images(options).body['images']
data = service.list_images_detail(options).body['images']
load(data)
end

View file

@ -0,0 +1,53 @@
module Fog
module Compute
class RackspaceV2
class Real
# Retrieves a list of images
# ==== Parameters
# * options<~String>:
# * 'name'<~String> - Filters the list of images by image name
# * 'limit'<~String> - Maximum number of objects to return
# * 'marker'<~String> - Only return objects whose name is greater than marker
# * 'status'<~String> - Filters the list of images by status
# * 'type'<~String> - Filters base Rackspace images or anyn custom server images that have been created
#
# @return [Excon::Response] response:
# * body [Hash]:
# * images [Array]:
# * [Hash]:
# * id [String] - image id
# * links [Array] - image links
# * name [String] - image name
# * minDisk [Fixnum] - image minimum disk required
# * minRam [Fixnum] - image minimum ram required
# * created [String] - image creation date (ISO 8601 format)
# * updated [String] - date of most recent image update
# * state [String] - image status (e.g. ACTIVE, SAVING, ERROR)
# * progress [Fixnum] - image saving progress
#
# @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/List_Images-d1e4435.html
def list_images_detail(options = {})
options = options.reject {|key, value| value.nil?}
request(
:expects => [200, 203],
:method => 'GET',
:path => 'images/detail',
:query => {'format' => 'json'}.merge!(options)
)
end
end
class Mock
def list_images_detail(options = {})
images = self.data[:images].values
response(:body => {"images" => images})
end
end
end
end
end