From 162c45f8fa95cb0ef9584999533990b727dc8445 Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 13 Oct 2025 09:09:13 +0200 Subject: [PATCH] api/server: list networks by name (#11470) * api/server: list networks by name * Update api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java --- .../api/command/user/network/ListNetworksCmd.java | 7 +++++++ .../java/com/cloud/network/NetworkServiceImpl.java | 11 ++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java index 0e8425b14b4..0eb5ddc5ebe 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java @@ -53,6 +53,9 @@ public class ListNetworksCmd extends BaseListRetrieveOnlyResourceCountCmd implem @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = NetworkResponse.class, description = "list networks by ID") private Long id; + @Parameter(name = ApiConstants.NAME, type = CommandType.STRING, description = "list networks by name", since = "4.22.0") + private String name; + @Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, description = "the zone ID of the network") private Long zoneId; @@ -125,6 +128,10 @@ public class ListNetworksCmd extends BaseListRetrieveOnlyResourceCountCmd implem return id; } + public String getName() { + return name; + } + public Long getZoneId() { return zoneId; } diff --git a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java index 8c86ed55df8..04e66d6e1b0 100644 --- a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java +++ b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java @@ -2376,6 +2376,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C @Override public Pair, Integer> searchForNetworks(ListNetworksCmd cmd) { Long id = cmd.getId(); + String name = cmd.getName(); String keyword = cmd.getKeyword(); Long zoneId = cmd.getZoneId(); Account caller = CallContext.current().getCallingAccount(); @@ -2554,7 +2555,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C Pair, Integer> result = new Pair<>(new ArrayList<>(), 0); if (BooleanUtils.isTrue(isSystem)) { - SearchCriteria sc = createNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, + SearchCriteria sc = createNetworkSearchCriteria(sb, name, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, networkOfferingId, null, restartRequired, specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId); addProjectNetworksConditionToSearch(sc, true); @@ -2567,7 +2568,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C addSharedNetworksToSearch(additionalSC, sb, networkFilter, permittedAccounts, path, isRecursive); if (CollectionUtils.isNotEmpty(additionalSC.getValues())) { - SearchCriteria sc = createNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, + SearchCriteria sc = createNetworkSearchCriteria(sb, name, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, networkOfferingId, aclType, restartRequired, specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId); sc.addAnd("id", SearchCriteria.Op.SC, additionalSC); @@ -2680,7 +2681,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C } } - private SearchCriteria createNetworkSearchCriteria(SearchBuilder sb, String keyword, Long id, + private SearchCriteria createNetworkSearchCriteria(SearchBuilder sb, String name, String keyword, Long id, Boolean isSystem, Long zoneId, String guestIpType, String trafficType, Long physicalNetworkId, Long networkOfferingId, String aclType, Boolean restartRequired, Boolean specifyIpRanges, Long vpcId, Map tags, Boolean display, String vlanId, Long associatedNetworkId) { @@ -2691,6 +2692,10 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C sc.setJoinParameters("networkOfferingSearch", "systemOnly", isSystem); } + if (name != null) { + sc.addAnd("name", SearchCriteria.Op.EQ, name); + } + if (keyword != null) { SearchCriteria ssc = _networksDao.createSearchCriteria(); ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%");