[PATCH] RM#3877 Implement deployment destroy and multidestroy actions in background

Tomáš Hrčka thrcka at redhat.com
Thu Sep 27 07:40:48 UTC 2012


---
 src/app/controllers/deployments_controller.rb | 28 +++++++++++++++------------
 src/app/models/deployment.rb                  |  5 -----
 2 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/src/app/controllers/deployments_controller.rb b/src/app/controllers/deployments_controller.rb
index d8e24fa..0f53579 100644
--- a/src/app/controllers/deployments_controller.rb
+++ b/src/app/controllers/deployments_controller.rb
@@ -278,13 +278,16 @@ class DeploymentsController < ApplicationController
     errors = []
     begin
       require_privilege(Privilege::MODIFY, deployment)
-      deployment.stop_instances_and_destroy!
-    rescue Aeolus::Conductor::Base::NotStoppableDeployment
-      cant_stop = true
-      errors = deployment.not_stoppable_or_destroyable_instances.map {|i|
-                 t('deployments.errors.instance_state',
-                   :name => i.name,
-                   :state => i.state)}
+      if deployment.not_stoppable_or_destroyable_instances.empty?
+        deployment.delay.stop_instances_and_destroy!
+      else
+        cant_stop = true
+        errors = deployment.not_stoppable_or_destroyable_instances.map {|i|
+          t('deployments.errors.instance_state',
+            :name => i.name,
+            :state => i.state)}
+
+      end
     rescue
       errors = t('deployments.flash.error.not_deleted',
                  :name => deployment.name,
@@ -322,15 +325,16 @@ class DeploymentsController < ApplicationController
 
     ids = Array(params[:deployments_selected])
     Deployment.find(ids).each do |deployment|
-      begin
-        require_privilege(Privilege::MODIFY, deployment)
-        deployment.stop_instances_and_destroy!
+      require_privilege(Privilege::MODIFY, deployment)
+      if deployment.not_stoppable_or_destroyable_instances.empty?
+        deployment.delay.stop_instances_and_destroy!
         destroyed << deployment.name
-      rescue
+      else
         errors << t('deployments.flash.error.not_deleted',
                     :name => deployment.name,
-                    :error => $!.message)
+                    :error => t("deployments.errors.all_stopped"))
       end
+
     end
     respond_to do |format|
       format.html do
diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb
index e612ab1..552bcda 100644
--- a/src/app/models/deployment.rb
+++ b/src/app/models/deployment.rb
@@ -176,11 +176,6 @@ class Deployment < ActiveRecord::Base
   end
 
   def stop_instances_and_destroy!
-    unless not_stoppable_or_destroyable_instances.empty?
-      raise Aeolus::Conductor::Base::NotStoppableDeployment,
-            I18n.t("deployments.errors.all_stopped")
-    end
-
     if destroyable?
       destroy
     else
-- 
1.7.11.4




More information about the aeolus-devel mailing list