From f379d789635a140fd6ea287d1d4384743328fc56 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 28 Nov 2025 09:29:10 +0100 Subject: [PATCH 1/4] ui: fix section search filter (#12146) Signed-off-by: Abhishek Kumar --- ui/src/views/AutogenView.vue | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ui/src/views/AutogenView.vue b/ui/src/views/AutogenView.vue index b1f26a17f8f..a01e300c1c9 100644 --- a/ui/src/views/AutogenView.vue +++ b/ui/src/views/AutogenView.vue @@ -1821,8 +1821,13 @@ export default { }, onSearch (opts) { const query = Object.assign({}, this.$route.query) - const searchFilters = this.$route?.meta?.searchFilters || [] - searchFilters.forEach(key => delete query[key]) + let searchFilters = this.$route?.meta?.searchFilters || [] + if (typeof searchFilters === 'function') { + searchFilters = searchFilters() + } + if (Array.isArray(searchFilters)) { + searchFilters.forEach(key => delete query[key]) + } delete query.name delete query.templatetype delete query.keyword From 44119cf34fcbbd12086a694cbc2cd06abe9bfb9d Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Fri, 28 Nov 2025 10:29:18 +0100 Subject: [PATCH 2/4] ui: fix dsiple managementservermetricsresponse - agentcount (#12148) Signed-off-by: Abhishek Kumar --- ui/src/config/section/infra/managementServers.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/src/config/section/infra/managementServers.js b/ui/src/config/section/infra/managementServers.js index bc7b42d9cf0..1466a440296 100644 --- a/ui/src/config/section/infra/managementServers.js +++ b/ui/src/config/section/infra/managementServers.js @@ -26,8 +26,8 @@ export default { permission: ['listManagementServersMetrics'], resourceType: 'ManagementServer', columns: () => { - const fields = ['name', 'state', 'ipaddress', 'version', 'osdistribution', 'agentcount'] - const metricsFields = ['collectiontime', 'availableprocessors', 'cpuload', 'heapmemoryused'] + const fields = ['name', 'state', 'ipaddress', 'version', 'osdistribution'] + const metricsFields = ['agentcount', 'collectiontime', 'availableprocessors', 'cpuload', 'heapmemoryused'] if (store.getters.metrics) { fields.push(...metricsFields) } From 516012a0b492ef8613f919c48bad950cc541bd97 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Fri, 28 Nov 2025 15:44:00 +0100 Subject: [PATCH 3/4] ceph: fix offline volume migration between ceph pools (#12103) --- .../cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java index e8924ecf5eb..87544cfaa9d 100644 --- a/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java +++ b/plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java @@ -1689,7 +1689,11 @@ public class LibvirtStorageAdaptor implements StorageAdaptor { */ srcFile = new QemuImgFile(KVMPhysicalDisk.RBDStringBuilder(srcPool, sourcePath)); srcFile.setFormat(sourceFormat); - destFile = new QemuImgFile(destPath); + if (destPool.getType() == StoragePoolType.RBD) { + destFile = new QemuImgFile(KVMPhysicalDisk.RBDStringBuilder(destPool, destPath)); + } else { + destFile = new QemuImgFile(destPath); + } destFile.setFormat(destFormat); try { From 243f566a603a6215505342d93d45a67d5386251e Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Mon, 1 Dec 2025 08:19:09 +0100 Subject: [PATCH 4/4] refactor: add null check for BroadcastDomainType retrievals (#11572) Signed-off-by: Abhishek Kumar --- .../main/java/com/cloud/network/Networks.java | 12 ++++++------ .../java/com/cloud/network/NetworksTest.java | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/api/src/main/java/com/cloud/network/Networks.java b/api/src/main/java/com/cloud/network/Networks.java index dfa0ddb84ca..8e7399bb21d 100644 --- a/api/src/main/java/com/cloud/network/Networks.java +++ b/api/src/main/java/com/cloud/network/Networks.java @@ -78,7 +78,7 @@ public class Networks { } @Override public String getValueFrom(URI uri) { - return uri.getAuthority(); + return uri == null ? null : uri.getAuthority(); } }, Vswitch("vs", String.class), LinkLocal(null, null), Vnet("vnet", Long.class), Storage("storage", Integer.class), Lswitch("lswitch", String.class) { @@ -96,7 +96,7 @@ public class Networks { */ @Override public String getValueFrom(URI uri) { - return uri.getSchemeSpecificPart(); + return uri == null ? null : uri.getSchemeSpecificPart(); } }, Mido("mido", String.class), Pvlan("pvlan", String.class), @@ -176,7 +176,7 @@ public class Networks { * @return the scheme as BroadcastDomainType */ public static BroadcastDomainType getSchemeValue(URI uri) { - return toEnumValue(uri.getScheme()); + return toEnumValue(uri == null ? null : uri.getScheme()); } /** @@ -190,7 +190,7 @@ public class Networks { if (com.cloud.dc.Vlan.UNTAGGED.equalsIgnoreCase(str)) { return Native; } - return getSchemeValue(new URI(str)); + return getSchemeValue(str == null ? null : new URI(str)); } /** @@ -219,7 +219,7 @@ public class Networks { * @return the host part as String */ public String getValueFrom(URI uri) { - return uri.getHost(); + return uri == null ? null : uri.getHost(); } /** @@ -242,7 +242,7 @@ public class Networks { * @throws URISyntaxException the string is not even an uri */ public static String getValue(String uriString) throws URISyntaxException { - return getValue(new URI(uriString)); + return getValue(uriString == null ? null : new URI(uriString)); } /** diff --git a/api/src/test/java/com/cloud/network/NetworksTest.java b/api/src/test/java/com/cloud/network/NetworksTest.java index ef582924342..6f0f3fbd1ef 100644 --- a/api/src/test/java/com/cloud/network/NetworksTest.java +++ b/api/src/test/java/com/cloud/network/NetworksTest.java @@ -37,6 +37,24 @@ public class NetworksTest { public void setUp() { } + @Test + public void nullBroadcastDomainTypeTest() throws URISyntaxException { + BroadcastDomainType type = BroadcastDomainType.getTypeOf(null); + Assert.assertEquals("a null uri should mean a broadcasttype of undecided", BroadcastDomainType.UnDecided, type); + } + + @Test + public void nullBroadcastDomainTypeValueTest() { + URI uri = null; + Assert.assertNull(BroadcastDomainType.getValue(uri)); + } + + @Test + public void nullBroadcastDomainTypeStringValueTest() throws URISyntaxException { + String uriString = null; + Assert.assertNull(BroadcastDomainType.getValue(uriString)); + } + @Test public void emptyBroadcastDomainTypeTest() throws URISyntaxException { BroadcastDomainType type = BroadcastDomainType.getTypeOf("");