From 10593528ca72737e481dd60c9c88471b90ca8c25 Mon Sep 17 00:00:00 2001 From: frank Date: Fri, 9 Dec 2011 10:53:39 -0800 Subject: [PATCH] Bug 12294 - fail to bring the host( resource_state) from un-managed to managed from CS remove unmanaged event from resource state machine status 12294: resolved fixed --- api/src/com/cloud/resource/ResourceState.java | 16 +++++++-------- .../cloud/resource/ResourceManagerImpl.java | 20 +++++++------------ 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/api/src/com/cloud/resource/ResourceState.java b/api/src/com/cloud/resource/ResourceState.java index f8d0ff95c7f..ecdcfa069c5 100755 --- a/api/src/com/cloud/resource/ResourceState.java +++ b/api/src/com/cloud/resource/ResourceState.java @@ -21,11 +21,16 @@ public enum ResourceState { AdminAskMaintenace("Admin asks to enter maintenance"), AdminCancelMaintenance("Admin asks to cancel maintenance"), InternalEnterMaintenance("Resource enters maintenance"), - Unmanaged("Admin turns a host into umanaged state"), UpdatePassword("Admin updates password of host"), UnableToMigrate("Management server migrates VM failed"), Error("An internal error happened"), - DeleteHost("Admin delete a host"); + DeleteHost("Admin delete a host"), + + /* + * Below events don't cause resource state to change, they are merely + * for ClusterManager propagating event from one mgmt server to another + */ + Unmanaged("Umanage a cluster"); private final String comment; private Event(String comment) { @@ -62,32 +67,25 @@ public enum ResourceState { static { s_fsm.addTransition(null, Event.InternalCreated, ResourceState.Enabled); s_fsm.addTransition(ResourceState.Creating, Event.InternalCreated, ResourceState.Enabled); - s_fsm.addTransition(ResourceState.Creating, Event.Unmanaged, ResourceState.Creating); s_fsm.addTransition(ResourceState.Creating, Event.Error, ResourceState.Error); s_fsm.addTransition(ResourceState.Enabled, Event.Enable, ResourceState.Enabled); s_fsm.addTransition(ResourceState.Enabled, Event.InternalCreated, ResourceState.Enabled); s_fsm.addTransition(ResourceState.Enabled, Event.Disable, ResourceState.Disabled); - s_fsm.addTransition(ResourceState.Enabled, Event.Unmanaged, ResourceState.Enabled); s_fsm.addTransition(ResourceState.Enabled, Event.AdminAskMaintenace, ResourceState.PrepareForMaintenance); s_fsm.addTransition(ResourceState.Disabled, Event.Enable, ResourceState.Enabled); s_fsm.addTransition(ResourceState.Disabled, Event.Disable, ResourceState.Disabled); s_fsm.addTransition(ResourceState.Disabled, Event.InternalCreated, ResourceState.Disabled); - s_fsm.addTransition(ResourceState.Disabled, Event.Unmanaged, ResourceState.Disabled); s_fsm.addTransition(ResourceState.PrepareForMaintenance, Event.InternalEnterMaintenance, ResourceState.Maintenance); s_fsm.addTransition(ResourceState.PrepareForMaintenance, Event.AdminCancelMaintenance, ResourceState.Enabled); - s_fsm.addTransition(ResourceState.PrepareForMaintenance, Event.Unmanaged, ResourceState.PrepareForMaintenance); s_fsm.addTransition(ResourceState.PrepareForMaintenance, Event.UnableToMigrate, ResourceState.ErrorInMaintenance); s_fsm.addTransition(ResourceState.PrepareForMaintenance, Event.InternalCreated, ResourceState.PrepareForMaintenance); s_fsm.addTransition(ResourceState.Maintenance, Event.AdminCancelMaintenance, ResourceState.Enabled); s_fsm.addTransition(ResourceState.Maintenance, Event.InternalCreated, ResourceState.Maintenance); s_fsm.addTransition(ResourceState.Maintenance, Event.DeleteHost, ResourceState.Disabled); - s_fsm.addTransition(ResourceState.Maintenance, Event.Unmanaged, ResourceState.Maintenance); - s_fsm.addTransition(ResourceState.ErrorInMaintenance, Event.Unmanaged, ResourceState.ErrorInMaintenance); s_fsm.addTransition(ResourceState.ErrorInMaintenance, Event.InternalCreated, ResourceState.ErrorInMaintenance); s_fsm.addTransition(ResourceState.ErrorInMaintenance, Event.Disable, ResourceState.Disabled); s_fsm.addTransition(ResourceState.ErrorInMaintenance, Event.DeleteHost, ResourceState.Disabled); s_fsm.addTransition(ResourceState.ErrorInMaintenance, Event.InternalEnterMaintenance, ResourceState.Maintenance); s_fsm.addTransition(ResourceState.Error, Event.InternalCreated, ResourceState.Error); - s_fsm.addTransition(ResourceState.Error, Event.Unmanaged, ResourceState.Error); } } diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java index 09b71e70961..82e7adafea7 100755 --- a/server/src/com/cloud/resource/ResourceManagerImpl.java +++ b/server/src/com/cloud/resource/ResourceManagerImpl.java @@ -1766,20 +1766,14 @@ public class ResourceManagerImpl implements ResourceManager, ResourceService, Ma } private boolean doUmanageHost(long hostId) { - try { - HostVO host = _hostDao.findById(hostId); - if (host == null) { - s_logger.debug("Cannot find host " + hostId + ", assuming it has been deleted, skip umanage"); - return true; - } - - _agentMgr.disconnectWithoutInvestigation(hostId, Event.ShutdownRequested); - resourceStateTransitTo(host, ResourceState.Event.Unmanaged, _nodeId); + HostVO host = _hostDao.findById(hostId); + if (host == null) { + s_logger.debug("Cannot find host " + hostId + ", assuming it has been deleted, skip umanage"); return true; - } catch (NoTransitionException e) { - s_logger.debug("Cannot transmit host " + hostId + "to Enabled state", e); - return false; - } + } + + _agentMgr.disconnectWithoutInvestigation(hostId, Event.ShutdownRequested); + return true; }