From 04528c821b209b75133e1680437e78198b71d557 Mon Sep 17 00:00:00 2001 From: Kelven Yang Date: Mon, 1 Aug 2011 18:32:12 -0700 Subject: [PATCH] bug 10929: allow only OperationFailedToError event to trigger transition to Error state. --- api/src/com/cloud/vm/VirtualMachine.java | 8 +++++++- server/src/com/cloud/vm/UserVmManagerImpl.java | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/api/src/com/cloud/vm/VirtualMachine.java b/api/src/com/cloud/vm/VirtualMachine.java index 6021846c376..5cad493161f 100755 --- a/api/src/com/cloud/vm/VirtualMachine.java +++ b/api/src/com/cloud/vm/VirtualMachine.java @@ -69,7 +69,12 @@ public interface VirtualMachine extends RunningOn, ControlledEntity, StateObject s_fsm.addTransition(State.Stopped, VirtualMachine.Event.DestroyRequested, State.Destroyed); s_fsm.addTransition(State.Stopped, VirtualMachine.Event.StopRequested, State.Stopped); s_fsm.addTransition(State.Stopped, VirtualMachine.Event.AgentReportStopped, State.Stopped); - s_fsm.addTransition(State.Stopped, VirtualMachine.Event.OperationFailed, State.Error); + + // please pay attention about state transition to Error state, there should be only one case (failed in VM creation process) + // that can have such transition + s_fsm.addTransition(State.Stopped, VirtualMachine.Event.OperationFailedToError, State.Error); + + s_fsm.addTransition(State.Stopped, VirtualMachine.Event.OperationFailed, State.Stopped); s_fsm.addTransition(State.Stopped, VirtualMachine.Event.ExpungeOperation, State.Expunging); s_fsm.addTransition(State.Stopped, VirtualMachine.Event.AgentReportShutdowned, State.Stopped); s_fsm.addTransition(State.Stopped, VirtualMachine.Event.AgentReportMigrated, State.Stopped); @@ -156,6 +161,7 @@ public interface VirtualMachine extends RunningOn, ControlledEntity, StateObject ExpungeOperation, OperationSucceeded, OperationFailed, + OperationFailedToError, OperationRetry, AgentReportShutdowned, AgentReportMigrated diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 46ddb1daa40..ce5378e4f8e 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -1646,7 +1646,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager if (vm != null) { if (vm.getState().equals(State.Stopped)) { try { - _itMgr.stateTransitTo(vm, VirtualMachine.Event.OperationFailed, null); + _itMgr.stateTransitTo(vm, VirtualMachine.Event.OperationFailedToError, null); } catch (NoTransitionException e1) { s_logger.warn(e1.getMessage()); }