[PATCH conductor] BZ 842313 - fixed setting of deployment state when instance launch fails
Jirka Tomasek
jtomasek at redhat.com
Mon Sep 3 12:44:45 UTC 2012
On 08/29/2012 10:06 AM, jprovazn at redhat.com wrote:
> 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
>
ACK. Works as expected.
Jirka
More information about the aeolus-devel
mailing list