Skip to content

Commit 3b4a8fc

Browse files
authored
api: List networks using networkofferingid (#4258)
Add extra parameter for listNetworks command to list all networks using networkofferingid
1 parent 9b6983f commit 3b4a8fc

4 files changed

Lines changed: 38 additions & 14 deletions

File tree

api/src/main/java/org/apache/cloudstack/api/command/user/network/ListNetworksCmd.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.ArrayList;
2020
import java.util.List;
2121

22+
import org.apache.cloudstack.api.response.NetworkOfferingResponse;
2223
import org.apache.log4j.Logger;
2324

2425
import org.apache.cloudstack.acl.RoleType;
@@ -88,6 +89,9 @@ public class ListNetworksCmd extends BaseListTaggedResourcesCmd implements UserC
8889
@Parameter(name = ApiConstants.DISPLAY_NETWORK, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin})
8990
private Boolean display;
9091

92+
@Parameter(name = ApiConstants.NETWORK_OFFERING_ID, type = CommandType.UUID, entityType = NetworkOfferingResponse.class, description = "list networks by network offering ID")
93+
private Long networkOfferingId;
94+
9195
/////////////////////////////////////////////////////
9296
/////////////////// Accessors ///////////////////////
9397
/////////////////////////////////////////////////////
@@ -144,6 +148,10 @@ public Boolean getForVpc() {
144148
return forVpc;
145149
}
146150

151+
public Long getNetworkOfferingId() {
152+
return networkOfferingId;
153+
}
154+
147155
@Override
148156
public Boolean getDisplay() {
149157
if (display != null) {

server/src/main/java/com/cloud/network/NetworkServiceImpl.java

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1551,6 +1551,7 @@ public Pair<List<? extends Network>, Integer> searchForNetworks(ListNetworksCmd
15511551
Map<String, String> tags = cmd.getTags();
15521552
Boolean forVpc = cmd.getForVpc();
15531553
Boolean display = cmd.getDisplay();
1554+
Long networkOfferingId = cmd.getNetworkOfferingId();
15541555

15551556
// 1) default is system to false if not specified
15561557
// 2) reset parameter to false if it's specified by the regular user
@@ -1679,29 +1680,29 @@ public Pair<List<? extends Network>, Integer> searchForNetworks(ListNetworksCmd
16791680
if (isSystem == null || !isSystem) {
16801681
if (!permittedAccounts.isEmpty()) {
16811682
//get account level networks
1682-
networksToReturn.addAll(listAccountSpecificNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, aclType,
1683-
skipProjectNetworks, restartRequired, specifyIpRanges, vpcId, tags, display), searchFilter, permittedAccounts));
1683+
networksToReturn.addAll(listAccountSpecificNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, networkOfferingId,
1684+
aclType, skipProjectNetworks, restartRequired, specifyIpRanges, vpcId, tags, display), searchFilter, permittedAccounts));
16841685
//get domain level networks
16851686
if (domainId != null) {
1686-
networksToReturn.addAll(listDomainLevelNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, aclType, true,
1687-
restartRequired, specifyIpRanges, vpcId, tags, display), searchFilter, domainId, false));
1687+
networksToReturn.addAll(listDomainLevelNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, networkOfferingId,
1688+
aclType, true, restartRequired, specifyIpRanges, vpcId, tags, display), searchFilter, domainId, false));
16881689
}
16891690
} else {
16901691
//add account specific networks
1691-
networksToReturn.addAll(listAccountSpecificNetworksByDomainPath(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, aclType,
1692-
skipProjectNetworks, restartRequired, specifyIpRanges, vpcId, tags, display), searchFilter, path, isRecursive));
1692+
networksToReturn.addAll(listAccountSpecificNetworksByDomainPath(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, networkOfferingId,
1693+
aclType, skipProjectNetworks, restartRequired, specifyIpRanges, vpcId, tags, display), searchFilter, path, isRecursive));
16931694
//add domain specific networks of domain + parent domains
1694-
networksToReturn.addAll(listDomainSpecificNetworksByDomainPath(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, aclType,
1695-
skipProjectNetworks, restartRequired, specifyIpRanges, vpcId, tags, display), searchFilter, path, isRecursive));
1695+
networksToReturn.addAll(listDomainSpecificNetworksByDomainPath(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, networkOfferingId,
1696+
aclType, skipProjectNetworks, restartRequired, specifyIpRanges, vpcId, tags, display), searchFilter, path, isRecursive));
16961697
//add networks of subdomains
16971698
if (domainId == null) {
1698-
networksToReturn.addAll(listDomainLevelNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, aclType, true,
1699-
restartRequired, specifyIpRanges, vpcId, tags, display), searchFilter, caller.getDomainId(), true));
1699+
networksToReturn.addAll(listDomainLevelNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, networkOfferingId,
1700+
aclType, true, restartRequired, specifyIpRanges, vpcId, tags, display), searchFilter, caller.getDomainId(), true));
17001701
}
17011702
}
17021703
} else {
1703-
networksToReturn = _networksDao.search(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, null, skipProjectNetworks,
1704-
restartRequired, specifyIpRanges, vpcId, tags, display), searchFilter);
1704+
networksToReturn = _networksDao.search(buildNetworkSearchCriteria(sb, keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId, networkOfferingId,
1705+
null, skipProjectNetworks, restartRequired, specifyIpRanges, vpcId, tags, display), searchFilter);
17051706
}
17061707

