On 05/07/2012 11:56 AM, jprovazn(a)redhat.com wrote:
From: Jan Provaznik<jprovazn(a)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
ACK, migration fixed problems with existing deployments
Jirka