Skip to content

Commit 5846f71

Browse files
author
Gabriel
committed
fix limit count of user_vm
1 parent dd1fe0f commit 5846f71

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7312,7 +7312,7 @@ public UserVm moveVmToUser(final AssignVMCmd cmd) throws ResourceAllocationExcep
73127312
final ServiceOfferingVO offering = serviceOfferingDao.findByIdIncludingRemoved(vm.getId(), vm.getServiceOfferingId());
73137313
VirtualMachineTemplate template = _templateDao.findByIdIncludingRemoved(vm.getTemplateId());
73147314

7315-
verifyResourceLimitsForAccountAndStorage(newAccount, vm, vmId, offering, volumes, template);
7315+
verifyResourceLimitsForAccountAndStorage(newAccount, vm, offering, volumes, template);
73167316

73177317
validateIfNewOwnerHasAccessToTemplate(vm, newAccount, template);
73187318

@@ -7393,17 +7393,18 @@ protected void validateIfVolumesHaveNoSnapshots(List<VolumeVO> volumes) throws I
73937393
* If any limit is exceeded, throws a {@link ResourceAllocationException}.
73947394
* @param account The account to check if CPU and RAM limit has been exceeded.
73957395
* @param vm The VM which can exceed resource limits.
7396-
* @param vmId The ID for the VM which can exceed resource limits.
73977396
* @param offering The service offering which can exceed resource limits.
73987397
* @param volumes The volumes whose total size can exceed resource limits.
73997398
* @throws ResourceAllocationException
74007399
*/
7401-
protected void verifyResourceLimitsForAccountAndStorage(Account account, UserVmVO vm, Long vmId, ServiceOfferingVO offering, List<VolumeVO> volumes, VirtualMachineTemplate template)
7400+
protected void verifyResourceLimitsForAccountAndStorage(Account account, UserVmVO vm, ServiceOfferingVO offering, List<VolumeVO> volumes, VirtualMachineTemplate template)
74027401
throws ResourceAllocationException {
74037402

74047403
logger.trace(String.format("Verifying if CPU and RAM for VM [%s] do not exceed account [%s] limit.", vm, account));
74057404

7406-
resourceCountIncrement(account.getAccountId(), vm.isDisplayVm(), offering, template);
7405+
if (!VirtualMachineManager.ResourceCountRunningVMsonly.value()) {
7406+
resourceLimitService.checkVmResourceLimit(account, vm.isDisplayVm(), offering, template);
7407+
}
74077408

74087409
logger.trace(String.format("Verifying if volume size for VM [%s] does not exceed account [%s] limit.", vm, account));
74097410

server/src/test/java/com/cloud/vm/UserVmManagerImplTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ private void configureDoNothingForMethodsThatWeDoNotWantToTest() throws Resource
601601
Mockito.doNothing().when(userVmManagerImpl).validateOldAndNewAccounts(Mockito.nullable(Account.class), Mockito.nullable(Account.class), Mockito.anyLong(), Mockito.nullable(String.class), Mockito.nullable(Long.class));
602602
Mockito.doNothing().when(userVmManagerImpl).validateIfVmHasNoRules(Mockito.any(), Mockito.anyLong());
603603
Mockito.doNothing().when(userVmManagerImpl).removeInstanceFromInstanceGroup(Mockito.anyLong());
604-
Mockito.doNothing().when(userVmManagerImpl).verifyResourceLimitsForAccountAndStorage(Mockito.any(), Mockito.any(), Mockito.anyLong(), Mockito.any(), Mockito.anyList(), Mockito.any());
604+
Mockito.doNothing().when(userVmManagerImpl).verifyResourceLimitsForAccountAndStorage(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.anyList(), Mockito.any());
605605
Mockito.doNothing().when(userVmManagerImpl).validateIfNewOwnerHasAccessToTemplate(Mockito.any(), Mockito.any(), Mockito.any());
606606

607607
Mockito.doNothing().when(userVmManagerImpl).updateVmOwner(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any());
@@ -1872,7 +1872,7 @@ public void validateIfVmHasNoRulesTestOneToOneNatRulesDoNotExistDoesNotThrowInva
18721872
public void verifyResourceLimitsForAccountAndStorageTestDoesNotCallResourceLimitCheck() throws ResourceAllocationException {
18731873
LinkedList<VolumeVO> volumeVoList = new LinkedList<VolumeVO>();
18741874

1875-
userVmManagerImpl.verifyResourceLimitsForAccountAndStorage(accountMock, userVmVoMock, 1l, serviceOfferingVoMock, volumeVoList, virtualMachineTemplateMock);
1875+
userVmManagerImpl.verifyResourceLimitsForAccountAndStorage(accountMock, userVmVoMock, serviceOfferingVoMock, volumeVoList, virtualMachineTemplateMock);
18761876

18771877
Mockito.verify(resourceLimitMgr, Mockito.never()).checkVmResourceLimit(Mockito.any(), Mockito.anyBoolean(), Mockito.any(), Mockito.any());
18781878

@@ -2931,7 +2931,7 @@ public void moveVmToUserTestVerifyResourceLimitsForAccountAndStorageThrowsResour
29312931

29322932
configureDoNothingForMethodsThatWeDoNotWantToTest();
29332933

2934-
Mockito.doThrow(ResourceAllocationException.class).when(userVmManagerImpl).verifyResourceLimitsForAccountAndStorage(Mockito.any(), Mockito.any(), Mockito.anyLong(),
2934+
Mockito.doThrow(ResourceAllocationException.class).when(userVmManagerImpl).verifyResourceLimitsForAccountAndStorage(Mockito.any(), Mockito.any(),
29352935
Mockito.any(), Mockito.any(), Mockito.any());
29362936

29372937
Assert.assertThrows(ResourceAllocationException.class, () -> userVmManagerImpl.moveVmToUser(assignVmCmdMock));

0 commit comments

Comments
 (0)