From: Imre Farkas <ifarkas(a)redhat.com>
---
src/app/models/pool.rb | 2 +
src/app/models/provider.rb | 2 +
src/app/models/provider_account.rb | 2 +
src/app/models/provider_priority_group.rb | 50 +++++++++++++++++++++++
src/app/models/provider_priority_group_element.rb | 22 ++++++++++
5 files changed, 78 insertions(+)
create mode 100644 src/app/models/provider_priority_group.rb
create mode 100644 src/app/models/provider_priority_group_element.rb
diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb
index 13baebc..23d31c6 100644
--- a/src/app/models/pool.rb
+++ b/src/app/models/pool.rb
@@ -66,6 +66,8 @@ class Pool < ActiveRecord::Base
has_many :deployments, :dependent => :destroy
+ has_many :provider_priority_groups, :dependent => :destroy
+
before_destroy :destroyable?
def cloud_accounts
diff --git a/src/app/models/provider.rb b/src/app/models/provider.rb
index cf2a7e7..64ddb33 100644
--- a/src/app/models/provider.rb
+++ b/src/app/models/provider.rb
@@ -59,6 +59,8 @@ class Provider < ActiveRecord::Base
has_many :derived_permissions, :as => :permission_object, :dependent =>
:destroy,
:include => [:role],
:order => "derived_permissions.id ASC"
+ has_many :provider_priority_group_elements, :as => :value, :dependent =>
:destroy
+ has_many :provider_priority_groups, :through => :provider_priority_group_elements
before_destroy :destroyable?
diff --git a/src/app/models/provider_account.rb b/src/app/models/provider_account.rb
index 067f5cf..1e8d41c 100644
--- a/src/app/models/provider_account.rb
+++ b/src/app/models/provider_account.rb
@@ -58,6 +58,8 @@ class ProviderAccount < ActiveRecord::Base
# eventually, this might be "has_many", but first pass is one-to-one
has_one :config_server, :dependent => :destroy
+ has_many :provider_priority_group_elements, :as => :value, :dependent =>
:destroy
+
# Helpers
attr_accessor :x509_cert_priv_file, :x509_cert_pub_file
diff --git a/src/app/models/provider_priority_group.rb
b/src/app/models/provider_priority_group.rb
new file mode 100644
index 0000000..1e1a594
--- /dev/null
+++ b/src/app/models/provider_priority_group.rb
@@ -0,0 +1,50 @@
+#
+# Copyright 2012 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#
http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+class ProviderPriorityGroup < ActiveRecord::Base
+
+ belongs_to :pool
+ has_many :provider_priority_group_elements, :dependent => :destroy
+ has_many :providers, :through => :provider_priority_group_elements, :source =>
:value, :source_type => 'Provider'
+ has_many :provider_accounts, :through => :provider_priority_group_elements, :source
=> :value, :source_type => 'ProviderAccount'
+
+ validates_numericality_of :score, :only_integer => true, :greater_than_or_equal_to
=> -100, :less_than_or_equal_to => 100
+
+ def include?(element)
+ if element.is_a?(Provider)
+ providers.include?(element)
+ elsif element.is_a?(ProviderAccount)
+ providers.include?(element.provider) || provider_accounts.include?(element)
+ end
+ end
+
+ def add_provider_accounts(selected_provider_accounts)
+ selected_provider_accounts.each do |provider_account|
+ unless providers.include?(provider_account.provider)
+ provider_accounts << provider_account
+ end
+ end
+ end
+
+ def all_provider_accounts
+ result = providers.inject([]) do |result, provider|
+ result += provider.provider_accounts
+ end
+
+ result += provider_accounts
+ end
+
+end
\ No newline at end of file
diff --git a/src/app/models/provider_priority_group_element.rb
b/src/app/models/provider_priority_group_element.rb
new file mode 100644
index 0000000..65d1c7b
--- /dev/null
+++ b/src/app/models/provider_priority_group_element.rb
@@ -0,0 +1,22 @@
+#
+# Copyright 2012 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#
http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+class ProviderPriorityGroupElement < ActiveRecord::Base
+
+ belongs_to :provider_priority_group
+ belongs_to :value, :polymorphic => true
+
+end
\ No newline at end of file
--
1.7.11.2