|
64 | 64 | import com.cloud.cluster.ClusterManager; |
65 | 65 | import com.cloud.configuration.Config; |
66 | 66 | import com.cloud.configuration.ConfigurationManager; |
| 67 | +import com.cloud.configuration.Resource.ResourceType; |
67 | 68 | import com.cloud.configuration.dao.ConfigurationDao; |
68 | 69 | import com.cloud.dc.dao.ClusterDao; |
69 | 70 | import com.cloud.dc.DataCenter; |
|
131 | 132 | import com.cloud.storage.snapshot.SnapshotManager; |
132 | 133 | import com.cloud.user.Account; |
133 | 134 | import com.cloud.user.AccountManager; |
| 135 | +import com.cloud.user.ResourceLimitService; |
134 | 136 | import com.cloud.user.User; |
135 | 137 | import com.cloud.user.dao.AccountDao; |
136 | 138 | import com.cloud.user.dao.UserDao; |
@@ -231,6 +233,8 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac |
231 | 233 | protected VMSnapshotDao _vmSnapshotDao; |
232 | 234 | @Inject |
233 | 235 | protected VolumeDataFactory volFactory; |
| 236 | + @Inject |
| 237 | + protected ResourceLimitService _resourceLimitMgr; |
234 | 238 |
|
235 | 239 | protected List<DeploymentPlanner> _planners; |
236 | 240 | public List<DeploymentPlanner> getPlanners() { |
@@ -428,6 +432,7 @@ public <T extends VMInstanceVO> boolean advanceExpunge(T vm, User caller, Accoun |
428 | 432 | s_logger.debug("Cleaning up NICS"); |
429 | 433 | _networkMgr.cleanupNics(profile); |
430 | 434 | // Clean up volumes based on the vm's instance id |
| 435 | + List<VolumeVO> rootVol = _volsDao.findByInstanceAndType(vm.getId(), Volume.Type.ROOT); |
431 | 436 | this.volumeMgr.cleanupVolumes(vm.getId()); |
432 | 437 |
|
433 | 438 | VirtualMachineGuru<T> guru = getVmGuru(vm); |
@@ -462,6 +467,12 @@ public <T extends VMInstanceVO> boolean advanceExpunge(T vm, User caller, Accoun |
462 | 467 | s_logger.debug("Expunged " + vm); |
463 | 468 | } |
464 | 469 |
|
| 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 | + } |
465 | 476 | return true; |
466 | 477 | } |
467 | 478 |
|
|
0 commit comments