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
This commit is contained in:
frank 2011-12-09 10:53:39 -08:00
parent b8b2f786dd
commit 10593528ca
2 changed files with 14 additions and 22 deletions

View File

@ -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);
}
}

View File

@ -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;
}