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; }