[PATCH conductor] Fixed setting of deployment state for existing deployments

jprovazn at redhat.com jprovazn at redhat.com
Mon May 7 09:56:02 UTC 2012


From: Jan Provaznik <jprovazn at redhat.com>

---
 src/app/models/deployment.rb                       |    2 +-
 ...081132_update_state_for_existing_deployments.rb |   27 ++++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletions(-)
 create mode 100644 src/db/migrate/20120507081132_update_state_for_existing_deployments.rb

diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb
index d7956ab..d15cc15 100644
--- a/src/app/models/deployment.rb
+++ b/src/app/models/deployment.rb
@@ -427,7 +427,7 @@ class Deployment < ActiveRecord::Base
     json = super(options).merge({
       :deployable_xml_name => deployable_xml.name,
       :status => state,
-      :translated_status => I18n.t("deployments.status.#{state}"),
+      :translated_state => I18n.t("deployments.status.#{state}"),
       :status_description => I18n.t("deployments.status_description.#{state}"),
       :instances_count => instances.count,
       :failed_instances_count => failed_instances.count,
diff --git a/src/db/migrate/20120507081132_update_state_for_existing_deployments.rb b/src/db/migrate/20120507081132_update_state_for_existing_deployments.rb
new file mode 100644
index 0000000..be472a4
--- /dev/null
+++ b/src/db/migrate/20120507081132_update_state_for_existing_deployments.rb
@@ -0,0 +1,27 @@
+class UpdateStateForExistingDeployments < ActiveRecord::Migration
+  def self.up
+    Deployment.where(:state => nil).each do |d|
+      d.update_attribute(:state, get_deployment_state(d))
+    end
+  end
+
+  def self.down
+  end
+
+  def self.get_deployment_state(deployment)
+    if deployment.instances.all? {|i| i.inactive?}
+      Deployment::STATE_STOPPED
+    elsif deployment.all_instances_running?
+      Deployment::STATE_RUNNING
+    elsif deployment.instances.all? { |i| [Instance::STATE_NEW,
+          Instance::STATE_PENDING, Instance::STATE_RUNNING].include?(i.state) }
+      Deployment::STATE_PENDING
+    elsif deployment.instances.all? { |i| [Instance::STATE_RUNNING,
+          Instance::STATE_SHUTTING_DOWN,
+          Instance::STATE_STOPPED].include?(i.state) }
+      Deployment::STATE_SHUTTING_DOWN
+    else
+      Deployemnt::STATE_INCOMPLETE
+    end
+  end
+end
-- 
1.7.7.6




More information about the aeolus-devel mailing list