sureshanaparti commented on code in PR #9433:
URL: https://github.com/apache/cloudstack/pull/9433#discussion_r1728646360


##########
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:
   done



##########
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:
   done



-- 
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]

Reply via email to