From bfc857aefb5d32b0e350abc82c0d844661aadaee Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 23 Dec 2021 02:59:01 +0530 Subject: [PATCH 1/3] 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 --- .../hypervisor/kvm/resource/LibvirtComputingResource.java | 8 -------- 1 file changed, 8 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 46763a151f9c..c35fc97d3f92 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 @@ -3713,10 +3713,6 @@ public DiskDef.DiskBus getDiskModelFromVMDetail(final VirtualMachineTO vmTO) { 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); @@ -3750,10 +3746,6 @@ public DiskDef.DiskBus getDataDiskModelFromVMDetail(final VirtualMachineTO vmTO) } 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")) { From 81709021ffe11f26ee351cdc8b9a099404893673 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Thu, 23 Dec 2021 14:52:48 +0530 Subject: [PATCH 2/3] remove test that doesn't apply now Signed-off-by: Rohit Yadav --- .../resource/LibvirtComputingResource.java | 2 ++ .../LibvirtComputingResourceTest.java | 19 ------------------- 2 files changed, 2 insertions(+), 19 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 c35fc97d3f92..b28e8ac8368e 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 @@ -3756,6 +3756,8 @@ private DiskDef.DiskBus getGuestDiskModel(final String platformEmulator, boolean 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 c744299b3453..c47bcf01723f 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 @@ -416,25 +416,6 @@ public void testCreateDevicesDef() { verifyDevices(devicesDef, to); } - @Test - public void testCreateDevicesWithSCSIDisk() { - VirtualMachineTO to = createDefaultVM(false); - to.setDetails(new HashMap<>()); - libvirtComputingResourceSpy._guestCpuArch = "aarch64"; - - GuestDef guest = new GuestDef(); - guest.setGuestType(GuestType.KVM); - - DevicesDef devicesDef = libvirtComputingResourceSpy.createDevicesDef(to, guest, to.getCpus() + 1, false); - verifyDevices(devicesDef, to); - - Document domainDoc = parse(devicesDef.toString()); - assertNodeExists(domainDoc, "/devices/controller[@type='scsi']"); - assertNodeExists(domainDoc, "/devices/controller[@model='virtio-scsi']"); - assertNodeExists(domainDoc, "/devices/controller/address[@type='pci']"); - assertNodeExists(domainDoc, "/devices/controller/driver[@queues='" + (to.getCpus() + 1) + "']"); - } - @Test public void testConfigureGuestAndSystemVMToUseKVM() { VirtualMachineTO to = createDefaultVM(false); From 02a643a8cacbaacad5c9e4b6af08aae004309738 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 29 Dec 2021 13:47:20 +0530 Subject: [PATCH 3/3] address review comment Signed-off-by: Rohit Yadav --- .../LibvirtComputingResourceTest.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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 c47bcf01723f..4106cc05799b 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 @@ -416,6 +416,25 @@ public void testCreateDevicesDef() { verifyDevices(devicesDef, to); } + @Test + public void testCreateDevicesWithSCSIDisk() { + VirtualMachineTO to = createDefaultVM(false); + to.setDetails(new HashMap<>()); + to.setPlatformEmulator("Other PV Virtio-SCSI"); + + GuestDef guest = new GuestDef(); + guest.setGuestType(GuestType.KVM); + + DevicesDef devicesDef = libvirtComputingResourceSpy.createDevicesDef(to, guest, to.getCpus() + 1, false); + verifyDevices(devicesDef, to); + + Document domainDoc = parse(devicesDef.toString()); + assertNodeExists(domainDoc, "/devices/controller[@type='scsi']"); + assertNodeExists(domainDoc, "/devices/controller[@model='virtio-scsi']"); + assertNodeExists(domainDoc, "/devices/controller/address[@type='pci']"); + assertNodeExists(domainDoc, "/devices/controller/driver[@queues='" + (to.getCpus() + 1) + "']"); + } + @Test public void testConfigureGuestAndSystemVMToUseKVM() { VirtualMachineTO to = createDefaultVM(false);