From 14c3ef17adcb330968b23fcc7cba7402a3601dc7 Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Tue, 17 Jul 2012 17:41:07 -0700 Subject: [PATCH] VPC: added one more default network offering for VPC - the one not having LB service --- .../com/cloud/offering/NetworkOffering.java | 1 + .../ConfigurationManagerImpl.java | 80 ++++++++++--------- .../com/cloud/network/NetworkManagerImpl.java | 13 ++- .../cloud/server/ConfigurationServerImpl.java | 33 +++++++- 4 files changed, 87 insertions(+), 40 deletions(-) diff --git a/api/src/com/cloud/offering/NetworkOffering.java b/api/src/com/cloud/offering/NetworkOffering.java index 7415e1a44bc..877a8935b47 100644 --- a/api/src/com/cloud/offering/NetworkOffering.java +++ b/api/src/com/cloud/offering/NetworkOffering.java @@ -44,6 +44,7 @@ public interface NetworkOffering { public final static String DefaultIsolatedNetworkOffering = "DefaultIsolatedNetworkOffering"; public final static String DefaultSharedEIPandELBNetworkOffering = "DefaultSharedNetscalerEIPandELBNetworkOffering"; public final static String DefaultIsolatedNetworkOfferingForVpcNetworks = "DefaultIsolatedNetworkOfferingForVpcNetworks"; + public final static String DefaultIsolatedNetworkOfferingForVpcNetworksNoLB = "DefaultIsolatedNetworkOfferingForVpcNetworksNoLB"; long getId(); diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java index ae27afcb9eb..346313470b7 100755 --- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java +++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java @@ -3211,49 +3211,53 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura } } - Map lbServiceCapabilityMap = serviceCapabilityMap.get(Service.Lb); + boolean dedicatedLb = false; boolean elasticLb = false; - if ((lbServiceCapabilityMap != null) && (!lbServiceCapabilityMap.isEmpty())) { - String isolationCapability = lbServiceCapabilityMap.get(Capability.SupportedLBIsolation); - if (isolationCapability != null) { - _networkMgr.checkCapabilityForProvider(serviceProviderMap.get(Service.Lb), Service.Lb, Capability.SupportedLBIsolation, isolationCapability); - dedicatedLb = isolationCapability.contains("dedicated"); - } else { - dedicatedLb = true; - } - - String param = lbServiceCapabilityMap.get(Capability.ElasticLb); - if (param != null) { - elasticLb = param.contains("true"); - } - } - - Map sourceNatServiceCapabilityMap = serviceCapabilityMap.get(Service.SourceNat); boolean sharedSourceNat = false; boolean redundantRouter = false; - if ((sourceNatServiceCapabilityMap != null) && (!sourceNatServiceCapabilityMap.isEmpty())) { - String sourceNatType = sourceNatServiceCapabilityMap.get(Capability.SupportedSourceNatTypes); - if (sourceNatType != null) { - _networkMgr.checkCapabilityForProvider(serviceProviderMap.get(Service.SourceNat), Service.SourceNat, - Capability.SupportedSourceNatTypes, sourceNatType); - sharedSourceNat = sourceNatType.contains("perzone"); - } - - String param = sourceNatServiceCapabilityMap.get(Capability.RedundantRouter); - if (param != null) { - _networkMgr.checkCapabilityForProvider(serviceProviderMap.get(Service.SourceNat), Service.SourceNat, - Capability.RedundantRouter, param); - redundantRouter = param.contains("true"); - } - } - - Map staticNatServiceCapabilityMap = serviceCapabilityMap.get(Service.StaticNat); boolean elasticIp = false; - if ((staticNatServiceCapabilityMap != null) && (!staticNatServiceCapabilityMap.isEmpty())) { - String param = staticNatServiceCapabilityMap.get(Capability.ElasticIp); - if (param != null) { - elasticIp = param.contains("true"); + if (serviceCapabilityMap != null && !serviceCapabilityMap.isEmpty()) { + Map lbServiceCapabilityMap = serviceCapabilityMap.get(Service.Lb); + + if ((lbServiceCapabilityMap != null) && (!lbServiceCapabilityMap.isEmpty())) { + String isolationCapability = lbServiceCapabilityMap.get(Capability.SupportedLBIsolation); + if (isolationCapability != null) { + _networkMgr.checkCapabilityForProvider(serviceProviderMap.get(Service.Lb), Service.Lb, Capability.SupportedLBIsolation, isolationCapability); + dedicatedLb = isolationCapability.contains("dedicated"); + } else { + dedicatedLb = true; + } + + String param = lbServiceCapabilityMap.get(Capability.ElasticLb); + if (param != null) { + elasticLb = param.contains("true"); + } + } + + Map sourceNatServiceCapabilityMap = serviceCapabilityMap.get(Service.SourceNat); + if ((sourceNatServiceCapabilityMap != null) && (!sourceNatServiceCapabilityMap.isEmpty())) { + String sourceNatType = sourceNatServiceCapabilityMap.get(Capability.SupportedSourceNatTypes); + if (sourceNatType != null) { + _networkMgr.checkCapabilityForProvider(serviceProviderMap.get(Service.SourceNat), Service.SourceNat, + Capability.SupportedSourceNatTypes, sourceNatType); + sharedSourceNat = sourceNatType.contains("perzone"); + } + + String param = sourceNatServiceCapabilityMap.get(Capability.RedundantRouter); + if (param != null) { + _networkMgr.checkCapabilityForProvider(serviceProviderMap.get(Service.SourceNat), Service.SourceNat, + Capability.RedundantRouter, param); + redundantRouter = param.contains("true"); + } + } + + Map staticNatServiceCapabilityMap = serviceCapabilityMap.get(Service.StaticNat); + if ((staticNatServiceCapabilityMap != null) && (!staticNatServiceCapabilityMap.isEmpty())) { + String param = staticNatServiceCapabilityMap.get(Capability.ElasticIp); + if (param != null) { + elasticIp = param.contains("true"); + } } } diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 011df490bb1..554c9d15410 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -1464,7 +1464,18 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworks) == null) { offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworks, "Offering for Isolated VPC networks with Source Nat service enabled", TrafficType.Guest, - null, false, Availability.Required, null, defaultVPCOffProviders, + null, false, Availability.Optional, null, defaultVPCOffProviders, + true, Network.GuestType.Isolated, false, null, false, null, false); + offering.setState(NetworkOffering.State.Enabled); + _networkOfferingDao.update(offering.getId(), offering); + } + + if (_networkOfferingDao.findByUniqueName(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksNoLB) == null) { + //remove LB service + defaultVPCOffProviders.remove(Service.Lb); + offering = _configMgr.createNetworkOffering(NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksNoLB, + "Offering for Isolated VPC networks with Source Nat service enabled and LB service disabled", TrafficType.Guest, + null, false, Availability.Optional, null, defaultVPCOffProviders, true, Network.GuestType.Isolated, false, null, false, null, false); offering.setState(NetworkOffering.State.Enabled); _networkOfferingDao.update(offering.getId(), offering); diff --git a/server/src/com/cloud/server/ConfigurationServerImpl.java b/server/src/com/cloud/server/ConfigurationServerImpl.java index 4f7a16347e3..02f38e2fa01 100755 --- a/server/src/com/cloud/server/ConfigurationServerImpl.java +++ b/server/src/com/cloud/server/ConfigurationServerImpl.java @@ -1020,7 +1020,7 @@ public class ConfigurationServerImpl implements ConfigurationServer { NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworks, "Offering for Isolated Vpc networks with Source Nat service enabled", TrafficType.Guest, - false, false, null, null, true, Availability.Required, + false, false, null, null, true, Availability.Optional, null, Network.GuestType.Isolated, false, false); defaultNetworkOfferingForVpcNetworks.setState(NetworkOffering.State.Enabled); @@ -1045,6 +1045,37 @@ public class ConfigurationServerImpl implements ConfigurationServer { s_logger.trace("Added service for the network offering: " + offService); } + // Offering #7 + NetworkOfferingVO defaultNetworkOfferingForVpcNetworksNoLB = new NetworkOfferingVO( + NetworkOffering.DefaultIsolatedNetworkOfferingForVpcNetworksNoLB, + "Offering for Isolated Vpc networks with Source Nat service enabled and LB service Disabled", + TrafficType.Guest, + false, false, null, null, true, Availability.Optional, + null, Network.GuestType.Isolated, false, false); + + defaultNetworkOfferingForVpcNetworksNoLB.setState(NetworkOffering.State.Enabled); + defaultNetworkOfferingForVpcNetworksNoLB = _networkOfferingDao.persistDefaultNetworkOffering(defaultNetworkOfferingForVpcNetworksNoLB); + + Map defaultVpcNetworkOfferingProvidersNoLB = new HashMap(); + defaultVpcNetworkOfferingProvidersNoLB.put(Service.Dhcp, Provider.VPCVirtualRouter); + defaultVpcNetworkOfferingProvidersNoLB.put(Service.Dns, Provider.VPCVirtualRouter); + defaultVpcNetworkOfferingProvidersNoLB.put(Service.UserData, Provider.VPCVirtualRouter); + defaultVpcNetworkOfferingProvidersNoLB.put(Service.NetworkACL, Provider.VPCVirtualRouter); + defaultVpcNetworkOfferingProvidersNoLB.put(Service.Gateway, Provider.VPCVirtualRouter); + defaultVpcNetworkOfferingProvidersNoLB.put(Service.SourceNat, Provider.VPCVirtualRouter); + defaultVpcNetworkOfferingProvidersNoLB.put(Service.StaticNat, Provider.VPCVirtualRouter); + defaultVpcNetworkOfferingProvidersNoLB.put(Service.PortForwarding, Provider.VPCVirtualRouter); + defaultVpcNetworkOfferingProvidersNoLB.put(Service.Vpn, Provider.VPCVirtualRouter); + + for (Service service : defaultVpcNetworkOfferingProvidersNoLB.keySet()) { + NetworkOfferingServiceMapVO offService = new NetworkOfferingServiceMapVO + (defaultNetworkOfferingForVpcNetworksNoLB.getId(), service, defaultVpcNetworkOfferingProvidersNoLB.get(service)); + _ntwkOfferingServiceMapDao.persist(offService); + s_logger.trace("Added service for the network offering: " + offService); + } + + + txn.commit(); }