[PATCH conductor 13/22] Suppot for ProviderSelectionStrategy in ProviderSelectionsController

ifarkas at redhat.com ifarkas at redhat.com
Thu Aug 2 12:25:04 UTC 2012


From: Imre Farkas <ifarkas at redhat.com>

---
 .../controllers/provider_selections_controller.rb  | 38 +++++++++++++++++++---
 src/config/locales/en.yml                          | 11 ++++---
 src/config/routes.rb                               |  7 +---
 3 files changed, 42 insertions(+), 14 deletions(-)

diff --git a/src/app/controllers/provider_selections_controller.rb b/src/app/controllers/provider_selections_controller.rb
index 7ae67e2..27ea5f8 100644
--- a/src/app/controllers/provider_selections_controller.rb
+++ b/src/app/controllers/provider_selections_controller.rb
@@ -22,12 +22,42 @@ class ProviderSelectionsController < ApplicationController
   def show
     @pool = Pool.find(params[:pool_id])
     @environment = @pool.pool_family
+    @available_strategies = ProviderSelection::Base.strategies
   end
 
-  def edit_strategy
-    @pool = Pool.find(params[:pool_id])
-    @strategy = ProviderSelection::Base.find_strategy_by_name(params[:name])
-    @priority_groups = @pool.provider_priority_groups
+  def toggle_strategy
+    pool = Pool.find(params[:pool_id])
+    strategy = ProviderSelection::Base.find_strategy_by_name(params[:strategy_name])
+
+    if pool.provider_selection_strategies.exists?(:name => strategy.name)
+      provider_selection_strategy = pool.provider_selection_strategies.find_by_name(strategy.name)
+      provider_selection_strategy.enabled = !provider_selection_strategy.enabled
+    else
+      provider_selection_strategy =
+          ProviderSelectionStrategy.new(:name => strategy.name,
+                                        :enabled => true,
+                                        :pool => pool)
+    end
+
+    if provider_selection_strategy.save
+      notice =
+        if provider_selection_strategy.enabled
+          t('provider_selection.flash.successfully_enabled', :strategy_name => strategy.translated_name)
+        else
+          t('provider_selection.flash.successfully_disabled', :strategy_name => strategy.translated_name)
+        end
+
+      redirect_to :back, :notice => notice
+    else
+      notice =
+        if provider_selection_strategy.enabled
+          t('provider_selection.flash.failed_to_enable', :strategy_name => strategy.translated_name)
+        else
+          t('provider_selection.flash.failed_to_disable', :strategy_name => strategy.translated_name)
+        end
+
+      redirect_to :back, :notice => notice
+    end
   end
 
   private
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
index c475094..af65ecb 100644
--- a/src/config/locales/en.yml
+++ b/src/config/locales/en.yml
@@ -623,10 +623,12 @@ en:
       provider_selection: Provider Selection Strategies
       environment: "Environment: %{environment}"
       edit_strategy: "Edit %{name} Strategy"
-      strategies:
-        strict_order: 'Strict Order'
-    edit_stategy:
-      strategies: "Provider Selection Strategies for Pool: %{pool}"
+      configure: "Configure"
+    flash:
+      successfully_enabled: "Successfully enabled %{strategy_name} strategy"
+      successfully_disabled: "Successfully disabled %{strategy_name} strategy"
+      failed_to_enable: "Failed to enable %{strategy_name} strategy"
+      failed_to_disable: "Failed to disable %{strategy_name} strategy"
   hardware_profiles:
     hardware: Hardware
     hardware_profile: Hardware Profile
@@ -1308,6 +1310,7 @@ en:
       quota_percentage_used: "Quota Used"
       quota_maximum_running_instances: "Quota Limit"
       no_priority_group: 'No available priority group to display'
+      back_to_strategies: "Provider Selection Strategies for Pool: %{pool}"
     new:
       title: 'Add new Priority Group'
       back: "Provider Groups for Pool: %{pool}"
diff --git a/src/config/routes.rb b/src/config/routes.rb
index 8ff4f31..8ec7b68 100644
--- a/src/config/routes.rb
+++ b/src/config/routes.rb
@@ -101,12 +101,7 @@ Conductor::Application.routes.draw do
     resource :provider_selection, :only => [:show] do
       resources :provider_priority_groups, :except => [:show]
 
-      collection do
-        get :edit_strategy
-        #post :update_strategy
-      end
-
-      #match ':id', :to => 'provider_selections#show', :as => 'provider_selection_strategy'
+      match ':strategy_name/toggle', :to => 'provider_selections#toggle_strategy', :as => 'toggle_strategy'
     end
   end
 
-- 
1.7.11.2




More information about the aeolus-devel mailing list