Skip to content

Commit 85a1cc9

Browse files
sanjaytripathiSateesh Chodapuneedi
authored andcommitted
CLOUDSTACK-2087: Destroying the instance is not decrementing the primary storage usage [Resource Count table - No of volumes is not got decremented]
Signed-off-by: Sateesh Chodapuneedi <sateesh@apache.org>
1 parent 1f14679 commit 85a1cc9

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ public ResourceLimitVO updateResourceLimit(Long accountId, Long domainId, Intege
582582
}
583583

584584
//Convert max storage size from GiB to bytes
585-
if (resourceType == ResourceType.primary_storage || resourceType == ResourceType.secondary_storage) {
585+
if ((resourceType == ResourceType.primary_storage || resourceType == ResourceType.secondary_storage) && max >= 0) {
586586
max = max * ResourceType.bytesToGiB;
587587
}
588588

server/src/com/cloud/vm/VirtualMachineManagerImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
import com.cloud.cluster.ClusterManager;
6565
import com.cloud.configuration.Config;
6666
import com.cloud.configuration.ConfigurationManager;
67+
import com.cloud.configuration.Resource.ResourceType;
6768
import com.cloud.configuration.dao.ConfigurationDao;
6869
import com.cloud.dc.dao.ClusterDao;
6970
import com.cloud.dc.DataCenter;
@@ -131,6 +132,7 @@
131132
import com.cloud.storage.snapshot.SnapshotManager;
132133
import com.cloud.user.Account;
133134
import com.cloud.user.AccountManager;
135+
import com.cloud.user.ResourceLimitService;
134136
import com.cloud.user.User;
135137
import com.cloud.user.dao.AccountDao;
136138
import com.cloud.user.dao.UserDao;
@@ -231,6 +233,8 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
231233
protected VMSnapshotDao _vmSnapshotDao;
232234
@Inject
233235
protected VolumeDataFactory volFactory;
236+
@Inject
237+
protected ResourceLimitService _resourceLimitMgr;
234238

235239
protected List<DeploymentPlanner> _planners;
236240
public List<DeploymentPlanner> getPlanners() {
@@ -428,6 +432,7 @@ public <T extends VMInstanceVO> boolean advanceExpunge(T vm, User caller, Accoun
428432
s_logger.debug("Cleaning up NICS");
429433
_networkMgr.cleanupNics(profile);
430434
// Clean up volumes based on the vm's instance id
435+
List<VolumeVO> rootVol = _volsDao.findByInstanceAndType(vm.getId(), Volume.Type.ROOT);
431436
this.volumeMgr.cleanupVolumes(vm.getId());
432437

433438
VirtualMachineGuru<T> guru = getVmGuru(vm);
@@ -462,6 +467,12 @@ public <T extends VMInstanceVO> boolean advanceExpunge(T vm, User caller, Accoun
462467
s_logger.debug("Expunged " + vm);
463468
}
464469

470+
// Update Resource count
471+
if (vm.getAccountId() != Account.ACCOUNT_ID_SYSTEM && !rootVol.isEmpty()) {
472+
_resourceLimitMgr.decrementResourceCount(vm.getAccountId(), ResourceType.volume);
473+
_resourceLimitMgr.decrementResourceCount(vm.getAccountId(), ResourceType.primary_storage,
474+
new Long(rootVol.get(0).getSize()));
475+
}
465476
return true;
466477
}
467478

0 commit comments

Comments
 (0)