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");
}
}