Skip to content

Commit a4c7bdf

Browse files
committed
server: fix resource count error when upgrade a vm
Steps to reproduce the issue (1) create an account (test) (2) create a vm with the account (test) (3) login with admin, and upgrade the vm to another offering (4) the resource count (cpu,memory) of admin increases, not the account (test).
1 parent 7d8418f commit a4c7bdf

1 file changed

Lines changed: 14 additions & 13 deletions

File tree

server/src/main/java/com/cloud/vm/UserVmManagerImpl.java

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -993,11 +993,12 @@ public UserVm upgradeVirtualMachine(UpgradeVMCmd cmd) throws ResourceAllocationE
993993
int currentCpu = currentServiceOffering.getCpu();
994994
int currentMemory = currentServiceOffering.getRamSize();
995995

996+
Account owner = _accountMgr.getActiveAccountById(vmInstance.getAccountId());
996997
if (newCpu > currentCpu) {
997-
_resourceLimitMgr.checkResourceLimit(caller, ResourceType.cpu, newCpu - currentCpu);
998+
_resourceLimitMgr.checkResourceLimit(owner, ResourceType.cpu, newCpu - currentCpu);
998999
}
9991000
if (newMemory > currentMemory) {
1000-
_resourceLimitMgr.checkResourceLimit(caller, ResourceType.memory, newMemory - currentMemory);
1001+
_resourceLimitMgr.checkResourceLimit(owner, ResourceType.memory, newMemory - currentMemory);
10011002
}
10021003

10031004
// Check that the specified service offering ID is valid
@@ -1014,14 +1015,14 @@ public UserVm upgradeVirtualMachine(UpgradeVMCmd cmd) throws ResourceAllocationE
10141015

10151016
// Increment or decrement CPU and Memory count accordingly.
10161017
if (newCpu > currentCpu) {
1017-
_resourceLimitMgr.incrementResourceCount(caller.getAccountId(), ResourceType.cpu, new Long(newCpu - currentCpu));
1018+
_resourceLimitMgr.incrementResourceCount(owner.getAccountId(), ResourceType.cpu, new Long(newCpu - currentCpu));
10181019
} else if (currentCpu > newCpu) {
1019-
_resourceLimitMgr.decrementResourceCount(caller.getAccountId(), ResourceType.cpu, new Long(currentCpu - newCpu));
1020+
_resourceLimitMgr.decrementResourceCount(owner.getAccountId(), ResourceType.cpu, new Long(currentCpu - newCpu));
10201021
}
10211022
if (newMemory > currentMemory) {
1022-
_resourceLimitMgr.incrementResourceCount(caller.getAccountId(), ResourceType.memory, new Long(newMemory - currentMemory));
1023+
_resourceLimitMgr.incrementResourceCount(owner.getAccountId(), ResourceType.memory, new Long(newMemory - currentMemory));
10231024
} else if (currentMemory > newMemory) {
1024-
_resourceLimitMgr.decrementResourceCount(caller.getAccountId(), ResourceType.memory, new Long(currentMemory - newMemory));
1025+
_resourceLimitMgr.decrementResourceCount(owner.getAccountId(), ResourceType.memory, new Long(currentMemory - newMemory));
10251026
}
10261027

10271028
// Generate usage event for VM upgrade
@@ -1099,11 +1100,12 @@ private UserVm upgradeStoppedVirtualMachine(Long vmId, Long svcOffId, Map<String
10991100
int currentCpu = currentServiceOffering.getCpu();
11001101
int currentMemory = currentServiceOffering.getRamSize();
11011102

1103+
Account owner = _accountMgr.getActiveAccountById(vmInstance.getAccountId());
11021104
if (newCpu > currentCpu) {
1103-
_resourceLimitMgr.checkResourceLimit(caller, ResourceType.cpu, newCpu - currentCpu);
1105+
_resourceLimitMgr.checkResourceLimit(owner, ResourceType.cpu, newCpu - currentCpu);
11041106
}
11051107
if (newMemory > currentMemory) {
1106-
_resourceLimitMgr.checkResourceLimit(caller, ResourceType.memory, newMemory - currentMemory);
1108+
_resourceLimitMgr.checkResourceLimit(owner, ResourceType.memory, newMemory - currentMemory);
11071109
}
11081110

11091111
// Check that the specified service offering ID is valid
@@ -1125,7 +1127,6 @@ private UserVm upgradeStoppedVirtualMachine(Long vmId, Long svcOffId, Map<String
11251127

11261128
// Check if the new service offering can be applied to vm instance
11271129
ServiceOffering newSvcOffering = _offeringDao.findById(svcOffId);
1128-
Account owner = _accountMgr.getActiveAccountById(vmInstance.getAccountId());
11291130
_accountMgr.checkAccess(owner, newSvcOffering, _dcDao.findById(vmInstance.getDataCenterId()));
11301131

11311132
_itMgr.upgradeVmDb(vmId, svcOffId);
@@ -1139,14 +1140,14 @@ private UserVm upgradeStoppedVirtualMachine(Long vmId, Long svcOffId, Map<String
11391140

11401141
// Increment or decrement CPU and Memory count accordingly.
11411142
if (newCpu > currentCpu) {
1142-
_resourceLimitMgr.incrementResourceCount(caller.getAccountId(), ResourceType.cpu, new Long(newCpu - currentCpu));
1143+
_resourceLimitMgr.incrementResourceCount(owner.getAccountId(), ResourceType.cpu, new Long(newCpu - currentCpu));
11431144
} else if (currentCpu > newCpu) {
1144-
_resourceLimitMgr.decrementResourceCount(caller.getAccountId(), ResourceType.cpu, new Long(currentCpu - newCpu));
1145+
_resourceLimitMgr.decrementResourceCount(owner.getAccountId(), ResourceType.cpu, new Long(currentCpu - newCpu));
11451146
}
11461147
if (newMemory > currentMemory) {
1147-
_resourceLimitMgr.incrementResourceCount(caller.getAccountId(), ResourceType.memory, new Long(newMemory - currentMemory));
1148+
_resourceLimitMgr.incrementResourceCount(owner.getAccountId(), ResourceType.memory, new Long(newMemory - currentMemory));
11481149
} else if (currentMemory > newMemory) {
1149-
_resourceLimitMgr.decrementResourceCount(caller.getAccountId(), ResourceType.memory, new Long(currentMemory - newMemory));
1150+
_resourceLimitMgr.decrementResourceCount(owner.getAccountId(), ResourceType.memory, new Long(currentMemory - newMemory));
11501151
}
11511152

11521153
return _vmDao.findById(vmInstance.getId());

0 commit comments

Comments
 (0)