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

pearl11594 pushed a commit to branch fr03-nsx-reorder-acl-rules
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit bce5ebb6806ec7745f23cbbb7ff846cbd30d3db9
Author: Pearl Dsilva <pearl1...@gmail.com>
AuthorDate: Mon Jan 29 10:50:57 2024 -0500

    Nsx vpc routed mode (#5)
    
    * NSX: Fix VPC routed mode
    
    * NSX: VPC route mode
    
    * remove unnecessary changes
---
 .../java/org/apache/cloudstack/service/NsxGuestNetworkGuru.java     | 5 ++++-
 .../java/org/apache/cloudstack/service/NsxPublicNetworkGuru.java    | 6 +++++-
 server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java      | 6 +++---
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git 
a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxGuestNetworkGuru.java
 
b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxGuestNetworkGuru.java
index 9c153283b80..1482f8fdc6f 100644
--- 
a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxGuestNetworkGuru.java
+++ 
b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxGuestNetworkGuru.java
@@ -319,7 +319,10 @@ public class NsxGuestNetworkGuru extends GuestNetworkGuru 
implements NetworkMigr
             vpcName = vpc.getName();
         } else {
             LOGGER.debug(String.format("Creating a Tier 1 Gateway for the 
network %s before creating the NSX segment", networkVO.getName()));
-            boolean isSourceNatSupported = 
networkOfferingServiceMapDao.areServicesSupportedByNetworkOffering(networkVO.getNetworkOfferingId(),
 Network.Service.SourceNat);
+            long networkOfferingId = networkVO.getNetworkOfferingId();
+            NetworkOfferingVO networkOfferingVO = 
networkOfferingDao.findById(networkOfferingId);
+            boolean isSourceNatSupported = 
!NetworkOffering.NsxMode.ROUTED.name().equals(networkOfferingVO.getNsxMode()) &&
+                    
networkOfferingServiceMapDao.areServicesSupportedByNetworkOffering(networkVO.getNetworkOfferingId(),
 Network.Service.SourceNat);
             CreateNsxTier1GatewayCommand nsxTier1GatewayCommand =  new 
CreateNsxTier1GatewayCommand(domain.getId(), account.getId(), zone.getId(), 
networkVO.getId(), networkVO.getName(), false, isSourceNatSupported);
 
             NsxAnswer nsxAnswer = 
nsxControllerUtils.sendNsxCommand(nsxTier1GatewayCommand, zone.getId());
diff --git 
a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxPublicNetworkGuru.java
 
b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxPublicNetworkGuru.java
index 2e8127526b3..1b92a694317 100644
--- 
a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxPublicNetworkGuru.java
+++ 
b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxPublicNetworkGuru.java
@@ -29,6 +29,7 @@ import com.cloud.network.dao.IPAddressVO;
 import com.cloud.network.dao.NetworkVO;
 import com.cloud.network.guru.PublicNetworkGuru;
 import com.cloud.network.vpc.VpcOffering;
+import com.cloud.network.vpc.VpcOfferingVO;
 import com.cloud.network.vpc.VpcVO;
 import com.cloud.network.vpc.dao.VpcDao;
 import com.cloud.network.vpc.dao.VpcOfferingDao;
@@ -129,7 +130,10 @@ public class NsxPublicNetworkGuru extends 
PublicNetworkGuru {
                 long dataCenterId = vpc.getZoneId();
                 long resourceId = vpc.getId();
                 Network.Service[] services = { Network.Service.SourceNat };
-                boolean sourceNatEnabled = 
vpcOfferingServiceMapDao.areServicesSupportedByVpcOffering(vpc.getVpcOfferingId(),
 services);
+                long networkOfferingId = vpc.getVpcOfferingId();
+                VpcOfferingVO vpcVO = 
vpcOfferingDao.findById(networkOfferingId);
+                boolean sourceNatEnabled = 
!NetworkOffering.NsxMode.ROUTED.name().equals(vpcVO.getNsxMode()) &&
+                        
vpcOfferingServiceMapDao.areServicesSupportedByVpcOffering(vpc.getVpcOfferingId(),
 services);
 
                 s_logger.info(String.format("Creating Tier 1 Gateway for VPC 
%s", vpc.getName()));
                 boolean result = nsxService.createVpcNetwork(dataCenterId, 
accountId, domainId, resourceId, vpc.getName(), sourceNatEnabled);
diff --git a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java 
b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
index 17277b2f7dd..5f22e8470ef 100644
--- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
@@ -403,7 +403,7 @@ public class VpcManagerImpl extends ManagerBase implements 
VpcManager, VpcProvis
                         if (List.of(Service.UserData, Service.Dhcp, 
Service.Dns).contains(svc)) {
                             final Set<Provider> userDataProvider = 
Set.of(Provider.VPCVirtualRouter);
                             svcProviderMap.put(svc, userDataProvider);
-                        } else {
+                        } else if (Service.NetworkACL.equals(svc)){
                             svcProviderMap.put(svc, defaultProviders);
                         }
                     }
@@ -3189,8 +3189,8 @@ public class VpcManagerImpl extends ManagerBase 
implements VpcManager, VpcProvis
     @Override
     public boolean isSrcNatIpRequired(long vpcOfferingId) {
         final Map<Network.Service, Set<Network.Provider>> 
vpcOffSvcProvidersMap = getVpcOffSvcProvidersMap(vpcOfferingId);
-        return 
vpcOffSvcProvidersMap.get(Network.Service.SourceNat).contains(Network.Provider.VPCVirtualRouter)
 ||
-                
vpcOffSvcProvidersMap.get(Service.SourceNat).contains(Provider.Nsx);
+        return 
Objects.nonNull(vpcOffSvcProvidersMap.get(Network.Service.SourceNat)) && 
(vpcOffSvcProvidersMap.get(Network.Service.SourceNat).contains(Network.Provider.VPCVirtualRouter)
 ||
+                
vpcOffSvcProvidersMap.get(Service.SourceNat).contains(Provider.Nsx));
     }
 
     /**

Reply via email to