This is an automated email from the ASF dual-hosted git repository.
shwstppr pushed a commit to branch 4.17
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.17 by this push:
new b62f59ac956 Fixed list networks in projects after setting network
permissions (#6546)
b62f59ac956 is described below
commit b62f59ac956f9d8188fe1678d6d20d0b56dd2c93
Author: Harikrishna <[email protected]>
AuthorDate: Sun Jul 31 16:45:36 2022 +0530
Fixed list networks in projects after setting network permissions (#6546)
This PR fixes #6544 where it could not list networks in a project even
after network permissions are set.
* Added test cases to existing component tests to test network permissions
* Moved test_network_permissions.py from component to smoke tests
* Added test_network_permissions to travis.yml under smoke tests
---
.travis.yml | 2 +-
.../java/com/cloud/network/NetworkServiceImpl.java | 10 ++++----
.../test_network_permissions.py | 29 ++++++++++++++++++++++
3 files changed, 35 insertions(+), 6 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index 365de7dcc2c..eb51ab9ec8b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -78,6 +78,7 @@ env:
smoke/test_nested_virtualization
smoke/test_network
smoke/test_network_acl
+ smoke/test_network_permissions
smoke/test_nic
smoke/test_nic_adapter_type
smoke/test_non_contigiousvlan
@@ -131,7 +132,6 @@ env:
- TESTS="component/test_acl_sharednetwork
component/test_acl_sharednetwork_deployVM-impersonation
- component/test_network_permissions
component/test_user_private_gateway
component/test_user_shared_network"
diff --git a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
index cb6e2a526d6..a3a3e4d9702 100644
--- a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
@@ -2022,7 +2022,7 @@ public class NetworkServiceImpl extends ManagerBase
implements NetworkService, C
if (Arrays.asList(Network.NetworkFilter.Shared,
Network.NetworkFilter.All).contains(networkFilter)) {
// get shared networks
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);
+ aclType, true, restartRequired, specifyIpRanges,
vpcId, tags, display, vlanId, associatedNetworkId), searchFilter,
permittedAccounts);
addNetworksToReturnIfNotExist(networksToReturn,
sharedNetworks);
}
@@ -2035,23 +2035,23 @@ public class NetworkServiceImpl extends ManagerBase
implements NetworkService, C
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));
+ aclType, true, 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));
+ 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
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);
+ aclType, true, restartRequired, specifyIpRanges,
vpcId, tags, display, vlanId, associatedNetworkId), searchFilter, path,
isRecursive);
addNetworksToReturnIfNotExist(networksToReturn,
sharedNetworks);
}
}
} else {
networksToReturn =
_networksDao.search(buildNetworkSearchCriteria(sb, keyword, id, isSystem,
zoneId, guestIpType, trafficType, physicalNetworkId, networkOfferingId,
- null, skipProjectNetworks, restartRequired,
specifyIpRanges, vpcId, tags, display, vlanId, associatedNetworkId),
searchFilter);
+ null, true, restartRequired, specifyIpRanges, vpcId, tags,
display, vlanId, associatedNetworkId), searchFilter);
}
if (supportedServicesStr != null && !supportedServicesStr.isEmpty() &&
!networksToReturn.isEmpty()) {
diff --git a/test/integration/component/test_network_permissions.py
b/test/integration/smoke/test_network_permissions.py
similarity index 94%
rename from test/integration/component/test_network_permissions.py
rename to test/integration/smoke/test_network_permissions.py
index b6c545f1027..1b4a331f260 100644
--- a/test/integration/component/test_network_permissions.py
+++ b/test/integration/smoke/test_network_permissions.py
@@ -758,3 +758,32 @@ class TestNetworkPermissions(cloudstackTestCase):
command = """self.reset_network_permission({apiclient},
self.user_network, expected=True)"""
self.exec_command("self.otheruser_apiclient", command, expected=False)
self.exec_command("self.user_apiclient", command, expected=True)
+
+ @attr(tags=["advanced"], required_hardware="false")
+ def test_05_list_networks_under_project(self):
+ """ Testing list networks under a project """
+ self.create_network_permission(self.apiclient, self.user_network,
self.domain_admin, self.project, expected=True)
+ self.list_network(self.apiclient, self.domain_admin,
self.user_network, self.project, None, expected=True)
+
+ self.remove_network_permission(self.apiclient, self.user_network,
self.domain_admin, self.project, expected=True)
+ self.list_network(self.apiclient, self.domain_admin,
self.user_network, self.project, None, expected=False)
+
+ @attr(tags=["advanced"], required_hardware="false")
+ def test_06_list_networks_under_account(self):
+ """ Testing list networks under a domain admin account and user
account """
+ self.create_network_permission(self.apiclient, self.user_network,
self.domain_admin, None, expected=True)
+ self.list_network(self.apiclient, self.domain_admin,
self.user_network, None, None, expected=True)
+ self.list_network(self.domainadmin_apiclient, self.domain_admin,
self.user_network, None, None, expected=True)
+ self.list_network(self.user_apiclient, self.domain_admin,
self.user_network, None, None, expected=False)
+
+ self.remove_network_permission(self.apiclient, self.user_network,
self.domain_admin, None, expected=True)
+ self.list_network(self.apiclient, self.domain_admin,
self.user_network, None, None, expected=False)
+ self.list_network(self.domainadmin_apiclient, self.domain_admin,
self.user_network, None, None, expected=False)
+
+ self.create_network_permission(self.apiclient, self.user_network,
self.other_user, None, expected=True)
+ self.list_network(self.apiclient, self.other_user, self.user_network,
None, None, expected=True)
+ self.list_network(self.otheruser_apiclient, self.other_user,
self.user_network, None, None, expected=True)
+
+ self.remove_network_permission(self.apiclient, self.user_network,
self.other_user, None, expected=True)
+ self.list_network(self.apiclient, self.other_user, self.user_network,
None, None, expected=False)
+ self.list_network(self.otheruser_apiclient, self.other_user,
self.user_network, None, None, expected=False)
\ No newline at end of file