From: martyntaylor <[email protected]>
---
src/app/models/quota.rb | 8 ++++----
src/spec/factories/quota.rb | 5 +++++
src/spec/models/quota_spec.rb | 34 ++++++++++++++++++++++++----------
3 files changed, 33 insertions(+), 14 deletions(-)
diff --git a/src/app/models/quota.rb b/src/app/models/quota.rb
index 7b1b3f9..3bb05b8 100644
--- a/src/app/models/quota.rb
+++ b/src/app/models/quota.rb
@@ -35,8 +35,8 @@ class Quota < ActiveRecord::Base
RESOURCE_NAMES = [ RESOURCE_RUNNING_INSTANCES, RESOURCE_TOTAL_INSTANCES ]
- def self.can_create_instance?(instance)
- [instance.owner, instance.pool, instance.cloud_account].each do |parent|
+ def self.can_create_instance?(instance, cloud_account)
+ [instance.owner, instance.pool, cloud_account].each do |parent|
quota = Quota.find(parent.quota_id)
potential_total_instances = quota.total_instances + 1
if !Quota.no_limit(quota.maximum_total_instances) &&
(quota.maximum_total_instances < potential_total_instances)
@@ -46,8 +46,8 @@ class Quota < ActiveRecord::Base
return true
end
- def self.can_start_instance?(instance)
- [instance.owner, instance.pool, instance.cloud_account].each do |parent|
+ def self.can_start_instance?(instance, cloud_account)
+ [instance.owner, instance.pool, cloud_account].each do |parent|
quota = Quota.find(parent.quota_id)
potential_running_instances = quota.running_instances + 1
if !Quota.no_limit(quota.maximum_running_instances) &&
quota.maximum_running_instances < potential_running_instances
diff --git a/src/spec/factories/quota.rb b/src/spec/factories/quota.rb
index 92c832f..b4da2bf 100644
--- a/src/spec/factories/quota.rb
+++ b/src/spec/factories/quota.rb
@@ -6,4 +6,9 @@ end
Factory.define :full_quota, :parent => :quota do |f|
f.running_instances 10
f.total_instances 15
+end
+
+Factory.define :unlimited_quota, :parent => :quota do |f|
+ f.maximum_running_instances nil
+ f.maximum_total_instances nil
end
\ No newline at end of file
diff --git a/src/spec/models/quota_spec.rb b/src/spec/models/quota_spec.rb
index 233bb84..9620e83 100644
--- a/src/spec/models/quota_spec.rb
+++ b/src/spec/models/quota_spec.rb
@@ -17,8 +17,22 @@ describe Quota do
end
it "should return true when asking if an instance can be created/started
when there is sufficient quota space" do
- Quota.can_create_instance?(@instance).should == true
- Quota.can_start_instance?(@instance).should == true
+ Quota.can_create_instance?(@instance, @cloud_account).should == true
+ Quota.can_start_instance?(@instance, @cloud_account).should == true
+ end
+
+ it "should return true when asking if an instance can be created/started
when using unlimited Quotas" do
+ @user.quota = Factory :unlimited_quota
+ @user.save!
+
+ @pool.quota = Factory :unlimited_quota
+ @pool.save!
+
+ @cloud_account.quota = Factory :unlimited_quota
+ @cloud_account.save!
+
+ Quota.can_create_instance?(@instance, @cloud_account).should == true
+ Quota.can_start_instance?(@instance, @cloud_account).should == true
end
it "should return false when asking if an instance can be created/started
when the user quota is reached" do
@@ -26,8 +40,8 @@ describe Quota do
@user_quota.running_instances = @user_quota.maximum_running_instances
@user_quota.save!
- Quota.can_create_instance?(@instance).should == false
- Quota.can_start_instance?(@instance).should == false
+ Quota.can_create_instance?(@instance, @cloud_account).should == false
+ Quota.can_start_instance?(@instance, @cloud_account).should == false
end
it "should return false when asking if an instance can be created/started
when the pool quota is reached" do
@@ -35,8 +49,8 @@ describe Quota do
@pool_quota.running_instances = @pool_quota.maximum_running_instances
@pool_quota.save!
- Quota.can_create_instance?(@instance).should == false
- Quota.can_start_instance?(@instance).should == false
+ Quota.can_create_instance?(@instance, @cloud_account).should == false
+ Quota.can_start_instance?(@instance, @cloud_account).should == false
end
it "should return false when asking if an instance can be created/started
when the cloud account quota is reached" do
@@ -44,8 +58,8 @@ describe Quota do
@cloud_account_quota.running_instances =
@cloud_account_quota.maximum_running_instances
@cloud_account_quota.save!
- Quota.can_create_instance?(@instance).should == false
- Quota.can_start_instance?(@instance).should == false
+ Quota.can_create_instance?(@instance, @cloud_account).should == false
+ Quota.can_start_instance?(@instance, @cloud_account).should == false
end
it "should return false when asking if an instance can be created/started
when the all quotas are reached" do
@@ -61,8 +75,8 @@ describe Quota do
@cloud_account_quota.running_instances =
@cloud_account_quota.maximum_running_instances
@cloud_account_quota.save!
- Quota.can_create_instance?(@instance).should == false
- Quota.can_start_instance?(@instance).should == false
+ Quota.can_create_instance?(@instance, @cloud_account).should == false
+ Quota.can_start_instance?(@instance, @cloud_account).should == false
end
end
\ No newline at end of file
--
1.7.2.2
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel