From: Imre Farkas <ifarkas(a)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