From: martyntaylor <[email protected]>
---
src/app/util/taskomatic.rb | 38 ++++++++++++++++++++++++++++++++++++--
1 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/src/app/util/taskomatic.rb b/src/app/util/taskomatic.rb
index 74e069c..f51c37b 100644
--- a/src/app/util/taskomatic.rb
+++ b/src/app/util/taskomatic.rb
@@ -45,6 +45,30 @@ class Taskomatic
def instance_create
+ # Check that creating this instance is permitted by Quota
+ pool = Pool.find(@task.instance.pool_id)
+ cloud_account = CloudAccount.find(@task.instance.cloud_account_id)
+
+ [pool, cloud_account].each do |parent|
+ if Quota.exists?(parent.quota_id)
+ if !Quota.find(parent.quota_id).can_create_instance?(@task.instance)
+ @task.state = Task::STATE_FAILED
+ @task.instance.state = Instance::STATE_CREATE_FAILED
+
+ if parent.class == Pool
+ @task.failure_code = Task::FAILURE_OVER_POOL_QUOTA
+ elsif parent.class == CloudAccount
+ @task.failure_code = Task::FAILURE_OVER_CLOUD_ACCOUNT_QUOTA
+ end
+
+ @task.save!
+ @task.instance.save!
+
+ return nil
+ end
+ end
+ end
+
begin
client = @task.instance.cloud_account.connect
realm = @task.instance.realm.external_key rescue nil
@@ -112,7 +136,16 @@ class Taskomatic
end
def instance_start
- do_action(:start!)
+ pool = Pool.find(@task.instance.pool_id)
+ if Quota.exists?(pool.quota_id)
+ if !Quota.find(pool.quota_id).can_create_instance?(@task.instance)
+ do_action(:start!)
+ return nil
+ end
+ end
+
+ @task.state = Task::STATE_FAILED
+ @task.failure_code = Task::FAILURE_OVER_POOL_QUOTA
end
def instance_stop
@@ -163,4 +196,5 @@ class Taskomatic
end
end
end
-end
\ No newline at end of file
+
+end
--
1.6.6.1
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel