From: Jan Provaznik <jprovazn(a)redhat.com>
---
src/app/models/deployment.rb | 1 +
src/app/models/instance.rb | 12 ++++--------
src/app/models/pool.rb | 4 ----
src/app/models/pool_family.rb | 4 ++--
src/app/models/provider_account.rb | 4 ----
src/spec/models/instance_spec.rb | 14 ++++++++++++--
6 files changed, 19 insertions(+), 20 deletions(-)
diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb
index 294df0f..91d5e96 100644
--- a/src/app/models/deployment.rb
+++ b/src/app/models/deployment.rb
@@ -94,6 +94,7 @@ class Deployment < ActiveRecord::Base
def pool_must_be_enabled
errors.add(:pool, "must be enabled") unless pool and pool.enabled?
+ errors.add(:pool, "has all associated providers disabled") if pool and
pool.pool_family.all_providers_disabled?
end
def object_list
diff --git a/src/app/models/instance.rb b/src/app/models/instance.rb
index 4b282e9..ae20e8e 100644
--- a/src/app/models/instance.rb
+++ b/src/app/models/instance.rb
@@ -163,16 +163,12 @@ class Instance < ActiveRecord::Base
return_val
end
- def enabled?
- pool and pool.enabled? and (provider_account.nil? or provider_account.enabled?)
- end
-
def pool_and_account_enabled_validation
- return if enabled?
+ errors.add(:pool, "must be enabled") unless pool and pool.enabled?
+ errors.add(:pool, "has all associated providers disabled") if pool and
pool.pool_family.all_providers_disabled?
- errors.add(:pool, 'must be enabled') unless pool and pool.enabled?
- unless provider_account.nil? or provider_account.enabled?
- errors.add(:provider_account, 'must be enabled')
+ if provider_account and not provider_account.provider.enabled?
+ errors.add(:provider_account, 'provider must be enabled')
end
end
diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb
index 5136e78..ae4e8ce 100644
--- a/src/app/models/pool.rb
+++ b/src/app/models/pool.rb
@@ -77,10 +77,6 @@ class Pool < ActiveRecord::Base
instances.all? {|i| i.destroyable? }
end
- def enabled?
- self.enabled and pool_family and pool_family.enabled?
- end
-
# TODO: Implement Alerts and Updates
def statistics
# TODO - Need to set up cache invalidation before this is safe
diff --git a/src/app/models/pool_family.rb b/src/app/models/pool_family.rb
index 26d5efb..4cad050 100644
--- a/src/app/models/pool_family.rb
+++ b/src/app/models/pool_family.rb
@@ -65,7 +65,7 @@ class PoolFamily < ActiveRecord::Base
self != PoolFamily.default
end
- def enabled?
- provider_accounts.blank? or provider_accounts.any? {|acc| acc.enabled?}
+ def all_providers_disabled?
+ !provider_accounts.empty? and !provider_accounts.any? {|acc| acc.provider.enabled?}
end
end
diff --git a/src/app/models/provider_account.rb b/src/app/models/provider_account.rb
index 38083c2..4e3242e 100644
--- a/src/app/models/provider_account.rb
+++ b/src/app/models/provider_account.rb
@@ -125,10 +125,6 @@ class ProviderAccount < ActiveRecord::Base
instances.empty? || instances.all? { |i| i.destroyable? }
end
- def enabled?
- provider and provider.enabled?
- end
-
def connect
begin
opts = {:username => credentials_hash['username'],
diff --git a/src/spec/models/instance_spec.rb b/src/spec/models/instance_spec.rb
index 4ffdae0..1e7c3b4 100644
--- a/src/spec/models/instance_spec.rb
+++ b/src/spec/models/instance_spec.rb
@@ -232,14 +232,24 @@ describe Instance do
it "should not be launchable if its provider is disabled" do
instance = FactoryGirl.build(:instance_with_disabled_provider)
- instance.should_not be_enabled
instance.should_not be_valid
+ instance.errors[:provider_account].should_not be_empty
+ instance.errors[:provider_account].first.should == "provider must be
enabled"
end
it "should not be launchable if its pool is disabled" do
instance = FactoryGirl.build(:instance_in_disabled_pool)
- instance.should_not be_enabled
instance.should_not be_valid
+ instance.errors[:pool].should_not be_empty
+ instance.errors[:pool].first.should == "must be enabled"
+ end
+
+ it "should not be launchable if its pool's providers are all disabled"
do
+ instance = FactoryGirl.build(:instance)
+ instance.pool.pool_family.provider_accounts <<
FactoryGirl.create(:disabled_provider_account)
+ instance.should_not be_valid
+ instance.errors[:pool].should_not be_empty
+ instance.errors[:pool].first.should == "has all associated providers
disabled"
end
context "When more instances of deployment are starting" do
--
1.7.6
_______________________________________________
aeolus-devel mailing list
aeolus-devel(a)lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/aeolus-devel
The error messages should probably be pushed into the translations file with this patch.