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 a9ed0c62cab8..315e7bd70426 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 @@ -5041,8 +5041,8 @@ protected String getDiskPathFromDiskDef(DiskDef disk) { } } - // for example, path = /mnt/pool_uuid/disk_path/ - return token[3]; + // for example, path = /mnt/pool_uuid/disk_path/ or, for local storage, /var/lib/libvirt/images/disk_path + return token[token.length - 1]; } } return null; 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 fa204f806261..a361858e54ac 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 @@ -5979,6 +5979,14 @@ public void testGetDiskPathFromDiskDefForNFS() { Assert.assertEquals("filepath", diskPath); } + @Test + public void testGetDiskPathFromDiskDefForLocalStorage() { + DiskDef diskDef = new DiskDef(); + diskDef.defFileBasedDisk("/var/lib/libvirt/images/filepath", 0, DiskDef.DiskBus.VIRTIO, DiskDef.DiskFmtType.QCOW2); + String diskPath = libvirtComputingResourceSpy.getDiskPathFromDiskDef(diskDef); + Assert.assertEquals("filepath", diskPath); + } + @Test public void testGetDiskPathFromDiskDefForNFSWithNullPath() { DiskDef diskDef = new DiskDef(); diff --git a/server/src/main/java/com/cloud/server/StatsCollector.java b/server/src/main/java/com/cloud/server/StatsCollector.java index 3eec27d4f54d..e67a3994cbb0 100644 --- a/server/src/main/java/com/cloud/server/StatsCollector.java +++ b/server/src/main/java/com/cloud/server/StatsCollector.java @@ -1497,7 +1497,7 @@ public void doInTransactionWithoutResult(TransactionStatus status) { List volumes = _volsDao.search(sc_volume, null); if (CollectionUtils.isEmpty(volumes)) - break; + continue; VolumeVO volume = volumes.get(0); VmDiskStatisticsVO previousVmDiskStats = _vmDiskStatsDao.findBy(vm.getAccountId(), vm.getDataCenterId(), vmId, volume.getId()); @@ -1682,7 +1682,7 @@ protected void runInContext() { if (!List.of(ImageFormat.QCOW2, ImageFormat.VHD, ImageFormat.OVA, ImageFormat.RAW).contains(volume.getFormat()) && !List.of(Storage.StoragePoolType.PowerFlex, Storage.StoragePoolType.FiberChannel).contains(pool.getPoolType())) { logger.warn("Volume stats not implemented for this format type " + volume.getFormat()); - break; + continue; } } try {