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

pearl11594 pushed a commit to branch netris-phase2-vpc
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 7d57af34b86815cac2a6994cc9c90cea0a7695bf
Author: Pearl Dsilva <pearl1...@gmail.com>
AuthorDate: Sun Sep 29 19:44:02 2024 -0400

    Add routed mode offerings for Netris VPC (#3)
    
    * Add routed mode offerings for Netris VPC
    
    * update vpc offering name
    
    * generalize the offering creation method for network providers
    
    * log
    
    * remove debug log
---
 api/src/main/java/com/cloud/network/Network.java   |  1 +
 .../java/com/cloud/network/vpc/VpcOffering.java    |  1 +
 .../java/com/cloud/offering/NetworkOffering.java   |  1 +
 .../java/com/cloud/network/vpc/VpcManagerImpl.java | 18 +++++++
 .../com/cloud/server/ConfigurationServerImpl.java  | 63 ++++++++++++----------
 5 files changed, 55 insertions(+), 29 deletions(-)

diff --git a/api/src/main/java/com/cloud/network/Network.java 
b/api/src/main/java/com/cloud/network/Network.java
index d3bc5005cb7..dc94932e31f 100644
--- a/api/src/main/java/com/cloud/network/Network.java
+++ b/api/src/main/java/com/cloud/network/Network.java
@@ -206,6 +206,7 @@ public interface Network extends ControlledEntity, 
StateObject<Network.State>, I
         public static final Provider Tungsten = new Provider("Tungsten", 
false);
 
         public static final Provider Nsx = new Provider("Nsx", false);
+        public static final Provider Netris = new Provider("Netris", false);
 
         private final String name;
         private final boolean isExternal;
diff --git a/api/src/main/java/com/cloud/network/vpc/VpcOffering.java 
b/api/src/main/java/com/cloud/network/vpc/VpcOffering.java
index 38263f59667..1358b13a4fe 100644
--- a/api/src/main/java/com/cloud/network/vpc/VpcOffering.java
+++ b/api/src/main/java/com/cloud/network/vpc/VpcOffering.java
@@ -32,6 +32,7 @@ public interface VpcOffering extends InternalIdentity, 
Identity {
     public static final String redundantVPCOfferingName = "Redundant VPC 
offering";
     public static final String DEFAULT_VPC_NAT_NSX_OFFERING_NAME = "VPC 
offering with NSX - NAT Mode";
     public static final String DEFAULT_VPC_ROUTE_NSX_OFFERING_NAME = "VPC 
offering with NSX - Route Mode";
+    public static final String DEFAULT_VPC_ROUTE_NETRIS_OFFERING_NAME = "VPC 
offering with Netris - Route Mode";
 
     /**
      *
diff --git a/api/src/main/java/com/cloud/offering/NetworkOffering.java 
b/api/src/main/java/com/cloud/offering/NetworkOffering.java
index 7011aea679e..e70e8949ad7 100644
--- a/api/src/main/java/com/cloud/offering/NetworkOffering.java
+++ b/api/src/main/java/com/cloud/offering/NetworkOffering.java
@@ -64,6 +64,7 @@ public interface NetworkOffering extends 
InfrastructureEntity, InternalIdentity,
     public static final String DEFAULT_NAT_NSX_OFFERING_FOR_VPC = 
"DefaultNATNSXNetworkOfferingForVpc";
     public static final String DEFAULT_NAT_NSX_OFFERING_FOR_VPC_WITH_ILB = 
"DefaultNATNSXNetworkOfferingForVpcWithInternalLB";
     public static final String DEFAULT_ROUTED_NSX_OFFERING_FOR_VPC = 
"DefaultRoutedNSXNetworkOfferingForVpc";
+    public static final String DEFAULT_ROUTED_NETRIS_OFFERING_FOR_VPC = 
"DefaultRoutedNetrisNetworkOfferingForVpc";
     public static final String DEFAULT_NAT_NSX_OFFERING = 
"DefaultNATNSXNetworkOffering";
     public static final String DEFAULT_ROUTED_NSX_OFFERING = 
"DefaultRoutedNSXNetworkOffering";
     public final static String QuickCloudNoServices = "QuickCloudNoServices";
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 b956ccc16ed..df4a2e76d52 100644
--- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
@@ -432,6 +432,24 @@ public class VpcManagerImpl extends ManagerBase implements 
VpcManager, VpcProvis
                             State.Enabled, null, false, false, false, true, 
NetworkOffering.NetworkMode.ROUTED, null, false);
 
                 }
+
+                // configure default vpc offering with Netris as network 
service provider in Route mode
+                if 
(_vpcOffDao.findByUniqueName(VpcOffering.DEFAULT_VPC_ROUTE_NETRIS_OFFERING_NAME)
 == null) {
+                    logger.debug(String.format("Creating default VPC offering 
for Netris network service provider %s in Routed mode", 
VpcOffering.DEFAULT_VPC_ROUTE_NETRIS_OFFERING_NAME));
+                    final Map<Service, Set<Provider>> svcProviderMap = new 
HashMap<>();
+                    final Set<Provider> defaultProviders = 
Set.of(Provider.Netris);
+                    for (final Service svc : getSupportedServices()) {
+                        if (List.of(Service.UserData, Service.Dhcp, 
Service.Dns).contains(svc)) {
+                            final Set<Provider> userDataProvider = 
Set.of(Provider.VPCVirtualRouter);
+                            svcProviderMap.put(svc, userDataProvider);
+                        } else if (List.of(Service.SourceNat, 
Service.NetworkACL).contains(svc)){
+                            svcProviderMap.put(svc, defaultProviders);
+                        }
+                    }
+                    
createVpcOffering(VpcOffering.DEFAULT_VPC_ROUTE_NETRIS_OFFERING_NAME, 
VpcOffering.DEFAULT_VPC_ROUTE_NETRIS_OFFERING_NAME, svcProviderMap, false,
+                            State.Enabled, null, false, false, false, true, 
NetworkOffering.NetworkMode.ROUTED, null, false);
+
+                }
             }
         });
 
diff --git a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java 
b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
index 7926498c123..79d55c31aaa 100644
--- a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
+++ b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
@@ -1200,66 +1200,71 @@ public class ConfigurationServerImpl extends 
ManagerBase implements Configuratio
                 _networkOfferingDao.persistDefaultL2NetworkOfferings();
 
                 // Offering #9 - network offering for NSX provider - NATTED 
mode
-                
createAndPersistDefaultNsxOffering(NetworkOffering.DEFAULT_NAT_NSX_OFFERING, 
"Offering for NSX enabled networks - NAT mode",
-                        NetworkOffering.NetworkMode.NATTED, false, true);
+                
createAndPersistDefaultProviderOffering(NetworkOffering.DEFAULT_NAT_NSX_OFFERING,
 "Offering for NSX enabled networks - NAT mode",
+                        NetworkOffering.NetworkMode.NATTED, false, true, 
Provider.Nsx);
 
                 // Offering #10 - network offering for NSX provider - ROUTED 
mode
-                
createAndPersistDefaultNsxOffering(NetworkOffering.DEFAULT_ROUTED_NSX_OFFERING, 
"Offering for NSX enabled networks - ROUTED mode",
-                        NetworkOffering.NetworkMode.ROUTED, false, true);
+                
createAndPersistDefaultProviderOffering(NetworkOffering.DEFAULT_ROUTED_NSX_OFFERING,
 "Offering for NSX enabled networks - ROUTED mode",
+                        NetworkOffering.NetworkMode.ROUTED, false, true, 
Provider.Nsx);
 
                 // Offering #11 - network offering for NSX provider for VPCs - 
NATTED mode
-                
createAndPersistDefaultNsxOffering(NetworkOffering.DEFAULT_NAT_NSX_OFFERING_FOR_VPC,
 "Offering for NSX enabled networks on VPCs - NAT mode",
-                        NetworkOffering.NetworkMode.NATTED, true, true);
+                
createAndPersistDefaultProviderOffering(NetworkOffering.DEFAULT_NAT_NSX_OFFERING_FOR_VPC,
 "Offering for NSX enabled networks on VPCs - NAT mode",
+                        NetworkOffering.NetworkMode.NATTED, true, true, 
Provider.Nsx);
 
                 // Offering #12 - network offering for NSX provider for VPCs - 
ROUTED mode
-                
createAndPersistDefaultNsxOffering(NetworkOffering.DEFAULT_ROUTED_NSX_OFFERING_FOR_VPC,
 "Offering for NSX enabled networks on VPCs - ROUTED mode",
-                        NetworkOffering.NetworkMode.ROUTED, true, true);
+                
createAndPersistDefaultProviderOffering(NetworkOffering.DEFAULT_ROUTED_NSX_OFFERING_FOR_VPC,
 "Offering for NSX enabled networks on VPCs - ROUTED mode",
+                        NetworkOffering.NetworkMode.ROUTED, true, true, 
Provider.Nsx);
 
                 // Offering #13 - network offering for NSX provider for VPCs 
with Internal LB - NATTED mode
-                
createAndPersistDefaultNsxOffering(NetworkOffering.DEFAULT_NAT_NSX_OFFERING_FOR_VPC_WITH_ILB,
 "Offering for NSX enabled networks on VPCs with internal LB - NAT mode",
-                        NetworkOffering.NetworkMode.NATTED, true, false);
+                
createAndPersistDefaultProviderOffering(NetworkOffering.DEFAULT_NAT_NSX_OFFERING_FOR_VPC_WITH_ILB,
 "Offering for NSX enabled networks on VPCs with internal LB - NAT mode",
+                        NetworkOffering.NetworkMode.NATTED, true, false, 
Provider.Nsx);
+
+                // Offering #14 - network offering for Netris provider for 
VPCs - ROUTED mode
+                
createAndPersistDefaultProviderOffering(NetworkOffering.DEFAULT_ROUTED_NETRIS_OFFERING_FOR_VPC,
 "Offering for Netris enabled networks on VPCs - ROUTED mode",
+                        NetworkOffering.NetworkMode.ROUTED, true, true, 
Provider.Netris);
             }
         });
     }
 
-    private void createAndPersistDefaultNsxOffering(String name, String 
displayText, NetworkOffering.NetworkMode networkMode,
-                                                    boolean forVpc, boolean 
publicLB) {
-        NetworkOfferingVO defaultNatNSXNetworkOffering =
+    private void createAndPersistDefaultProviderOffering(String name, String 
displayText, NetworkOffering.NetworkMode networkMode,
+                                                    boolean forVpc, boolean 
publicLB, Provider provider) {
+        NetworkOfferingVO defaultNatProviderNetworkOffering =
                 new NetworkOfferingVO(name, displayText, TrafficType.Guest, 
false, false, null,
                         null, true, Availability.Optional, null, 
GuestType.Isolated, false,
                         false, false, false, false, forVpc);
-        defaultNatNSXNetworkOffering.setPublicLb(publicLB);
-        defaultNatNSXNetworkOffering.setInternalLb(!publicLB);
-        defaultNatNSXNetworkOffering.setForNsx(true);
-        defaultNatNSXNetworkOffering.setNetworkMode(networkMode);
-        defaultNatNSXNetworkOffering.setState(NetworkOffering.State.Enabled);
-        defaultNatNSXNetworkOffering = 
_networkOfferingDao.persistDefaultNetworkOffering(defaultNatNSXNetworkOffering);
-
-        Map<Service, Provider> serviceProviderMap = 
getServicesAndProvidersForNSXNetwork(networkMode, forVpc, publicLB);
+        defaultNatProviderNetworkOffering.setPublicLb(publicLB);
+        defaultNatProviderNetworkOffering.setInternalLb(!publicLB);
+        
defaultNatProviderNetworkOffering.setForNsx(Provider.Nsx.equals(provider));
+        defaultNatProviderNetworkOffering.setNetworkMode(networkMode);
+        
defaultNatProviderNetworkOffering.setState(NetworkOffering.State.Enabled);
+        defaultNatProviderNetworkOffering = 
_networkOfferingDao.persistDefaultNetworkOffering(defaultNatProviderNetworkOffering);
+
+        
+        Map<Service, Provider> serviceProviderMap = 
getServicesAndProvidersForProviderNetwork(networkMode, forVpc, provider);
         for (Map.Entry<Network.Service, Network.Provider> service : 
serviceProviderMap.entrySet()) {
             NetworkOfferingServiceMapVO offService =
-                    new 
NetworkOfferingServiceMapVO(defaultNatNSXNetworkOffering.getId(), 
service.getKey(), service.getValue());
+                    new 
NetworkOfferingServiceMapVO(defaultNatProviderNetworkOffering.getId(), 
service.getKey(), service.getValue());
             _ntwkOfferingServiceMapDao.persist(offService);
             logger.trace("Added service for the network offering: " + 
offService);
         }
     }
 
-    private Map<Service, Provider> 
getServicesAndProvidersForNSXNetwork(NetworkOffering.NetworkMode networkMode, 
boolean forVpc, boolean publicLB) {
+    private Map<Service, Provider> 
getServicesAndProvidersForProviderNetwork(NetworkOffering.NetworkMode 
networkMode, boolean forVpc, Provider provider) {
         final Map<Network.Service, Network.Provider> serviceProviderMap = new 
HashMap<>();
         Provider routerProvider = forVpc ? Provider.VPCVirtualRouter : 
Provider.VirtualRouter;
         serviceProviderMap.put(Service.Dhcp, routerProvider);
         serviceProviderMap.put(Service.Dns, routerProvider);
         serviceProviderMap.put(Service.UserData, routerProvider);
         if (forVpc) {
-            serviceProviderMap.put(Service.NetworkACL, Provider.Nsx);
+            serviceProviderMap.put(Service.NetworkACL, provider);
         } else {
-            serviceProviderMap.put(Service.Firewall, Provider.Nsx);
+            serviceProviderMap.put(Service.Firewall, provider);
         }
         if (networkMode == NetworkOffering.NetworkMode.NATTED) {
-            serviceProviderMap.put(Service.SourceNat, Provider.Nsx);
-            serviceProviderMap.put(Service.StaticNat, Provider.Nsx);
-            serviceProviderMap.put(Service.PortForwarding, Provider.Nsx);
-            serviceProviderMap.put(Service.Lb, Provider.Nsx);
+            serviceProviderMap.put(Service.SourceNat, provider);
+            serviceProviderMap.put(Service.StaticNat, provider);
+            serviceProviderMap.put(Service.PortForwarding, provider);
+            serviceProviderMap.put(Service.Lb, provider);
         }
         return serviceProviderMap;
     }

Reply via email to