From bb895a7b751853ff23b04c6484057d7783e27b0f Mon Sep 17 00:00:00 2001 From: alena Date: Fri, 25 Mar 2011 17:29:54 -0700 Subject: [PATCH] bug 8103: don't allow to remove host if it has Running/Stopping/Starting vms status 8103: resolved fixed --- api/src/com/cloud/host/Status.java | 1 - server/src/com/cloud/agent/manager/AgentManagerImpl.java | 8 ++++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/api/src/com/cloud/host/Status.java b/api/src/com/cloud/host/Status.java index c9a4d416b72..40cd7051d17 100644 --- a/api/src/com/cloud/host/Status.java +++ b/api/src/com/cloud/host/Status.java @@ -143,7 +143,6 @@ public enum Status { s_fsm.addTransition(Status.PrepareForMaintenance, Event.AgentConnected, Status.PrepareForMaintenance); s_fsm.addTransition(Status.PrepareForMaintenance, Event.HostDown, Status.PrepareForMaintenance); s_fsm.addTransition(Status.PrepareForMaintenance, Event.UnableToMigrate, Status.ErrorInMaintenance); - s_fsm.addTransition(Status.PrepareForMaintenance, Event.Remove, Status.Removed); s_fsm.addTransition(Status.PrepareForMaintenance, Event.Ping, Status.PrepareForMaintenance); s_fsm.addTransition(Status.PrepareForMaintenance, Event.ManagementServerDown, Status.PrepareForMaintenance); s_fsm.addTransition(Status.ErrorInMaintenance, Event.MaintenanceRequested, Status.PrepareForMaintenance); diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java index b17cf37a7e5..5ad49b5542a 100755 --- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java +++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java @@ -1144,6 +1144,14 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, @Override @DB public boolean deleteHost(long hostId) { + + //Check if there are vms running/starting/stopping on this host + List vms = _vmDao.listByHostId(hostId); + + if (!vms.isEmpty()) { + throw new CloudRuntimeException("Unable to delete the host as there are vms in " + vms.get(0).getState() + " state using this host"); + } + Transaction txn = Transaction.currentTxn(); try { HostVO host = _hostDao.findById(hostId);