On Sun, 2012-07-22 at 12:16 +0200, ifarkas(a)redhat.com wrote:
From: Imre Farkas <ifarkas(a)redhat.com>
---
.../provider_selection/provider_selection.rb | 12 +++++++
.../strategies/strict_order/strict_order.rb | 34 ++++++++++++++++++++
2 files changed, 46 insertions(+)
create mode 100644 src/vendor/provider_selection/provider_selection.rb
create mode 100644
src/vendor/provider_selection/strategies/strict_order/strict_order.rb
diff --git a/src/vendor/provider_selection/provider_selection.rb
b/src/vendor/provider_selection/provider_selection.rb
new file mode 100644
index 0000000..63ed8ef
--- /dev/null
+++ b/src/vendor/provider_selection/provider_selection.rb
@@ -0,0 +1,12 @@
+# Require strategies
+Dir['vendor/provider_selection/strategies/*/'].each do |path|
+ strategy_name = File.basename(path)
+ strategy_lib_path = File.expand_path(File.join(path,
"#{strategy_name}.rb"))
+ ProviderSelection::Base.register_strategy(strategy_name, strategy_lib_path)
+end
+
+# Register view path
+#ProviderSelection::Base.add_view_path(File.expand_path(File.join('vendor',
'provider_selection', 'views')))
+
+# Extend I18n.load_path
+#I18n.load_path += Dir[File.join(File.dirname(__FILE__), 'config',
'locales', '*.yml')]
diff --git a/src/vendor/provider_selection/strategies/strict_order/strict_order.rb
b/src/vendor/provider_selection/strategies/strict_order/strict_order.rb
new file mode 100644
index 0000000..10aca56
--- /dev/null
+++ b/src/vendor/provider_selection/strategies/strict_order/strict_order.rb
@@ -0,0 +1,34 @@
+module ProviderSelection
+ module Strategies
+
+ class StrictOrder
+
+ include ProviderSelection::ChainableStrategy
+
+ def self.include_in_listings?
+ false
+ end
+
+ def calculate
+ rank = @strategies.calculate
+
+ return rank if rank.instances.empty?
+
+ pool = rank.instances.first.pool
+
+ if pool.provider_priority_groups.any?
+ common_provider_accounts = find_common_provider_accounts
+
+ pool.provider_priority_groups.each do |priority_group|
+ new_priority_group =
ProviderSelection::PriorityGroup.create_from_active_record(priority_group,
common_provider_accounts)
if it's possible please split this line to two rows
+ rank.priority_groups << new_priority_group if
new_priority_group.present?
+ end
+ end
+
+ rank
+ end
+
+ end
+
+ end
+end
--
Jozef Zigmund