winterhazel commented on code in PR #9433:
URL: https://github.com/apache/cloudstack/pull/9433#discussion_r1727823850
##########
server/src/main/java/com/cloud/vm/UserVmManagerImpl.java:
##########
@@ -4650,16 +4650,20 @@ private void updateVMDiskController(UserVmVO vm,
Map<String, String> customParam
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)) {
+ vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER,
finalRootDiskController);
} else {
vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER,
"osdefault");
Review Comment:
```suggestion
s_logger.info("Data disk controller was not defined;
defaulting to 'osdefault'.");
vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER,
"osdefault");
```
##########
server/src/main/java/com/cloud/vm/UserVmManagerImpl.java:
##########
@@ -4650,16 +4650,20 @@ private void updateVMDiskController(UserVmVO vm,
Map<String, String> customParam
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)) {
+ vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER,
finalRootDiskController);
Review Comment:
```suggestion
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, we will update the data disk
controllers to match the root disk controller.", finalRootDiskController))
vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER,
finalRootDiskController);
```
Also, I would like to add some logs here to inform how we're choosing data
disk controllers
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]