mirror of https://github.com/apache/cloudstack.git
[VMware] Update data disk controller same as the root disk controller type when it is not set in the VM detail (#9433)
This commit is contained in:
parent
9148701285
commit
11497c601f
|
|
@ -4650,17 +4650,24 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir
|
|||
vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER, dataDiskControllerSetting);
|
||||
}
|
||||
|
||||
String controllerSetting = StringUtils.defaultIfEmpty(_configDao.getValue(Config.VmwareRootDiskControllerType.key()),
|
||||
Config.VmwareRootDiskControllerType.getDefaultValue());
|
||||
|
||||
// Don't override if VM already has root/data disk controller detail
|
||||
if (vm.getDetail(VmDetailConstants.ROOT_DISK_CONTROLLER) == null) {
|
||||
vm.setDetail(VmDetailConstants.ROOT_DISK_CONTROLLER, controllerSetting);
|
||||
String vmwareRootDiskControllerTypeFromSetting = StringUtils.defaultIfEmpty(_configDao.getValue(Config.VmwareRootDiskControllerType.key()),
|
||||
Config.VmwareRootDiskControllerType.getDefaultValue());
|
||||
vm.setDetail(VmDetailConstants.ROOT_DISK_CONTROLLER, vmwareRootDiskControllerTypeFromSetting);
|
||||
}
|
||||
|
||||
if (vm.getDetail(VmDetailConstants.DATA_DISK_CONTROLLER) == null) {
|
||||
if (controllerSetting.equalsIgnoreCase("scsi")) {
|
||||
vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER, "scsi");
|
||||
String finalRootDiskController = vm.getDetail(VmDetailConstants.ROOT_DISK_CONTROLLER);
|
||||
// Set the data disk controller detail same as the final scsi root disk controller if VM doesn't have data disk controller detail
|
||||
// This is to ensure the disk controller is available for the data disks, as all the SCSI controllers are created with same controller type
|
||||
String scsiControllerPattern = "(?i)\\b(scsi|lsilogic|lsilogicsas|lsisas1068|buslogic|pvscsi)\\b";
|
||||
if (finalRootDiskController.matches(scsiControllerPattern)) {
|
||||
s_logger.info(String.format("Data disk controller was not defined, but root disk is using SCSI controller [%s]." +
|
||||
"To ensure disk controllers are available for the data disks, the data disk controller is updated to match the root disk controller.", finalRootDiskController));
|
||||
vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER, finalRootDiskController);
|
||||
} else {
|
||||
s_logger.info("Data disk controller was not defined; defaulting to 'osdefault'.");
|
||||
vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER, "osdefault");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue