This is an automated email from the ASF dual-hosted git repository.
rohit pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/main by this push:
new c4036800de5 Fix: check root disk offering tagged limits during VM
deploy (#8871)
c4036800de5 is described below
commit c4036800de50e61b1f2541c354f54a0943b2e610
Author: Vishesh <[email protected]>
AuthorDate: Wed Apr 3 19:42:43 2024 +0530
Fix: check root disk offering tagged limits during VM deploy (#8871)
---
.../main/java/com/cloud/vm/UserVmManagerImpl.java | 27 +++++++++++++---------
1 file changed, 16 insertions(+), 11 deletions(-)
diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
index fbcbac66dc3..47c26757949 100644
--- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
@@ -4037,11 +4037,12 @@ public class UserVmManagerImpl extends ManagerBase
implements UserVmManager, Vir
throw new InvalidParameterValueException("Root volume encryption
is not supported for hypervisor type " + hypervisorType);
}
+ long additionalDiskSize = 0L;
if (!isIso && diskOfferingId != null) {
DiskOfferingVO diskOffering =
_diskOfferingDao.findById(diskOfferingId);
- volumesSize += verifyAndGetDiskSize(diskOffering, diskSize);
+ additionalDiskSize = verifyAndGetDiskSize(diskOffering, diskSize);
}
- UserVm vm = getCheckedUserVmResource(zone, hostName, displayName,
owner, diskOfferingId, diskSize, networkList, securityGroupIdList, group,
httpmethod, userData, userDataId, userDataDetails, sshKeyPairs, caller,
requestedIps, defaultIps, isDisplayVm, keyboard, affinityGroupIdList,
customParameters, customId, dhcpOptionMap, datadiskTemplateToDiskOfferringMap,
userVmOVFPropertiesMap, dynamicScalingEnabled, vmType, template,
hypervisorType, accountId, offering, isIso, rootDiskOfferi [...]
+ UserVm vm = getCheckedUserVmResource(zone, hostName, displayName,
owner, diskOfferingId, diskSize, networkList, securityGroupIdList, group,
httpmethod, userData, userDataId, userDataDetails, sshKeyPairs, caller,
requestedIps, defaultIps, isDisplayVm, keyboard, affinityGroupIdList,
customParameters, customId, dhcpOptionMap, datadiskTemplateToDiskOfferringMap,
userVmOVFPropertiesMap, dynamicScalingEnabled, vmType, template,
hypervisorType, accountId, offering, isIso, rootDiskOfferi [...]
_securityGroupMgr.addInstanceToGroups(vm.getId(), securityGroupIdList);
@@ -4061,15 +4062,14 @@ public class UserVmManagerImpl extends ManagerBase
implements UserVmManager, Vir
Map<String, Map<Integer, String>> dhcpOptionMap, Map<Long,
DiskOffering> datadiskTemplateToDiskOfferringMap,
Map<String, String> userVmOVFPropertiesMap, boolean
dynamicScalingEnabled, String vmType, VMTemplateVO template,
HypervisorType hypervisorType, long accountId, ServiceOfferingVO
offering, boolean isIso,
- Long rootDiskOfferingId, long volumesSize) throws
ResourceAllocationException, StorageUnavailableException,
- InsufficientCapacityException {
+ Long rootDiskOfferingId, long volumesSize, long additionalDiskSize)
throws ResourceAllocationException {
if (!VirtualMachineManager.ResourceCountRunningVMsonly.value()) {
List<String> resourceLimitHostTags =
resourceLimitService.getResourceLimitHostTags(offering, template);
try (CheckedReservation vmReservation = new
CheckedReservation(owner, ResourceType.user_vm, resourceLimitHostTags, 1l,
reservationDao, resourceLimitService);
CheckedReservation cpuReservation = new
CheckedReservation(owner, ResourceType.cpu, resourceLimitHostTags,
Long.valueOf(offering.getCpu()), reservationDao, resourceLimitService);
CheckedReservation memReservation = new
CheckedReservation(owner, ResourceType.memory, resourceLimitHostTags,
Long.valueOf(offering.getRamSize()), reservationDao, resourceLimitService);
) {
- return getUncheckedUserVmResource(zone, hostName, displayName,
owner, diskOfferingId, diskSize, networkList, securityGroupIdList, group,
httpmethod, userData, userDataId, userDataDetails, sshKeyPairs, caller,
requestedIps, defaultIps, isDisplayVm, keyboard, affinityGroupIdList,
customParameters, customId, dhcpOptionMap, datadiskTemplateToDiskOfferringMap,
userVmOVFPropertiesMap, dynamicScalingEnabled, vmType, template,
hypervisorType, accountId, offering, isIso, rootDiskO [...]
+ return getUncheckedUserVmResource(zone, hostName, displayName,
owner, diskOfferingId, diskSize, networkList, securityGroupIdList, group,
httpmethod, userData, userDataId, userDataDetails, sshKeyPairs, caller,
requestedIps, defaultIps, isDisplayVm, keyboard, affinityGroupIdList,
customParameters, customId, dhcpOptionMap, datadiskTemplateToDiskOfferringMap,
userVmOVFPropertiesMap, dynamicScalingEnabled, vmType, template,
hypervisorType, accountId, offering, isIso, rootDiskO [...]
} catch (ResourceAllocationException | CloudRuntimeException e) {
throw e;
} catch (Exception e) {
@@ -4078,7 +4078,7 @@ public class UserVmManagerImpl extends ManagerBase
implements UserVmManager, Vir
}
} else {
- return getUncheckedUserVmResource(zone, hostName, displayName,
owner, diskOfferingId, diskSize, networkList, securityGroupIdList, group,
httpmethod, userData, userDataId, userDataDetails, sshKeyPairs, caller,
requestedIps, defaultIps, isDisplayVm, keyboard, affinityGroupIdList,
customParameters, customId, dhcpOptionMap, datadiskTemplateToDiskOfferringMap,
userVmOVFPropertiesMap, dynamicScalingEnabled, vmType, template,
hypervisorType, accountId, offering, isIso, rootDiskOffer [...]
+ return getUncheckedUserVmResource(zone, hostName, displayName,
owner, diskOfferingId, diskSize, networkList, securityGroupIdList, group,
httpmethod, userData, userDataId, userDataDetails, sshKeyPairs, caller,
requestedIps, defaultIps, isDisplayVm, keyboard, affinityGroupIdList,
customParameters, customId, dhcpOptionMap, datadiskTemplateToDiskOfferringMap,
userVmOVFPropertiesMap, dynamicScalingEnabled, vmType, template,
hypervisorType, accountId, offering, isIso, rootDiskOffer [...]
}
}
@@ -4095,11 +4095,16 @@ public class UserVmManagerImpl extends ManagerBase
implements UserVmManager, Vir
Map<String, Map<Integer, String>> dhcpOptionMap, Map<Long,
DiskOffering> datadiskTemplateToDiskOfferringMap,
Map<String, String> userVmOVFPropertiesMap, boolean
dynamicScalingEnabled, String vmType, VMTemplateVO template,
HypervisorType hypervisorType, long accountId, ServiceOfferingVO
offering, boolean isIso,
- Long rootDiskOfferingId, long volumesSize) throws
ResourceAllocationException, StorageUnavailableException,
- InsufficientCapacityException {
- List<String> resourceLimitStorageTags =
getResourceLimitStorageTags(diskOfferingId != null ? diskOfferingId :
offering.getDiskOfferingId());
- try (CheckedReservation volumeReservation = new
CheckedReservation(owner, ResourceType.volume, resourceLimitStorageTags, (isIso
|| diskOfferingId == null ? 1l : 2), reservationDao, resourceLimitService);
- CheckedReservation primaryStorageReservation = new
CheckedReservation(owner, ResourceType.primary_storage,
resourceLimitStorageTags, volumesSize, reservationDao, resourceLimitService)) {
+ Long rootDiskOfferingId, long volumesSize, long additionalDiskSize)
throws ResourceAllocationException
+ {
+ List<String> rootResourceLimitStorageTags =
getResourceLimitStorageTags(rootDiskOfferingId != null ? rootDiskOfferingId :
offering.getDiskOfferingId());
+ List<String> additionalResourceLimitStorageTags = diskOfferingId !=
null ? getResourceLimitStorageTags(diskOfferingId) : null;
+
+ try (CheckedReservation rootVolumeReservation = new
CheckedReservation(owner, ResourceType.volume, rootResourceLimitStorageTags,
1L, reservationDao, resourceLimitService);
+ CheckedReservation additionalVolumeReservation = diskOfferingId
!= null ? new CheckedReservation(owner, ResourceType.volume,
additionalResourceLimitStorageTags, 1L, reservationDao, resourceLimitService) :
null;
+ CheckedReservation rootPrimaryStorageReservation = new
CheckedReservation(owner, ResourceType.primary_storage,
rootResourceLimitStorageTags, volumesSize, reservationDao,
resourceLimitService);
+ CheckedReservation additionalPrimaryStorageReservation =
diskOfferingId != null ? new CheckedReservation(owner,
ResourceType.primary_storage, additionalResourceLimitStorageTags,
additionalDiskSize, reservationDao, resourceLimitService) : null;
+ ) {
// verify security group ids
if (securityGroupIdList != null) {