[email protected] wrote: > 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) > pool = @task.instance.pool > + cloud_account = CloudAccount.find(@task.instance.cloud_account_id) > + > cloud_account = @task.instance.cloud_account > + [pool, cloud_account].each do |parent| >
> + if Quota.exists?(parent.quota_id) > quota = parent.quota if parent.quota > > + 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 > Cloud account quota needs to be taken into account earlier than this as well -- in the scheduling bit, but as a last resort it should be checked here too, so the above should be fine. > + 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 > _______________________________________________ deltacloud-devel mailing list [email protected] https://fedorahosted.org/mailman/listinfo/deltacloud-devel
