[PATCH] BZ 786344 added pre-launch validation for multi-instance deployments

Tzu-Mainn Chen tzumainn at redhat.com
Thu Feb 2 16:42:03 UTC 2012


---
 src/app/models/deployment.rb |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb
index 8f6fac1..89a5ff5 100644
--- a/src/app/models/deployment.rb
+++ b/src/app/models/deployment.rb
@@ -333,8 +333,9 @@ class Deployment < ActiveRecord::Base
   # if a match is found
   def check_assemblies_matches(user)
     errs = []
-    deployable_xml.assemblies.each do |assembly|
-      begin
+    instances = []
+    begin
+      deployable_xml.assemblies.each do |assembly|
         hw_profile = permissioned_frontend_hwprofile(user, assembly.hwp)
         raise "Hardware Profile #{assembly.hwp} not found." unless hw_profile
         instance = Instance.new(
@@ -349,13 +350,21 @@ class Deployment < ActiveRecord::Base
           :owner => user,
           :hardware_profile => hw_profile
         )
+        instances << instance
         possibles, errors = instance.matches
         if possibles.empty? and not errors.empty?
           raise Aeolus::Conductor::MultiError::UnlaunchableAssembly.new(I18n.t('deployments.flash.error.not_launched'), errors)
         end
-      rescue
-        errs = $!.message
       end
+
+      deployment_errors = []
+      deployment_errors << I18n.t('instances.errors.pool_quota_reached') if not pool.quota.can_start?(instances)
+      deployment_errors << I18n.t('instances.errors.pool_family_quota_reached') if not pool.pool_family.quota.can_start?(instances)
+      if not deployment_errors.empty?
+        raise Aeolus::Conductor::MultiError::UnlaunchableAssembly.new(I18n.t('deployments.flash.error.not_launched'), deployment_errors)
+      end
+    rescue
+      errs = $!.message
     end
     errs
   end
-- 
1.7.6.5




More information about the aeolus-devel mailing list