This is an automated email from the ASF dual-hosted git repository.

dahn pushed a commit to branch 4.19
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.19 by this push:
     new 11497c601fd [VMware] Update data disk controller same as the root disk 
controller type when it is not set in the VM detail (#9433)
11497c601fd is described below

commit 11497c601fdd91fac6f58377fcdbbfd5fb02b753
Author: Suresh Kumar Anaparti <[email protected]>
AuthorDate: Tue Aug 27 14:40:28 2024 +0530

    [VMware] Update data disk controller same as the root disk controller type 
when it is not set in the VM detail (#9433)
---
 .../src/main/java/com/cloud/vm/UserVmManagerImpl.java | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java 
b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
index 1176fb31a3e..3b48378b985 100644
--- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
@@ -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");
                 }
             }

Reply via email to