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 + "%");