mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	CLOUDSTACK-1241: Network apply rules logic is broken
added logic to check if the network element is configured service provider for the network before applying rules
This commit is contained in:
		
							parent
							
								
									733ec50d46
								
							
						
					
					
						commit
						c809d057ef
					
				| @ -536,12 +536,22 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, | |||||||
|         switch (purpose){ |         switch (purpose){ | ||||||
|         case Firewall: |         case Firewall: | ||||||
|             for (FirewallServiceProvider fwElement: _firewallElements) { |             for (FirewallServiceProvider fwElement: _firewallElements) { | ||||||
|  |                 Network.Provider provider = fwElement.getProvider(); | ||||||
|  |                 boolean  isFwProvider = _networkModel.isProviderSupportServiceInNetwork(network.getId(), Service.Firewall, provider); | ||||||
|  |                 if (!isFwProvider) { | ||||||
|  |                     continue; | ||||||
|  |                 } | ||||||
|                 handled = fwElement.applyFWRules(network, rules); |                 handled = fwElement.applyFWRules(network, rules); | ||||||
|                 if (handled) |                 if (handled) | ||||||
|                     break; |                     break; | ||||||
|             } |             } | ||||||
|         case PortForwarding: |         case PortForwarding: | ||||||
|             for (PortForwardingServiceProvider element: _pfElements) { |             for (PortForwardingServiceProvider element: _pfElements) { | ||||||
|  |                 Network.Provider provider = element.getProvider(); | ||||||
|  |                 boolean  isPfProvider = _networkModel.isProviderSupportServiceInNetwork(network.getId(), Service.PortForwarding, provider); | ||||||
|  |                 if (!isPfProvider) { | ||||||
|  |                     continue; | ||||||
|  |                 } | ||||||
|                 handled = element.applyPFRules(network, (List<PortForwardingRule>) rules); |                 handled = element.applyPFRules(network, (List<PortForwardingRule>) rules); | ||||||
|                 if (handled) |                 if (handled) | ||||||
|                     break; |                     break; | ||||||
| @ -549,6 +559,11 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, | |||||||
|             break; |             break; | ||||||
|         case StaticNat: |         case StaticNat: | ||||||
|             for (StaticNatServiceProvider element: _staticNatElements) { |             for (StaticNatServiceProvider element: _staticNatElements) { | ||||||
|  |                 Network.Provider provider = element.getProvider(); | ||||||
|  |                 boolean  isSnatProvider = _networkModel.isProviderSupportServiceInNetwork(network.getId(), Service.StaticNat, provider); | ||||||
|  |                 if (!isSnatProvider) { | ||||||
|  |                     continue; | ||||||
|  |                 } | ||||||
|                 handled = element.applyStaticNats(network, (List<? extends StaticNat>) rules); |                 handled = element.applyStaticNats(network, (List<? extends StaticNat>) rules); | ||||||
|                 if (handled) |                 if (handled) | ||||||
|                     break; |                     break; | ||||||
| @ -556,6 +571,11 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, | |||||||
|             break; |             break; | ||||||
|         case NetworkACL: |         case NetworkACL: | ||||||
|             for (NetworkACLServiceProvider element: _networkAclElements) { |             for (NetworkACLServiceProvider element: _networkAclElements) { | ||||||
|  |                 Network.Provider provider = element.getProvider(); | ||||||
|  |                 boolean  isAclProvider = _networkModel.isProviderSupportServiceInNetwork(network.getId(), Service.NetworkACL, provider); | ||||||
|  |                 if (!isAclProvider) { | ||||||
|  |                     continue; | ||||||
|  |                 } | ||||||
|                 handled = element.applyNetworkACLs(network, rules); |                 handled = element.applyNetworkACLs(network, rules); | ||||||
|                 if (handled) |                 if (handled) | ||||||
|                     break; |                     break; | ||||||
|  | |||||||
| @ -1158,6 +1158,11 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements | |||||||
|         assert(purpose == Purpose.LoadBalancing): "LB Manager asked to handle non-LB rules"; |         assert(purpose == Purpose.LoadBalancing): "LB Manager asked to handle non-LB rules"; | ||||||
|         boolean handled = false; |         boolean handled = false; | ||||||
|         for (LoadBalancingServiceProvider lbElement: _lbProviders) { |         for (LoadBalancingServiceProvider lbElement: _lbProviders) { | ||||||
|  |             Provider provider = lbElement.getProvider(); | ||||||
|  |             boolean  isLbProvider = _networkModel.isProviderSupportServiceInNetwork(network.getId(), Service.Lb, provider); | ||||||
|  |             if (!isLbProvider) { | ||||||
|  |                 continue; | ||||||
|  |             } | ||||||
|             handled = lbElement.applyLBRules(network, (List<LoadBalancingRule>) rules); |             handled = lbElement.applyLBRules(network, (List<LoadBalancingRule>) rules); | ||||||
|             if (handled) |             if (handled) | ||||||
|                 break; |                 break; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user