@Override public void saveDetails(UserVmVO vm) { Map<String, String> detailsStr = vm.getDetails(); if (detailsStr == null) { return; } final Map<String, Boolean> visibilityMap = _detailsDao.listDetailsVisibility(vm.getId()); List<UserVmDetailVO> details = new ArrayList<UserVmDetailVO>(); for (Map.Entry<String, String> entry : detailsStr.entrySet()) { boolean display = visibilityMap.getOrDefault(entry.getKey(), true); details.add(new UserVmDetailVO(vm.getId(), entry.getKey(), entry.getValue(), display)); } _detailsDao.saveDetails(details); }
public void validateRootDiskResize(final HypervisorType hypervisorType, Long rootDiskSize, VMTemplateVO templateVO, UserVmVO vm, final Map<String, String> customParameters) throws InvalidParameterValueException { // rootdisksize must be larger than template. if ((rootDiskSize << 30) < templateVO.getSize()) { Long templateVOSizeGB = templateVO.getSize() / GiB_TO_BYTES; String error = "Unsupported: rootdisksize override is smaller than template size " + templateVO.getSize() + "B (" + templateVOSizeGB + "GB)"; s_logger.error(error); throw new InvalidParameterValueException(error); } else if ((rootDiskSize << 30) > templateVO.getSize()) { if (hypervisorType == HypervisorType.VMware && (vm.getDetails() == null || vm.getDetails().get("rootDiskController") == null)) { s_logger.warn("If Root disk controller parameter is not overridden, then Root disk resize may fail because current Root disk controller value is NULL."); } else if (hypervisorType == HypervisorType.VMware && !vm.getDetails().get("rootDiskController").toLowerCase().contains("scsi")) { String error = "Found unsupported root disk controller: " + vm.getDetails().get("rootDiskController"); s_logger.error(error); throw new InvalidParameterValueException(error); } else { s_logger.debug("Rootdisksize override validation successful. Template root disk size " + (templateVO.getSize() / GiB_TO_BYTES) + "GB Root disk size specified " + rootDiskSize + "GB"); } } else { s_logger.debug("Root disk size specified is " + (rootDiskSize << 30) + "B and Template root disk size is " + templateVO.getSize() + "B. Both are equal so no need to override"); customParameters.remove("rootdisksize"); } }
if (userVm != null) { _userVmDao.loadDetails(userVm); details.putAll(userVm.getDetails());