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
This commit is contained in:
Wei Zhou 2025-10-13 09:09:13 +02:00 committed by GitHub
parent 0b9afe77ca
commit 162c45f8fa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 3 deletions

View File

@ -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") @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType = NetworkResponse.class, description = "list networks by ID")
private Long 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") @Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, description = "the zone ID of the network")
private Long zoneId; private Long zoneId;
@ -125,6 +128,10 @@ public class ListNetworksCmd extends BaseListRetrieveOnlyResourceCountCmd implem
return id; return id;
} }
public String getName() {
return name;
}
public Long getZoneId() { public Long getZoneId() {
return zoneId; return zoneId;
} }

View File

@ -2376,6 +2376,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
@Override @Override
public Pair<List<? extends Network>, Integer> searchForNetworks(ListNetworksCmd cmd) { public Pair<List<? extends Network>, Integer> searchForNetworks(ListNetworksCmd cmd) {
Long id = cmd.getId(); Long id = cmd.getId();
String name = cmd.getName();
String keyword = cmd.getKeyword(); String keyword = cmd.getKeyword();
Long zoneId = cmd.getZoneId(); Long zoneId = cmd.getZoneId();
Account caller = CallContext.current().getCallingAccount(); Account caller = CallContext.current().getCallingAccount();
@ -2554,7 +2555,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
Pair<List<NetworkVO>, Integer> result = new Pair<>(new ArrayList<>(), 0); Pair<List<NetworkVO>, Integer> result = new Pair<>(new ArrayList<>(), 0);
if (BooleanUtils.isTrue(isSystem)) { if (BooleanUtils.isTrue(isSystem)) {
SearchCriteria<NetworkVO> sc = createNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, SearchCriteria<NetworkVO> sc = createNetworkSearchCriteria(sb, name, keyword, id, isSystem, zoneId, guestIpType, trafficType,
physicalNetworkId, networkOfferingId, null, restartRequired, specifyIpRanges, physicalNetworkId, networkOfferingId, null, restartRequired, specifyIpRanges,
vpcId, tags, display, vlanId, associatedNetworkId); vpcId, tags, display, vlanId, associatedNetworkId);
addProjectNetworksConditionToSearch(sc, true); addProjectNetworksConditionToSearch(sc, true);
@ -2567,7 +2568,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
addSharedNetworksToSearch(additionalSC, sb, networkFilter, permittedAccounts, path, isRecursive); addSharedNetworksToSearch(additionalSC, sb, networkFilter, permittedAccounts, path, isRecursive);
if (CollectionUtils.isNotEmpty(additionalSC.getValues())) { if (CollectionUtils.isNotEmpty(additionalSC.getValues())) {
SearchCriteria<NetworkVO> sc = createNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, SearchCriteria<NetworkVO> sc = createNetworkSearchCriteria(sb, name, keyword, id, isSystem, zoneId, guestIpType,
trafficType, physicalNetworkId, networkOfferingId, aclType, restartRequired, specifyIpRanges, vpcId, trafficType, physicalNetworkId, networkOfferingId, aclType, restartRequired, specifyIpRanges, vpcId,
tags, display, vlanId, associatedNetworkId); tags, display, vlanId, associatedNetworkId);
sc.addAnd("id", SearchCriteria.Op.SC, additionalSC); sc.addAnd("id", SearchCriteria.Op.SC, additionalSC);
@ -2680,7 +2681,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
} }
} }
private SearchCriteria<NetworkVO> createNetworkSearchCriteria(SearchBuilder<NetworkVO> sb, String keyword, Long id, private SearchCriteria<NetworkVO> createNetworkSearchCriteria(SearchBuilder<NetworkVO> sb, String name, String keyword, Long id,
Boolean isSystem, Long zoneId, String guestIpType, String trafficType, Long physicalNetworkId, Boolean isSystem, Long zoneId, String guestIpType, String trafficType, Long physicalNetworkId,
Long networkOfferingId, String aclType, Boolean restartRequired, Long networkOfferingId, String aclType, Boolean restartRequired,
Boolean specifyIpRanges, Long vpcId, Map<String, String> tags, Boolean display, String vlanId, Long associatedNetworkId) { Boolean specifyIpRanges, Long vpcId, Map<String, String> tags, Boolean display, String vlanId, Long associatedNetworkId) {
@ -2691,6 +2692,10 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
sc.setJoinParameters("networkOfferingSearch", "systemOnly", isSystem); sc.setJoinParameters("networkOfferingSearch", "systemOnly", isSystem);
} }
if (name != null) {
sc.addAnd("name", SearchCriteria.Op.EQ, name);
}
if (keyword != null) { if (keyword != null) {
SearchCriteria<NetworkVO> ssc = _networksDao.createSearchCriteria(); SearchCriteria<NetworkVO> ssc = _networksDao.createSearchCriteria();
ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%"); ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%");