From: marios <[email protected]>
Signed-off-by: marios <[email protected]> --- server/lib/cimi/collections/machine_images.rb | 11 +++++++++++ server/lib/cimi/models/machine_image.rb | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/server/lib/cimi/collections/machine_images.rb b/server/lib/cimi/collections/machine_images.rb index 822a7d5..21632fb 100644 --- a/server/lib/cimi/collections/machine_images.rb +++ b/server/lib/cimi/collections/machine_images.rb @@ -43,6 +43,17 @@ module CIMI::Collections end end + operation :create, :with_capability => :create_image do + description "Create a new machine image." + control do + machine_image = CIMI::Model::MachineImage.create(request.body, self) + respond_to do |format| + format.xml { machine_image.to_xml } + format.json { machine_image.to_json } + end + end + end + end end diff --git a/server/lib/cimi/models/machine_image.rb b/server/lib/cimi/models/machine_image.rb index 6034e5b..763b9bd 100644 --- a/server/lib/cimi/models/machine_image.rb +++ b/server/lib/cimi/models/machine_image.rb @@ -49,4 +49,12 @@ class CIMI::Model::MachineImage < CIMI::Model::Base ) end + def self.create(request_body, context) + type = context.grab_content_type(context.request.content_type, request_body) + input = (type == :xml)? XmlSimple.xml_in(request_body.read, {"ForceArray"=>false,"NormaliseSpace"=>2}) : JSON.parse(request_body.read) + params = {:id => context.href_id(input["imageLocation"], :machines), :name=>input["name"], :description=>input["description"]} + image = context.driver.create_image(context.credentials, params) + from_image(image, context) + end + end -- 1.7.11.7
