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

Reply via email to