From: Michal Fojtik <[email protected]>
Signed-off-by: Michal fojtik <[email protected]> --- server/lib/cimi/model/machine_image.rb | 21 +++++++++++++++++++++ server/lib/cimi/server.rb | 31 ++++++++----------------------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/server/lib/cimi/model/machine_image.rb b/server/lib/cimi/model/machine_image.rb index 18d91d4..779e21c 100644 --- a/server/lib/cimi/model/machine_image.rb +++ b/server/lib/cimi/model/machine_image.rb @@ -21,4 +21,25 @@ class CIMI::Model::MachineImage < CIMI::Model::Base array :operations do scalar :rel, :href end + + def self.find(id, _self) + images = [] + if id == :all + images = _self.driver.images(_self.credentials) + images.map { |image| from_image(image, _self) } + else + image = _self.driver.image(_self.credentials, id) + from_image(image, _self) + end + end + + def self.from_image(image, _self) + self.new( + :name => image.id, + :uri => _self.machine_image_url(image.id), + :description => image.description, + :image_location => { :href => "#{_self.driver.name}://#{image.id}" } # FIXME + ) + end + end diff --git a/server/lib/cimi/server.rb b/server/lib/cimi/server.rb index 2bd3a39..d1ae7d0 100644 --- a/server/lib/cimi/server.rb +++ b/server/lib/cimi/server.rb @@ -130,16 +130,11 @@ global_collection :machine_images do operation :index do description "List all machine configurations" control do - images = driver.send(:images, credentials, {}) - @dmtf_col_items = [] - if images - images.map do |image| - new_item = { "name" => image.name, - "href" => machine_image_url(image.id) } - @dmtf_col_items.insert 0, new_item - end + machine_images = MachineImage.all(self) + respond_to do |format| + format.xml { machine_images.to_xml_cimi_collection(self) } + format.json { machine_images.to_json_cimi_collection(self) } end - respond_to_collection "machine_image.col.xml" end end @@ -148,20 +143,10 @@ global_collection :machine_images do with_capability :image param :id, :string, :required control do - @image = driver.send(:image, credentials, { :id => params[:id]} ) - if @image - #setup the default values for a machine imageion - resource_default = get_resource_default "machine_image" - #get the actual values from image - resource_value = { "name" => @image.name, - "description" => @image.description, - "uri" => @image.id,"href" => machine_image_url(@image.id) } - #mixin actual values get from the specific image - @dmtfitem = resource_default["dmtfitem"].merge resource_value - show_resource "machine_images/show", "MachineImage", - {"property" => "properties", "operation" => "operations"} - else - report_error(404) + machine_image = MachineImage.find(params[:id], self) + respond_to do |format| + format.xml { machine_image.to_xml } + format.json { machine_image.to_json } end end end -- 1.7.4.4
