CLOUDSTACK-7870: When Vm deployments fail and end in error state volume count 
should be decremented

(cherry picked from commit a8b89bea4f37a54267694b9a49be6b5bec91f0b0)
Signed-off-by: Rohit Yadav <rohit.ya...@shapeblue.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/4ea0dcda
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/4ea0dcda
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/4ea0dcda

Branch: refs/heads/4.5
Commit: 4ea0dcda9bca022fb26f89381f3a84e42e2a8260
Parents: 54d08a8
Author: Nitin Mehta <nitin.me...@citrix.com>
Authored: Sun Nov 9 23:01:28 2014 -0800
Committer: Rohit Yadav <rohit.ya...@shapeblue.com>
Committed: Fri Feb 6 16:24:06 2015 +0530

----------------------------------------------------------------------
 .../cloudstack/engine/orchestration/VolumeOrchestrator.java     | 1 +
 server/src/com/cloud/vm/UserVmManagerImpl.java                  | 5 ++++-
 2 files changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4ea0dcda/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
----------------------------------------------------------------------
diff --git 
a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
 
b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
index 4b9d7ef..901e8a1 100644
--- 
a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
+++ 
b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
@@ -1464,6 +1464,7 @@ public class VolumeOrchestrator extends ManagerBase 
implements VolumeOrchestrati
             } else {
                 volService.destroyVolume(volume.getId());
             }
+            // FIXME - All this is boiler plate code and should be done as 
part of state transition. This shouldn't be part of orchestrator.
             // publish usage event for the volume
             UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_DELETE, 
volume.getAccountId(), volume.getDataCenterId(), volume.getId(), 
volume.getName(),
                     Volume.class.getName(), volume.getUuid(), 
volume.isDisplayVolume());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4ea0dcda/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java 
b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 5a3b885..b9ed37e 100755
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -4812,7 +4812,10 @@ public class UserVmManagerImpl extends ManagerBase 
implements UserVmManager, Vir
                 newVol = volumeMgr.allocateDuplicateVolume(root, null);
             }
 
-            // Create Usage event for the newly created volume
+            // 1. Save usage event and update resource count for user vm 
volumes
+            _resourceLimitMgr.incrementResourceCount(newVol.getAccountId(), 
ResourceType.volume, newVol.isDisplay());
+            _resourceLimitMgr.incrementResourceCount(newVol.getAccountId(), 
ResourceType.primary_storage, newVol.isDisplay(), new Long(newVol.getSize()));
+            // 2. 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(), template.getId(), newVol.getSize());
             _usageEventDao.persist(usageEvent);
 

Reply via email to