From: David Lutterkort <[email protected]>

The 'driver' matrix parameter needs to be included in the URL, in addition
to the newly selected provider in the POST /api handler

Signed-off-by: David Lutterkort <[email protected]>
---
 server/lib/deltacloud/server.rb |   13 +++++++------
 server/views/api/show.html.haml |    2 ++
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/server/lib/deltacloud/server.rb b/server/lib/deltacloud/server.rb
index bc9ef76..6cf0f52 100644
--- a/server/lib/deltacloud/server.rb
+++ b/server/lib/deltacloud/server.rb
@@ -110,6 +110,7 @@ get "#{settings.root_url}\/?" do
     return [401, 'Authentication failed'] unless 
driver.valid_credentials?(credentials)
   end
   @collections = [:drivers] + driver.supported_collections
+  @driver_name = driver.name unless driver.name.to_sym == DRIVER
   @providers = driver.configured_providers
   respond_to do |format|
     format.xml { haml :"api/show" }
@@ -128,12 +129,12 @@ get "#{settings.root_url}\/?" do
 end
 
 post "#{settings.root_url}\/?"  do
-  provider = params["provider"]
-  if provider && provider != "default"
-    redirect "#{settings.root_url}\;provider=#{params['provider']}", 301
-  else
-    redirect settings.root_url, 301
-  end
+  p = {}
+  ["provider", "driver"].each { |k| p[k] = params[k] if params[k] }
+  p.delete("provider") if p["provider"] == "default"
+  q = p.map { |k,v| "#{k}=#{v}" }.join(";")
+  q = ";" + q unless q.empty?
+  redirect "#{settings.root_url}#{q}", 301
 end
 
 # Rabbit DSL
diff --git a/server/views/api/show.html.haml b/server/views/api/show.html.haml
index 0d8a0fc..1613a7c 100644
--- a/server/views/api/show.html.haml
+++ b/server/views/api/show.html.haml
@@ -9,6 +9,8 @@
 - if @providers.size > 1
   %div{ :'data-role' => :footer, :'data-theme' => 'a'}
     %form{ :action => settings.root_url, :method => :post, :'data-ajax' => 
'false'}
+      - if @driver_name
+        %input{ :name => :driver, :type => :hidden, :value => @driver_name }/
       %div{ :'data-role' => :footer, :'data-theme' => 'a' , :class => 
'middle-dialog'}
         %label{ :for => :provider, :class => 'ui-input-text'}
         %select{:name => 'provider', :'data-native-menu' => "true" }
-- 
1.7.7.5

Reply via email to