[PATCH conductor 6/8] API import (used by aeolus-cli) requires Provider Account now.

Matt Wagner matt.wagner at redhat.com
Tue Dec 13 19:09:52 UTC 2011


The common Image.import method is used by both import methods now.
---
 src/app/controllers/api/images_controller.rb |   16 ++++++++--------
 src/app/models/image.rb                      |    4 ++--
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/app/controllers/api/images_controller.rb b/src/app/controllers/api/images_controller.rb
index 01280b0..1b83ff2 100644
--- a/src/app/controllers/api/images_controller.rb
+++ b/src/app/controllers/api/images_controller.rb
@@ -63,8 +63,10 @@ module Api
           @image.save!
           respond_with(@image)
         elsif req[:type] == :import
-          @image = Aeolus::Image::Factory::Image.new(req[:params])
-          @image.save!
+          account = ProviderAccount.find_by_label(req[:params][:provider_account_name])
+          raise(Aeolus::Conductor::API::ProviderAccountNotFound.new(404, t("api.error_messages.provider_account_not_found",
+            :name => req[:params][:provider_account_name]))) unless account.present?
+          @image = Image.import(account, req[:params][:target_identifier], req[:params][:image_descriptor])
           respond_with(@image)
         end
       rescue ActiveResource::BadRequest => e
@@ -94,14 +96,12 @@ module Api
         { :type => :build, :params => { :template => doc.xpath("/image/tdl/template").to_s,
                                         :targets => doc.xpath("/image/targets").text }
         }
-      elsif !doc.xpath("/image/target_name").empty? && !doc.xpath("/image/target_identifier").empty? &&
-                 !doc.xpath("/image/image_descriptor").empty? && !doc.xpath("/image/provider_name").empty?
+      elsif !doc.xpath("/image/provider_account_name").empty? && !doc.xpath("/image/target_identifier").empty? &&
+                 !doc.xpath("/image/image_descriptor").empty?
 
-        { :type => :import, :params => { :target_name => doc.xpath("/image/target_name").text,
-                                         :targets => doc.xpath("/image/target_name").text,
-                                         :target_identifier => doc.xpath("/image/target_identifier").text,
+        { :type => :import, :params => { :target_identifier => doc.xpath("/image/target_identifier").text,
                                          :image_descriptor => doc.xpath("/image/image_descriptor").children.first.to_s,
-                                         :provider_name => doc.xpath("/image/provider_name").text }
+                                         :provider_account_name => doc.xpath("/image/provider_account_name").text }
         }
       else
         { :type => :failed }
diff --git a/src/app/models/image.rb b/src/app/models/image.rb
index dabd5d1..dcc8a0e 100644
--- a/src/app/models/image.rb
+++ b/src/app/models/image.rb
@@ -40,7 +40,7 @@ class Image < WarehouseModel
 
   # Given a Provider Account and an image ID, import the image
   #  xml is an optional XML file describing the image (if omitted, we generate the XML)
-  # Returns the Aeolus::Image::Warehouse::Image object, or raises any exceptions encountered
+  # Returns the Aeolus::Image::Factory::Image object, or raises any exceptions encountered
   def self.import(provider_account, image_id, xml=nil)
     provider = provider_account.provider
     xml ||= "<image><name>#{image_id}</name></image>"
@@ -56,7 +56,7 @@ class Image < WarehouseModel
     # This assumes (as is currently correct) that there will only be one provider image for imported images
     pimg = iwhd_image.provider_images.first
     pimg.set_attr('provider_account_identifier', provider_account.credentials_hash['username'])
-    iwhd_image
+    image
   end
 
   # The iwhd API really isn't built for what we're trying to do.
-- 
1.7.6.4




More information about the aeolus-devel mailing list