You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2013/03/01 14:32:25 UTC

[PATCH core 5/9] CIMI: Migrated MachineImage to services

From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/lib/cimi/collections/machine_images.rb |  6 ++--
 server/lib/cimi/models/machine_image.rb       | 28 ---------------
 server/lib/cimi/service.rb                    |  1 +
 server/lib/cimi/service/machine_image.rb      | 51 +++++++++++++++++++++++++++
 4 files changed, 55 insertions(+), 31 deletions(-)
 create mode 100644 server/lib/cimi/service/machine_image.rb

diff --git a/server/lib/cimi/collections/machine_images.rb b/server/lib/cimi/collections/machine_images.rb
index ee0033c..ce9fa6a 100644
--- a/server/lib/cimi/collections/machine_images.rb
+++ b/server/lib/cimi/collections/machine_images.rb
@@ -24,7 +24,7 @@ module CIMI::Collections
       operation :index, :with_capability => :images do
         description "List all machine configurations"
         control do
-          machine_images = MachineImage.list(self).select_by(params['$select'])
+          machine_images = MachineImage.list(self)
           respond_to do |format|
             format.xml { machine_images.to_xml }
             format.json { machine_images.to_json }
@@ -46,7 +46,7 @@ module CIMI::Collections
       operation :create, :with_capability => :create_image do
         description "Create a new machine image."
         control do
-          mi = CIMI::Model::MachineImageCreate.parse(request.body, request.content_type)
+          mi = MachineImageCreate.parse(request.body, request.content_type)
           machine_image = mi.create(self)
           headers_for_create machine_image
           respond_to do |format|
@@ -59,7 +59,7 @@ module CIMI::Collections
       operation :destroy, :with_capability => :destroy_image do
         description "Delete a specified MachineImage"
         control do
-          CIMI::Model::MachineImage.delete!(params[:id], self)
+          MachineImage.delete!(params[:id], self)
           no_content_with_status 200
         end
       end
diff --git a/server/lib/cimi/models/machine_image.rb b/server/lib/cimi/models/machine_image.rb
index 74f48ef..f900dae 100644
--- a/server/lib/cimi/models/machine_image.rb
+++ b/server/lib/cimi/models/machine_image.rb
@@ -26,32 +26,4 @@ class CIMI::Model::MachineImage < CIMI::Model::Base
     scalar :rel, :href
   end
 
-  def self.find(id, context)
-    images = []
-    if id == :all
-      images = context.driver.images(context.credentials)
-      images.map { |image| from_image(image, context) }
-    else
-      image = context.driver.image(context.credentials, :id => id)
-      from_image(image, context)
-    end
-  end
-
-  def self.from_image(image, context)
-    self.new(
-      :id => context.machine_image_url(image.id),
-      :name => image.id,
-      :description => image.description,
-      :state => image.state || 'UNKNOWN',
-      :type => "IMAGE",
-      :created => image.creation_time.nil? ?
-        Time.now.xmlschema : Time.parse(image.creation_time.to_s).xmlschema
-    )
-  end
-
-  def self.delete!(image_id, context)
-    context.driver.destroy_image(context.credentials, image_id)
-    new(:id => image_id).destroy
-  end
-
 end
diff --git a/server/lib/cimi/service.rb b/server/lib/cimi/service.rb
index c9b662d..e029574 100644
--- a/server/lib/cimi/service.rb
+++ b/server/lib/cimi/service.rb
@@ -19,3 +19,4 @@ module CIMI::Service; end
 require_relative './models'
 require_relative './service/base'
 require_relative './service/machine'
+require_relative './service/machine_image'
diff --git a/server/lib/cimi/service/machine_image.rb b/server/lib/cimi/service/machine_image.rb
new file mode 100644
index 0000000..dad26a8
--- /dev/null
+++ b/server/lib/cimi/service/machine_image.rb
@@ -0,0 +1,51 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.  The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+class CIMI::Service::MachineImage < CIMI::Service::Base
+
+  def initialize(ctx, opts)
+    super
+  end
+
+  def self.find(id, context)
+    images = []
+    if id == :all
+      images = context.driver.images(context.credentials)
+      images.map { |image| from_image(image, context) }
+    else
+      image = context.driver.image(context.credentials, :id => id)
+      from_image(image, context)
+    end
+  end
+
+  def self.from_image(image, context)
+    self.new(context, :values => {
+      :id => context.machine_image_url(image.id),
+      :name => image.id,
+      :description => image.description,
+      :state => image.state || 'UNKNOWN',
+      :type => "IMAGE",
+      :created => image.creation_time.nil? ?
+      Time.now.xmlschema : Time.parse(image.creation_time.to_s).xmlschema
+    })
+  end
+
+  def self.delete!(image_id, context)
+    context.driver.destroy_image(context.credentials, image_id)
+    new(:id => image_id).destroy
+  end
+
+
+end
-- 
1.8.1.2