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 <[email protected]>
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;
}