bug 13924: default Firewall provider to Juniper when Juniper is a provider for Pf/StaticNat or source nat service

status 13924: resolved fixed
reviewed-by: Will Chan
This commit is contained in:
Alena Prokharchyk 2012-02-22 18:45:13 -08:00
parent b683312df5
commit 836a063a9e

View File

@ -3101,6 +3101,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
// populate providers // populate providers
Map<Provider, Set<Service>> providerCombinationToVerify = new HashMap<Provider, Set<Service>>(); Map<Provider, Set<Service>> providerCombinationToVerify = new HashMap<Provider, Set<Service>>();
Map<String, List<String>> svcPrv = cmd.getServiceProviders(); Map<String, List<String>> svcPrv = cmd.getServiceProviders();
boolean isSrx = false;
if (svcPrv != null) { if (svcPrv != null) {
for (String serviceStr : svcPrv.keySet()) { for (String serviceStr : svcPrv.keySet()) {
Network.Service service = Network.Service.getService(serviceStr); Network.Service service = Network.Service.getService(serviceStr);
@ -3117,11 +3118,10 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
throw new InvalidParameterValueException("Invalid service provider: " + prvNameStr); throw new InvalidParameterValueException("Invalid service provider: " + prvNameStr);
} }
// Only VirtualRouter can be specified as a firewall provider if (provider == Provider.JuniperSRX) {
if (service == Service.Firewall && provider != Provider.VirtualRouter) { isSrx = true;
throw new InvalidParameterValueException("Only Virtual router can be specified as a provider for the Firewall service");
} }
providers.add(provider); providers.add(provider);
Set<Service> serviceSet = null; Set<Service> serviceSet = null;
@ -3169,6 +3169,14 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
serviceCapabilityMap.put(Service.Lb, lbServiceCapabilityMap); serviceCapabilityMap.put(Service.Lb, lbServiceCapabilityMap);
serviceCapabilityMap.put(Service.SourceNat, sourceNatServiceCapabilityMap); serviceCapabilityMap.put(Service.SourceNat, sourceNatServiceCapabilityMap);
serviceCapabilityMap.put(Service.StaticNat, staticNatServiceCapabilityMap); serviceCapabilityMap.put(Service.StaticNat, staticNatServiceCapabilityMap);
//if Firewall service is missing, and Juniper is a provider for any other service, add Firewall service/provider combination
if (isSrx) {
s_logger.debug("Adding Firewall service with provider " + Provider.JuniperSRX.getName());
Set<Provider> firewallProvider = new HashSet<Provider>();
firewallProvider.add(Provider.JuniperSRX);
serviceProviderMap.put(Service.Firewall, firewallProvider);
}
return createNetworkOffering(userId, name, displayText, trafficType, tags, specifyVlan, availability, networkRate, serviceProviderMap, false, guestType, return createNetworkOffering(userId, name, displayText, trafficType, tags, specifyVlan, availability, networkRate, serviceProviderMap, false, guestType,
false, serviceOfferingId, conserveMode, serviceCapabilityMap, specifyIpRanges); false, serviceOfferingId, conserveMode, serviceCapabilityMap, specifyIpRanges);