@@ -4650,16 +4650,25 @@ private void updateVMDiskController(UserVmVO vm, Map<String, String> customParam
46504650 vm .setDetail (VmDetailConstants .DATA_DISK_CONTROLLER , dataDiskControllerSetting );
46514651 }
46524652
4653- String controllerSetting = StringUtils .defaultIfEmpty (_configDao .getValue (Config .VmwareRootDiskControllerType .key ()),
4654- Config .VmwareRootDiskControllerType .getDefaultValue ());
4655-
46564653 // Don't override if VM already has root/data disk controller detail
46574654 if (vm .getDetail (VmDetailConstants .ROOT_DISK_CONTROLLER ) == null ) {
4658- vm .setDetail (VmDetailConstants .ROOT_DISK_CONTROLLER , controllerSetting );
4655+ String vmwareRootDiskControllerTypeFromSetting = StringUtils .defaultIfEmpty (_configDao .getValue (Config .VmwareRootDiskControllerType .key ()),
4656+ Config .VmwareRootDiskControllerType .getDefaultValue ());
4657+ vm .setDetail (VmDetailConstants .ROOT_DISK_CONTROLLER , vmwareRootDiskControllerTypeFromSetting );
4658+ if (vm .getDetail (VmDetailConstants .DATA_DISK_CONTROLLER ) == null ) {
4659+ if (vmwareRootDiskControllerTypeFromSetting .equalsIgnoreCase ("scsi" )) {
4660+ vm .setDetail (VmDetailConstants .DATA_DISK_CONTROLLER , "scsi" );
4661+ }
4662+ }
46594663 }
4664+
46604665 if (vm .getDetail (VmDetailConstants .DATA_DISK_CONTROLLER ) == null ) {
4661- if (controllerSetting .equalsIgnoreCase ("scsi" )) {
4662- vm .setDetail (VmDetailConstants .DATA_DISK_CONTROLLER , "scsi" );
4666+ String finalRootDiskController = vm .getDetail (VmDetailConstants .ROOT_DISK_CONTROLLER );
4667+ // Set the data disk controller detail same as the final scsi root disk controller if VM doesn't have data disk controller detail
4668+ // This is to ensure the disk controller is available for the data disks, as all the SCSI controllers are created with same controller type
4669+ String scsiControllerPattern = "(?i)\\ b(scsi|lsilogic|lsilogicsas|lsisas1068|buslogic|pvscsi)\\ b" ;
4670+ if (finalRootDiskController .matches (scsiControllerPattern )) {
4671+ vm .setDetail (VmDetailConstants .DATA_DISK_CONTROLLER , finalRootDiskController );
46634672 } else {
46644673 vm .setDetail (VmDetailConstants .DATA_DISK_CONTROLLER , "osdefault" );
46654674 }
0 commit comments