From: Michal Fojtik <mfoj...@redhat.com>
Signed-off-by: Michal fojtik <mfoj...@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