[PATCH conductor 14/20] Changes format of XML on input of create action

pblaho at redhat.com pblaho at redhat.com
Fri Jun 8 00:38:07 UTC 2012


From: Petr Blaho <pblaho at redhat.com>

https://www.aeolusproject.org/redmine/issues/3248

Now create action accepts provider type id as an attribut
of provider_type node - <provider_type id="1" />
(before only <provider_type_id>1</provider_type_id> worked)
---
 src/app/controllers/providers_controller.rb        |   10 ++++++++++
 .../step_definitions/provider_api_steps.rb         |    2 +-
 src/spec/controllers/providers_controller_spec.rb  |    4 +++-
 3 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/app/controllers/providers_controller.rb b/src/app/controllers/providers_controller.rb
index 3ed37b1..a741d6e 100644
--- a/src/app/controllers/providers_controller.rb
+++ b/src/app/controllers/providers_controller.rb
@@ -102,11 +102,21 @@ class ProvidersController < ApplicationController
   def create
     @title = t("providers.new.new_provider")
     require_privilege(Privilege::CREATE, Provider)
+
     if params[:provider].has_key?(:provider_type_deltacloud_driver)
       provider_type = params[:provider].delete(:provider_type_deltacloud_driver)
       provider_type = ProviderType.find_by_deltacloud_driver(provider_type)
       params[:provider][:provider_type_id] = provider_type.id
     end
+
+    # looking for ProviderType based on content of provider_type tag in xml
+    if params[:provider].has_key?(:provider_type) && params[:provider][:provider_type].has_key?(:id)
+      provider_type_hash = params[:provider].delete(:provider_type)
+      provider_type_id = provider_type_hash[:id]
+      provider_type = ProviderType.find_by_id(provider_type_id)
+      params[:provider][:provider_type_id] = provider_type.id
+    end
+
     @provider = Provider.new(params[:provider])
 
     if @provider.save
diff --git a/src/features/step_definitions/provider_api_steps.rb b/src/features/step_definitions/provider_api_steps.rb
index 8ca44f7..5b7f5fd 100644
--- a/src/features/step_definitions/provider_api_steps.rb
+++ b/src/features/step_definitions/provider_api_steps.rb
@@ -55,7 +55,7 @@ When /^I create provider with correct data via XML$/ do
                     <provider>
                     <name>#{@provider.name}</name>
                     <url>#{@provider.url}</url>
-                    <provider_type_id>#{@provider.provider_type_id}</provider_type_id>
+                    <provider_type id="#{@provider.provider_type_id}" />
                     </provider>
                     ]
 
diff --git a/src/spec/controllers/providers_controller_spec.rb b/src/spec/controllers/providers_controller_spec.rb
index b71a0a1..1ee608d 100644
--- a/src/spec/controllers/providers_controller_spec.rb
+++ b/src/spec/controllers/providers_controller_spec.rb
@@ -231,7 +231,9 @@ describe ProvidersController do
           before(:each) do
             post :create, :provider => { :name => provider.name,
               :url => provider.url,
-              :provider_type_id => provider.provider_type.id
+              :provider_type => {
+                :id => provider.provider_type.id
+              }
             }
           end
 
-- 
1.7.7.6




More information about the aeolus-devel mailing list