Updated Branches:
  refs/heads/master 733ec50d4 -> c809d057e

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/c809d057
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/c809d057
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/c809d057

Branch: refs/heads/master
Commit: c809d057efd42bf01d585326e09e51e0c0ff1cee
Parents: 733ec50
Author: Murali Reddy <[email protected]>
Authored: Tue Feb 12 15:25:07 2013 +0530
Committer: Murali Reddy <[email protected]>
Committed: Tue Feb 12 15:28:05 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/c809d057/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/c809d057/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;

Reply via email to