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