1616// under the License.
1717package com.cloud.vm;
1818
19+ import static com.cloud.configuration.ConfigurationManager.VM_USERDATA_MAX_LENGTH;
1920import static com.cloud.configuration.ConfigurationManagerImpl.VM_USERDATA_MAX_LENGTH;
2021import static com.cloud.storage.Volume.IOPS_LIMIT;
2122import static com.cloud.utils.NumbersUtil.toHumanReadableSize;
@@ -3992,7 +3993,7 @@ private UserVm createVirtualMachine(DataCenter zone, ServiceOffering serviceOffe
39923993 throw new PermissionDeniedException("The owner of vm to deploy is disabled: " + owner);
39933994 }
39943995 VMTemplateVO template = _templateDao.findById(tmplt.getId());
3995- if (customParameters.get ("volumeId") != null) {
3996+ if (!MapUtils.isEmpty( customParameters) && customParameters.containsKey ("volumeId")) {
39963997 template = _templateDao.findByIdIncludingRemoved(tmplt.getId());
39973998 }
39983999
@@ -4074,7 +4075,7 @@ private UserVm createVirtualMachine(DataCenter zone, ServiceOffering serviceOffe
40744075 throw new InvalidParameterValueException("Root volume encryption is not supported for hypervisor type " + hypervisorType);
40754076 }
40764077
4077- if (customParameters.get ("volumeId") != null) {
4078+ if (!MapUtils.isEmpty( customParameters) && customParameters.containsKey ("volumeId")) {
40784079 Long volumeId = Long.valueOf(customParameters.get("volumeId"));
40794080 VolumeVO volume = _volsDao.findById(volumeId);
40804081 // Compute the size of the volume
@@ -4498,14 +4499,14 @@ protected long configureCustomRootDiskSize(Map<String, String> customParameters,
44984499 _volumeService.validateVolumeSizeInBytes(rootDiskSize);
44994500 return rootDiskSize;
45004501 } else {
4501- if (customParameters.get("volumeId") == null) {
4502- // For baremetal, size can be 0 (zero)
4503- Long templateSize = _templateDao.findById(template.getId()).getSize();
4504- if (templateSize != null) {
4505- return templateSize;
4502+ if (!MapUtils.isEmpty(customParameters) && !customParameters.containsKey("volumeId")){
4503+ // For baremetal, size can be 0 (zero)
4504+ Long templateSize = _templateDao.findById(template.getId()).getSize();
4505+ if (templateSize != null) {
4506+ return templateSize;
4507+ }
45064508 }
45074509 }
4508- }
45094510 return 0;
45104511 }
45114512
@@ -4562,7 +4563,7 @@ private UserVmVO commitUserVm(final boolean isImport, final DataCenter zone, fin
45624563 offering.getLimitCpuUse(), owner.getDomainId(), owner.getId(), userId, offering.getId(), userData, userDataId, userDataDetails, hostName);
45634564 vm.setUuid(uuidName);
45644565 vm.setDynamicallyScalable(dynamicScalingEnabled);
4565- if (customParameters.get ("volumeId") != null) {
4566+ if (!MapUtils.isEmpty( customParameters) && customParameters.containsKey ("volumeId")) {
45664567 template = _templateDao.findByIdIncludingRemoved(template.getId());
45674568 }
45684569 Map<String, String> details = template.getDetails();
@@ -4596,7 +4597,7 @@ private UserVmVO commitUserVm(final boolean isImport, final DataCenter zone, fin
45964597
45974598 Long rootDiskSize = null;
45984599 // custom root disk size, resizes base template to larger size
4599- if (customParameters.containsKey(VmDetailConstants.ROOT_DISK_SIZE) && customParameters.get ("volumeId") == null ) {
4600+ if (customParameters.containsKey(VmDetailConstants.ROOT_DISK_SIZE) && ! customParameters.containsKey ("volumeId")) {
46004601 // already verified for positive number
46014602 rootDiskSize = Long.parseLong(customParameters.get(VmDetailConstants.ROOT_DISK_SIZE));
46024603
@@ -4606,7 +4607,6 @@ private UserVmVO commitUserVm(final boolean isImport, final DataCenter zone, fin
46064607 ipve.add(VirtualMachine.class, vm.getUuid());
46074608 throw ipve;
46084609 }
4609-
46104610 validateRootDiskResize(hypervisorType, rootDiskSize, templateVO, vm, customParameters);
46114611 }
46124612
@@ -9341,10 +9341,10 @@ public UserVm createVirtualMachineVolume(DeployVMVolumeCmd cmd) throws Insuffici
93419341 Map<String, String> userVmOVFProperties = cmd.getVmProperties();
93429342 Map<String, String> customParameters = cmd.getDetails();
93439343 Long volumeId = cmd.getVolumeId();
9344- if (cmd.getVolumeId() != null) {
9344+ if (volumeId != null) {
93459345 customParameters.put("volumeId", String.valueOf(volumeId));
93469346 }
9347- VolumeVO volVO =_volsDao.findById(Long.parseLong(customParameters.get(" volumeId")) );
9347+ VolumeVO volVO =_volsDao.findById(volumeId);
93489348 volVO.setDeviceId(0L);
93499349 volVO.setTemplateId(template.getId());
93509350 _volsDao.update(volVO.getId(), volVO);
0 commit comments