From d9287f0e430e9fb02b098884e69826edb18ee3a5 Mon Sep 17 00:00:00 2001 From: Edison Su Date: Thu, 19 Jan 2012 17:14:00 -0800 Subject: [PATCH] tell agent to reconnect to mgt server, if cancelmaintainance cmd is called --- agent/src/com/cloud/agent/Agent.java | 9 +++++++-- api/src/com/cloud/agent/api/MaintainCommand.java | 11 ++++++++++- .../src/com/cloud/agent/manager/AgentManagerImpl.java | 6 ++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/agent/src/com/cloud/agent/Agent.java b/agent/src/com/cloud/agent/Agent.java index 5a5724ccf0c..843eb5734f5 100755 --- a/agent/src/com/cloud/agent/Agent.java +++ b/agent/src/com/cloud/agent/Agent.java @@ -483,8 +483,13 @@ public class Agent implements HandlerFactory, IAgentControl { answer = new Answer(cmd, true, null); } else if (cmd instanceof MaintainCommand) { s_logger.debug("Received maintainCommand" ); - cancelTasks(); - _reconnectAllowed = false; + MaintainCommand maintainCmd = (MaintainCommand)cmd; + if (maintainCmd.getMaintain()) { + cancelTasks(); + _reconnectAllowed = false; + } else { + _reconnectAllowed = true; + } answer = new MaintainAnswer((MaintainCommand)cmd); } else if (cmd instanceof ReadyCommand) { ReadyCommand ready = (ReadyCommand)cmd; diff --git a/api/src/com/cloud/agent/api/MaintainCommand.java b/api/src/com/cloud/agent/api/MaintainCommand.java index 040309adaa7..e3281bc8f6f 100644 --- a/api/src/com/cloud/agent/api/MaintainCommand.java +++ b/api/src/com/cloud/agent/api/MaintainCommand.java @@ -18,8 +18,17 @@ package com.cloud.agent.api; public class MaintainCommand extends Command { - + private boolean _maintain; public MaintainCommand() { + _maintain = true; + } + + public void setMaintain(boolean maintain) { + _maintain = maintain; + } + + public boolean getMaintain() { + return _maintain; } @Override diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index 411a5ecf240..537cdc7d77b 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -1570,6 +1570,12 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, Manager { return false; } } + + if (host.getHypervisorType() == HypervisorType.KVM) { + MaintainCommand cmd = new MaintainCommand(); + cmd.setMaintain(false); + easySend(hostId, cmd); + } disconnect(hostId, Event.ResetRequested, false); return true; }