Skip to content

Commit ab92961

Browse files
sureshanapartidhslove
authored andcommitted
[VMware] Update data disk controller same as the root disk controller type when it is not set in the VM detail (apache#9433)
1 parent c268e95 commit ab92961

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

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

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4881,17 +4881,24 @@ private void updateVMDiskController(UserVmVO vm, Map<String, String> customParam
48814881
vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER, dataDiskControllerSetting);
48824882
}
48834883

4884-
String controllerSetting = StringUtils.defaultIfEmpty(_configDao.getValue(Config.VmwareRootDiskControllerType.key()),
4885-
Config.VmwareRootDiskControllerType.getDefaultValue());
4886-
48874884
// Don't override if VM already has root/data disk controller detail
48884885
if (vm.getDetail(VmDetailConstants.ROOT_DISK_CONTROLLER) == null) {
4889-
vm.setDetail(VmDetailConstants.ROOT_DISK_CONTROLLER, controllerSetting);
4886+
String vmwareRootDiskControllerTypeFromSetting = StringUtils.defaultIfEmpty(_configDao.getValue(Config.VmwareRootDiskControllerType.key()),
4887+
Config.VmwareRootDiskControllerType.getDefaultValue());
4888+
vm.setDetail(VmDetailConstants.ROOT_DISK_CONTROLLER, vmwareRootDiskControllerTypeFromSetting);
48904889
}
4890+
48914891
if (vm.getDetail(VmDetailConstants.DATA_DISK_CONTROLLER) == null) {
4892-
if (controllerSetting.equalsIgnoreCase("scsi")) {
4893-
vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER, "scsi");
4892+
String finalRootDiskController = vm.getDetail(VmDetailConstants.ROOT_DISK_CONTROLLER);
4893+
// Set the data disk controller detail same as the final scsi root disk controller if VM doesn't have data disk controller detail
4894+
// This is to ensure the disk controller is available for the data disks, as all the SCSI controllers are created with same controller type
4895+
String scsiControllerPattern = "(?i)\\b(scsi|lsilogic|lsilogicsas|lsisas1068|buslogic|pvscsi)\\b";
4896+
if (finalRootDiskController.matches(scsiControllerPattern)) {
4897+
s_logger.info(String.format("Data disk controller was not defined, but root disk is using SCSI controller [%s]." +
4898+
"To ensure disk controllers are available for the data disks, the data disk controller is updated to match the root disk controller.", finalRootDiskController));
4899+
vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER, finalRootDiskController);
48944900
} else {
4901+
s_logger.info("Data disk controller was not defined; defaulting to 'osdefault'.");
48954902
vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER, "osdefault");
48964903
}
48974904
}

0 commit comments

Comments
 (0)