mirror of https://github.com/apache/cloudstack.git
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
This commit is contained in:
parent
3aceec45aa
commit
7d57af34b8
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
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 = getServicesAndProvidersForNSXNetwork(networkMode, forVpc, publicLB);
|
||||
|
||||
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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue