diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index 80e3820cc4b..9c8547a032a 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -5977,20 +5977,22 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag throw new InvalidParameterValueException("Unable to find the Network Element implementing the Service Provider '" + provider.getName() + "'"); } - Set enabledServices = providersMap.get(provider); + Set enabledServices = new HashSet(); + enabledServices.addAll(providersMap.get(provider)); if (enabledServices != null && !enabledServices.isEmpty()) { if (!element.canEnableIndividualServices()) { - Set requiredServices = element.getCapabilities().keySet(); + Set requiredServices = new HashSet(); + requiredServices.addAll(element.getCapabilities().keySet()); + if (requiredServices.contains(Network.Service.Gateway)) { requiredServices.remove(Network.Service.Gateway); } - - // Remove firewall from the list of services-to-compare + if (requiredServices.contains(Network.Service.Firewall)) { requiredServices.remove(Network.Service.Firewall); } - + if (enabledServices.contains(Network.Service.Firewall)) { enabledServices.remove(Network.Service.Firewall); }