diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java index d6069a4ef98..2a86ffd7439 100755 --- a/server/src/com/cloud/resource/ResourceManagerImpl.java +++ b/server/src/com/cloud/resource/ResourceManagerImpl.java @@ -872,6 +872,15 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager, // Delete the associated entries in host ref table _storagePoolHostDao.deletePrimaryRecordsForHost(hostId); + // Make sure any VMs that were marked as being on this host are cleaned up + List vms = _vmDao.listByHostId(hostId); + for (VMInstanceVO vm : vms) { + // this is how VirtualMachineManagerImpl does it when it syncs VM states + vm.setState(State.Stopped); + vm.setHostId(null); + _vmDao.persist(vm); + } + // For pool ids you got, delete local storage host entries in pool table // where for (StoragePoolHostVO pool : pools) {