17071708
if (supportedServicesStr != null && !supportedServicesStr.isEmpty() && !networksToReturn.isEmpty()) {
@@ -1748,8 +1749,10 @@ public Pair<List<? extends Network>, Integer> searchForNetworks(ListNetworksCmd
17481749
return new Pair<List<? extends Network>, Integer>(networksToReturn, networksToReturn.size());
17491750
}
17501751

1751-
private SearchCriteria<NetworkVO> buildNetworkSearchCriteria(SearchBuilder<NetworkVO> sb, String keyword, Long id, Boolean isSystem, Long zoneId, String guestIpType, String trafficType,
1752-
Long physicalNetworkId, String aclType, boolean skipProjectNetworks, Boolean restartRequired, Boolean specifyIpRanges, Long vpcId, Map<String, String> tags, Boolean display) {
1752+
private SearchCriteria<NetworkVO> buildNetworkSearchCriteria(SearchBuilder<NetworkVO> sb, String keyword, Long id,
1753+
Boolean isSystem, Long zoneId, String guestIpType, String trafficType, Long physicalNetworkId,
1754+
Long networkOfferingId, String aclType, boolean skipProjectNetworks, Boolean restartRequired,
1755+
Boolean specifyIpRanges, Long vpcId, Map<String, String> tags, Boolean display) {
17531756

17541757
SearchCriteria<NetworkVO> sc = sb.create();
17551758

@@ -1819,6 +1822,10 @@ private SearchCriteria<NetworkVO> buildNetworkSearchCriteria(SearchBuilder<Netwo
18191822
}
18201823
}
18211824

1825+
if (networkOfferingId != null) {
1826+
sc.addAnd("networkOfferingId", SearchCriteria.Op.EQ, networkOfferingId);
1827+
}
1828+
18221829
return sc;
18231830
}
18241831

ui/scripts/configuration.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4517,6 +4517,10 @@
45174517

45184518
detailView: {
45194519
name: 'label.network.offering.details',
4520+
viewAll: {
4521+
label: 'label.networks',
4522+
path: 'network'
4523+
},
45204524
actions: {
45214525
edit: {
45224526
label: 'label.edit',

ui/scripts/network.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -946,6 +946,11 @@
946946
var data = {};
947947
listViewDataProvider(args, data);
948948

949+
if ("networkOfferings" in args.context) {
950+
$.extend(data, {
951+
networkofferingid: args.context.networkOfferings[0].id
952+
});
953+
}
949954
if ("routers" in args.context) {
950955
if ("vpcid" in args.context.routers[0]) {
951956
$.extend(data, {

0 commit comments

Comments
 (0)