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 0e1dd14b366..b8e8cfaff65 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -1641,7 +1641,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()); }