This is an automated email from the ASF dual-hosted git repository.

dahn pushed a commit to branch 4.19
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.19 by this push:
     new 9df783ca4be Filter out networks without access while getting networks 
with SG with free IPs (#9596)
9df783ca4be is described below

commit 9df783ca4be80ac028b4df985ddc9d723e024171
Author: Vishesh <vishes...@gmail.com>
AuthorDate: Fri Sep 20 20:13:54 2024 +0530

    Filter out networks without access while getting networks with SG with free 
IPs (#9596)
---
 api/src/main/java/com/cloud/network/NetworkModel.java            | 2 +-
 server/src/main/java/com/cloud/network/NetworkModelImpl.java     | 8 +++++++-
 server/src/main/java/com/cloud/vm/UserVmManagerImpl.java         | 4 ++--
 server/src/test/java/com/cloud/network/MockNetworkModelImpl.java | 2 +-
 server/src/test/java/com/cloud/vpc/MockNetworkModelImpl.java     | 2 +-
 5 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/api/src/main/java/com/cloud/network/NetworkModel.java 
b/api/src/main/java/com/cloud/network/NetworkModel.java
index 699dcbf6c50..ed3506c0da1 100644
--- a/api/src/main/java/com/cloud/network/NetworkModel.java
+++ b/api/src/main/java/com/cloud/network/NetworkModel.java
@@ -149,7 +149,7 @@ public interface NetworkModel {
 
     boolean areServicesSupportedByNetworkOffering(long networkOfferingId, 
Service... services);
 
-    Network getNetworkWithSGWithFreeIPs(Long zoneId);
+    Network getNetworkWithSGWithFreeIPs(Account account, Long zoneId);
 
     Network getNetworkWithSecurityGroupEnabled(Long zoneId);
 
diff --git a/server/src/main/java/com/cloud/network/NetworkModelImpl.java 
b/server/src/main/java/com/cloud/network/NetworkModelImpl.java
index 4088e9539ea..23018ab72fd 100644
--- a/server/src/main/java/com/cloud/network/NetworkModelImpl.java
+++ b/server/src/main/java/com/cloud/network/NetworkModelImpl.java
@@ -789,13 +789,19 @@ public class NetworkModelImpl extends ManagerBase 
implements NetworkModel, Confi
     }
 
     @Override
-    public NetworkVO getNetworkWithSGWithFreeIPs(Long zoneId) {
+    public NetworkVO getNetworkWithSGWithFreeIPs(Account account, Long zoneId) 
{
         List<NetworkVO> networks = 
_networksDao.listByZoneSecurityGroup(zoneId);
         if (networks == null || networks.isEmpty()) {
             return null;
         }
         NetworkVO ret_network = null;
         for (NetworkVO nw : networks) {
+            try {
+                checkAccountNetworkPermissions(account, nw);
+            } catch (PermissionDeniedException e) {
+                continue;
+            }
+
             List<VlanVO> vlans = _vlanDao.listVlansByNetworkId(nw.getId());
             for (VlanVO vlan : vlans) {
                 if (_ipAddressDao.countFreeIpsInVlan(vlan.getId()) > 0) {
diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java 
b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
index 3b48378b985..9d5a1be894b 100644
--- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
@@ -3653,7 +3653,7 @@ public class UserVmManagerImpl extends ManagerBase 
implements UserVmManager, Vir
 
         // If no network is specified, find system security group enabled 
network
         if (networkIdList == null || networkIdList.isEmpty()) {
-            Network networkWithSecurityGroup = 
_networkModel.getNetworkWithSGWithFreeIPs(zone.getId());
+            Network networkWithSecurityGroup = 
_networkModel.getNetworkWithSGWithFreeIPs(owner, zone.getId());
             if (networkWithSecurityGroup == null) {
                 throw new InvalidParameterValueException("No network with 
security enabled is found in zone id=" + zone.getUuid());
             }
@@ -8536,7 +8536,7 @@ public class UserVmManagerImpl extends ManagerBase 
implements UserVmManager, Vir
     private Network getNetworkForOvfNetworkMapping(DataCenter zone, Account 
owner) throws InsufficientCapacityException, ResourceAllocationException {
         Network network = null;
         if (zone.isSecurityGroupEnabled()) {
-            network = _networkModel.getNetworkWithSGWithFreeIPs(zone.getId());
+            network = _networkModel.getNetworkWithSGWithFreeIPs(owner, 
zone.getId());
             if (network == null) {
                 throw new InvalidParameterValueException("No network with 
security enabled is found in zone ID: " + zone.getUuid());
             }
diff --git a/server/src/test/java/com/cloud/network/MockNetworkModelImpl.java 
b/server/src/test/java/com/cloud/network/MockNetworkModelImpl.java
index 395be635aea..79f6e8dad35 100644
--- a/server/src/test/java/com/cloud/network/MockNetworkModelImpl.java
+++ b/server/src/test/java/com/cloud/network/MockNetworkModelImpl.java
@@ -237,7 +237,7 @@ public class MockNetworkModelImpl extends ManagerBase 
implements NetworkModel {
      * @see 
com.cloud.network.NetworkModel#getNetworkWithSGWithFreeIPs(java.lang.Long)
      */
     @Override
-    public NetworkVO getNetworkWithSGWithFreeIPs(Long zoneId) {
+    public NetworkVO getNetworkWithSGWithFreeIPs(Account account, Long zoneId) 
{
         // TODO Auto-generated method stub
         return null;
     }
diff --git a/server/src/test/java/com/cloud/vpc/MockNetworkModelImpl.java 
b/server/src/test/java/com/cloud/vpc/MockNetworkModelImpl.java
index ad332c00fa4..f0fb6d56a40 100644
--- a/server/src/test/java/com/cloud/vpc/MockNetworkModelImpl.java
+++ b/server/src/test/java/com/cloud/vpc/MockNetworkModelImpl.java
@@ -248,7 +248,7 @@ public class MockNetworkModelImpl extends ManagerBase 
implements NetworkModel {
      * @see 
com.cloud.network.NetworkModel#getNetworkWithSGWithFreeIPs(java.lang.Long)
      */
     @Override
-    public NetworkVO getNetworkWithSGWithFreeIPs(Long zoneId) {
+    public NetworkVO getNetworkWithSGWithFreeIPs(Account account, Long zoneId) 
{
         // TODO Auto-generated method stub
         return null;
     }

Reply via email to