From 6728b696cd0c17ca71fea666f8e51becafed28b1 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 30 Dec 2021 15:19:32 +0530 Subject: [PATCH] kvm: don't always force scsi controller for aarch64 VMs (#5802) * kvm: don't force scsi controller for aarch64 VMs This would allow use of virtio disk controller with Ceph, etc or as defined in the VM's root disk controller setting, rather than always enforce SCSI. Signed-off-by: Rohit Yadav * remove test that doesn't apply now Signed-off-by: Rohit Yadav * address review comment Signed-off-by: Rohit Yadav --- .../kvm/resource/LibvirtComputingResource.java | 10 ++-------- .../kvm/resource/LibvirtComputingResourceTest.java | 2 +- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java index 9684b7e2245..60d8e0865b2 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java @@ -3715,10 +3715,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv return null; } - if (_guestCpuArch != null && _guestCpuArch.equals("aarch64")) { - return DiskDef.DiskBus.SCSI; - } - String rootDiskController = details.get(VmDetailConstants.ROOT_DISK_CONTROLLER); if (StringUtils.isNotBlank(rootDiskController)) { s_logger.debug("Passed custom disk controller for ROOT disk " + rootDiskController); @@ -3752,10 +3748,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv } private DiskDef.DiskBus getGuestDiskModel(final String platformEmulator, boolean isUefiEnabled) { - if (_guestCpuArch != null && _guestCpuArch.equals("aarch64")) { - return DiskDef.DiskBus.SCSI; - } - if (platformEmulator == null) { return DiskDef.DiskBus.IDE; } else if (platformEmulator.startsWith("Other PV Virtio-SCSI")) { @@ -3766,6 +3758,8 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv return DiskDef.DiskBus.VIRTIO; } else if (isUefiEnabled && org.apache.commons.lang3.StringUtils.startsWithAny(platformEmulator, "Windows", "Other")) { return DiskDef.DiskBus.SATA; + } else if (_guestCpuArch != null && _guestCpuArch.equals("aarch64")) { + return DiskDef.DiskBus.SCSI; } else { return DiskDef.DiskBus.IDE; } diff --git a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java index c744299b345..4106cc05799 100644 --- a/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java +++ b/plugins/hypervisors/kvm/src/test/java/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java @@ -420,7 +420,7 @@ public class LibvirtComputingResourceTest { public void testCreateDevicesWithSCSIDisk() { VirtualMachineTO to = createDefaultVM(false); to.setDetails(new HashMap<>()); - libvirtComputingResourceSpy._guestCpuArch = "aarch64"; + to.setPlatformEmulator("Other PV Virtio-SCSI"); GuestDef guest = new GuestDef(); guest.setGuestType(GuestType.KVM);