You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2024/08/27 09:10:34 UTC
(cloudstack) branch 4.19 updated: [VMware] Update data disk controller same as the root disk controller type when it is not set in the VM detail (#9433)
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 <su...@gmail.com>
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");
}
}