[PATCH conductor] BZ 842313 - fixed setting of deployment state when instance launch fails
jprovazn at redhat.com
jprovazn at redhat.com
Wed Aug 29 08:06:37 UTC 2012
From: Jan Provaznik <jprovazn at redhat.com>
If partial launch is enabled and all instances fails, the deployment
is marked as failed instead of running. Also if there is a failed instance
but rest of instances are running, the deployment is marked as incomplete.
---
src/app/models/deployment.rb | 4 +++-
src/spec/models/deployment_spec.rb | 16 ++++++++++++++++
2 files changed, 19 insertions(+), 1 deletion(-)
diff --git a/src/app/models/deployment.rb b/src/app/models/deployment.rb
index 6e5e5d7..bbc3065 100644
--- a/src/app/models/deployment.rb
+++ b/src/app/models/deployment.rb
@@ -651,8 +651,10 @@ class Deployment < ActiveRecord::Base
def state_transition_from_pending(instance)
if instances.all? {|i| i.state == Instance::STATE_RUNNING}
self.state = STATE_RUNNING
+ elsif partial_launch and instances.all? {|i| i.failed?}
+ self.state = STATE_FAILED
elsif partial_launch and instances.all? {|i| i.failed_or_running?}
- self.state = STATE_RUNNING
+ self.state = STATE_INCOMPLETE
elsif !partial_launch and Instance::FAILED_STATES.include?(instance.state)
# TODO: now this is done in instance's after_update callback - as part
# of instance save transaction - this might be done on background by
diff --git a/src/spec/models/deployment_spec.rb b/src/spec/models/deployment_spec.rb
index aa78f50..5178a83 100644
--- a/src/spec/models/deployment_spec.rb
+++ b/src/spec/models/deployment_spec.rb
@@ -456,6 +456,22 @@ describe Deployment do
@deployment.reload
@deployment.state.should == Deployment::STATE_PENDING
end
+
+ it "should set incomplete status if all instances are failed or running" do
+ @inst1.state = Instance::STATE_RUNNING
+ @inst1.save!
+ @inst2.state = Instance::STATE_CREATE_FAILED
+ @inst2.save!
+ @deployment.reload.state.should == Deployment::STATE_INCOMPLETE
+ end
+
+ it "should set failed status if all instances failed" do
+ @inst1.state = Instance::STATE_CREATE_FAILED
+ @inst1.save!
+ @inst2.state = Instance::STATE_CREATE_FAILED
+ @inst2.save!
+ @deployment.reload.state.should == Deployment::STATE_FAILED
+ end
end
end
--
1.7.11.4
More information about the aeolus-devel
mailing list