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

Reply via email to