weizhouapache commented on a change in pull request #5769:
URL: https://github.com/apache/cloudstack/pull/5769#discussion_r771236809
##########
File path: server/src/main/java/com/cloud/network/NetworkServiceImpl.java
##########
@@ -1853,25 +1873,55 @@ public Network doInTransaction(TransactionStatus
status) throws InsufficientCapa
if (isSystem == null || !isSystem) {
if (!permittedAccounts.isEmpty()) {
- //get account level networks
-
networksToReturn.addAll(listAccountSpecificNetworks(buildNetworkSearchCriteria(sb,
keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId,
networkOfferingId,
- aclType, skipProjectNetworks, restartRequired,
specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId),
searchFilter, permittedAccounts));
- //get domain level networks
- if (domainId != null) {
+ if (Arrays.asList(Network.NetworkFilter.Account,
Network.NetworkFilter.AccountDomain,
Network.NetworkFilter.All).contains(networkFilter)) {
+ //get account level networks
+
networksToReturn.addAll(listAccountSpecificNetworks(buildNetworkSearchCriteria(sb,
keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId,
networkOfferingId,
+ aclType, skipProjectNetworks, restartRequired,
specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId),
searchFilter, permittedAccounts));
+ }
+ if (domainId != null &&
Arrays.asList(Network.NetworkFilter.Domain,
Network.NetworkFilter.AccountDomain,
Network.NetworkFilter.All).contains(networkFilter)) {
+ //get domain level networks
networksToReturn.addAll(listDomainLevelNetworks(buildNetworkSearchCriteria(sb,
keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId,
networkOfferingId,
aclType, true, restartRequired, specifyIpRanges,
vpcId, tags, display, vlanId, associatedNetworkId), searchFilter, domainId,
false));
}
+ if (Arrays.asList(Network.NetworkFilter.Shared,
Network.NetworkFilter.All).contains(networkFilter)) {
+ // get shared networks
+ Set<Long> networkIds = networksToReturn.stream()
+ .map(NetworkVO::getId)
+ .collect(Collectors.toSet());
+ List<NetworkVO> sharedNetworks =
listSharedNetworks(buildNetworkSearchCriteria(sb, keyword, id, isSystem,
zoneId, guestIpType, trafficType, physicalNetworkId, networkOfferingId,
+ aclType, skipProjectNetworks, restartRequired,
specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId),
searchFilter, permittedAccounts);
+ List<NetworkVO> sharedNetworksToReturn =
sharedNetworks.stream()
+ .filter(network -> !
networkIds.contains(network.getId()))
+ .collect(Collectors.toList());
+ networksToReturn.addAll(sharedNetworksToReturn);
+ }
} else {
- //add account specific networks
-
networksToReturn.addAll(listAccountSpecificNetworksByDomainPath(buildNetworkSearchCriteria(sb,
keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId,
networkOfferingId,
- aclType, skipProjectNetworks, restartRequired,
specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId),
searchFilter, path, isRecursive));
- //add domain specific networks of domain + parent domains
-
networksToReturn.addAll(listDomainSpecificNetworksByDomainPath(buildNetworkSearchCriteria(sb,
keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId,
networkOfferingId,
- aclType, skipProjectNetworks, restartRequired,
specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId),
searchFilter, path, isRecursive));
- //add networks of subdomains
- if (domainId == null) {
-
networksToReturn.addAll(listDomainLevelNetworks(buildNetworkSearchCriteria(sb,
keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId,
networkOfferingId,
- aclType, true, restartRequired, specifyIpRanges,
vpcId, tags, display, vlanId, associatedNetworkId), searchFilter,
caller.getDomainId(), true));
+ if (Arrays.asList(Network.NetworkFilter.Account,
Network.NetworkFilter.AccountDomain,
Network.NetworkFilter.All).contains(networkFilter)) {
+ //add account specific networks
+
networksToReturn.addAll(listAccountSpecificNetworksByDomainPath(buildNetworkSearchCriteria(sb,
keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId,
networkOfferingId,
+ aclType, skipProjectNetworks, restartRequired,
specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId),
searchFilter, path, isRecursive));
+ }
+ if (Arrays.asList(Network.NetworkFilter.Domain,
Network.NetworkFilter.AccountDomain,
Network.NetworkFilter.All).contains(networkFilter)) {
+ //add domain specific networks of domain + parent domains
+
networksToReturn.addAll(listDomainSpecificNetworksByDomainPath(buildNetworkSearchCriteria(sb,
keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId,
networkOfferingId,
+ aclType, skipProjectNetworks, restartRequired,
specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId),
searchFilter, path, isRecursive));
+ //add networks of subdomains
+ if (domainId == null) {
+
networksToReturn.addAll(listDomainLevelNetworks(buildNetworkSearchCriteria(sb,
keyword, id, isSystem, zoneId, guestIpType, trafficType, physicalNetworkId,
networkOfferingId,
+ aclType, true, restartRequired,
specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId),
searchFilter, caller.getDomainId(), true));
+ }
+ }
+ if (Arrays.asList(Network.NetworkFilter.Shared,
Network.NetworkFilter.All).contains(networkFilter)) {
+ // get shared networks
+ Set<Long> networkIds = networksToReturn.stream()
+ .map(NetworkVO::getId)
+ .collect(Collectors.toSet());
+ List<NetworkVO> sharedNetworks =
listSharedNetworksByDomainPath(buildNetworkSearchCriteria(sb, keyword, id,
isSystem, zoneId, guestIpType, trafficType, physicalNetworkId,
networkOfferingId,
+ aclType, skipProjectNetworks, restartRequired,
specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId),
searchFilter, path, isRecursive);
+ List<NetworkVO> sharedNetworksToReturn =
sharedNetworks.stream()
+ .filter(network -> !
networkIds.contains(network.getId()))
+ .collect(Collectors.toList());
+ networksToReturn.addAll(sharedNetworksToReturn);
Review comment:
@DaanHoogland done. thanks for review
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]