From 835ca8eea86044cf66ad1d02e473257546664359 Mon Sep 17 00:00:00 2001 From: Nitin Mehta Date: Mon, 4 Aug 2014 16:40:28 -0700 Subject: [PATCH] CLOUDSTACK-7018: Restore VM - missing destroyed usage event for the destroyed root volume. Also removed the resource count logic since we destroy the old root volume and create a new one. --- server/src/com/cloud/vm/UserVmManagerImpl.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index a9f8efdbf63..05cc18385bd 100755 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -4732,9 +4732,8 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir } else { newVol = volumeMgr.allocateDuplicateVolume(root, null); } - // 1. Save usage event and update resource count for user vm volumes - _resourceLimitMgr.incrementResourceCount(vm.getAccountId(), ResourceType.volume); - //2. Create Usage event for the newly created volume + + // Create Usage event for the newly created volume UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VOLUME_CREATE, newVol.getAccountId(), newVol.getDataCenterId(), newVol.getId(), newVol.getName(), newVol.getDiskOfferingId(), templateId, newVol.getSize()); _usageEventDao.persist(usageEvent); @@ -4742,11 +4741,11 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir _volsDao.attachVolume(newVol.getId(), vmId, newVol.getDeviceId()); - /* Detach and destory the old root volume */ - + // Detach, destroy and create the usage event for the old root volume. _volsDao.detachVolume(root.getId()); - volumeMgr.destroyVolume(root); + UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_DELETE, root.getAccountId(), root.getDataCenterId(), root.getId(), root.getName(), + Volume.class.getName(), root.getUuid(), root.isDisplayVolume()); // For VMware hypervisor since the old root volume is replaced by the new root volume, force expunge old root volume if it has been created in storage if (vm.getHypervisorType() == HypervisorType.VMware) {