diff --git a/core/src/org/apache/cloudstack/storage/command/AttachCommand.java b/core/src/org/apache/cloudstack/storage/command/AttachCommand.java index 1f11352b588..d15a4e42da3 100644 --- a/core/src/org/apache/cloudstack/storage/command/AttachCommand.java +++ b/core/src/org/apache/cloudstack/storage/command/AttachCommand.java @@ -21,7 +21,6 @@ package org.apache.cloudstack.storage.command; import java.util.Map; -import com.cloud.agent.api.Command; import com.cloud.agent.api.to.DiskTO; public final class AttachCommand extends StorageSubSystemCommand { diff --git a/server/src/com/cloud/configuration/Config.java b/server/src/com/cloud/configuration/Config.java index 182ec50e300..0acc5e66c86 100644 --- a/server/src/com/cloud/configuration/Config.java +++ b/server/src/com/cloud/configuration/Config.java @@ -1219,7 +1219,7 @@ public enum Config { String.class, "vmware.root.disk.controller", "ide", - "Specify the default disk controller for root volumes, valid values are scsi, ide", + "Specify the default disk controller for root volumes, valid values are scsi, ide, osdefault. Please check documentation for more details on each of these values.", null), VmwareSystemVmNicDeviceType( "Advanced", diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java index 3f068af437e..c541ba3a974 100644 --- a/server/src/com/cloud/vm/UserVmManagerImpl.java +++ b/server/src/com/cloud/vm/UserVmManagerImpl.java @@ -3376,11 +3376,16 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Vir s_logger.info("guestOS is OSX : overwrite root disk controller to scsi, use smc and efi"); } else { String controllerSetting = _configDao.getValue("vmware.root.disk.controller"); - vm.setDetail(VmDetailConstants.ROOK_DISK_CONTROLLER, controllerSetting); - if (controllerSetting.equalsIgnoreCase("scsi")) { - vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER, "scsi"); - } else { - vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER, "osdefault"); + // Don't override if VM already has root/data disk controller detail + if (vm.getDetail(VmDetailConstants.ROOK_DISK_CONTROLLER) == null) { + vm.setDetail(VmDetailConstants.ROOK_DISK_CONTROLLER, controllerSetting); + } + if (vm.getDetail(VmDetailConstants.DATA_DISK_CONTROLLER) == null) { + if (controllerSetting.equalsIgnoreCase("scsi")) { + vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER, "scsi"); + } else { + vm.setDetail(VmDetailConstants.DATA_DISK_CONTROLLER, "osdefault"); + } } } } diff --git a/ui/scripts/templates.js b/ui/scripts/templates.js index ac739c631e4..c8c5b89df25 100644 --- a/ui/scripts/templates.js +++ b/ui/scripts/templates.js @@ -281,6 +281,26 @@ id: "ide", description: "ide" }); + items.push({ + id: "osdefault", + description: "osdefault" + }); + items.push({ + id: "pvscsi", + description: "pvscsi" + }); + items.push({ + id: "lsilogic", + description: "lsilogic" + }); + items.push({ + id: "lsisas1068", + description: "lsilogicsas" + }); + items.push({ + id: "buslogic", + description: "buslogic" + }); args.response.success({ data: items });