Updated Branches: refs/heads/4.1 0364a4a34 -> 513f8b98e
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 Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/513f8b98 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/513f8b98 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/513f8b98 Branch: refs/heads/4.1 Commit: 513f8b98e9b7818d0b37c9641d9021b77a0cfc45 Parents: 0364a4a Author: Murali Reddy <[email protected]> Authored: Tue Feb 12 15:25:07 2013 +0530 Committer: Murali Reddy <[email protected]> Committed: Tue Feb 12 15:25:07 2013 +0530 ---------------------------------------------------------------------- .../network/firewall/FirewallManagerImpl.java | 20 +++++++++++++++ .../network/lb/LoadBalancingRulesManagerImpl.java | 5 +++ 2 files changed, 25 insertions(+), 0 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/513f8b98/server/src/com/cloud/network/firewall/FirewallManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java index d3b4c0b..0d17ba7 100644 --- a/server/src/com/cloud/network/firewall/FirewallManagerImpl.java +++ b/server/src/com/cloud/network/firewall/FirewallManagerImpl.java @@ -536,12 +536,22 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, switch (purpose){ case Firewall: 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); if (handled) break; } case PortForwarding: 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); if (handled) break; @@ -549,6 +559,11 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, break; case StaticNat: 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); if (handled) break; @@ -556,6 +571,11 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService, break; case NetworkACL: 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); if (handled) break; http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/513f8b98/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index 85e850c..531a428 100755 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -1158,6 +1158,11 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements assert(purpose == Purpose.LoadBalancing): "LB Manager asked to handle non-LB rules"; boolean handled = false; 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); if (handled) break;
