mirror of https://github.com/apache/cloudstack.git
CLOUDSTACK-9321 : Multiple Internal LB rules (more than one Internal LB rule with same source IP address) are not getting resolved in the corresponding InternalLbVm instance's haproxy.cfg file
CLOUDSTACK-9321 : Adding component tests for VPC Network functionality - Internal LB rules
CLOUDSTACK-9321 : Extending Nuage VSP Internal LB Marvin tests
Co-Authored-By: Prashanth Manthena <prashanth.manthena@nuagenetworks.net>, Frank Maximus <frank.maximus@nuagenetworks.net>
(cherry picked from commit 62e858131f)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
parent
fa7ebaaaf8
commit
1f44e884ad
|
|
@ -46,4 +46,6 @@ public interface LoadBalancingServiceProvider extends NetworkElement, IpDeployin
|
|||
boolean validateLBRule(Network network, LoadBalancingRule rule);
|
||||
|
||||
List<LoadBalancerTO> updateHealthChecks(Network network, List<LoadBalancingRule> lbrules);
|
||||
|
||||
boolean handlesOnlyRulesInTransitionState();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -221,4 +221,9 @@ public class ElasticLoadBalancerElement extends AdapterBase implements LoadBalan
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handlesOnlyRulesInTransitionState() {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -530,4 +530,9 @@ public class F5ExternalLoadBalancerElement extends ExternalLoadBalancerDeviceMan
|
|||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handlesOnlyRulesInTransitionState() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -423,6 +423,11 @@ public class InternalLoadBalancerElement extends AdapterBase implements LoadBala
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handlesOnlyRulesInTransitionState() {
|
||||
return false;
|
||||
}
|
||||
|
||||
private static Map<Service, Map<Capability, String>> setCapabilities() {
|
||||
Map<Service, Map<Capability, String>> capabilities = new HashMap<Service, Map<Capability, String>>();
|
||||
|
||||
|
|
|
|||
|
|
@ -945,6 +945,11 @@ public class NetscalerElement extends ExternalLoadBalancerDeviceManagerImpl impl
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handlesOnlyRulesInTransitionState() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LoadBalancerTO> getLBHealthChecks(Network network, List<LoadBalancingRule> rules) throws ResourceUnavailableException {
|
||||
return super.getLBHealthChecks(network, rules);
|
||||
|
|
|
|||
|
|
@ -554,6 +554,11 @@ StaticNatServiceProvider, IpDeployer {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handlesOnlyRulesInTransitionState() {
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean canHandleLbRules(final List<LoadBalancingRule> rules) {
|
||||
final Map<Capability, String> lbCaps = getCapabilities().get(Service.Lb);
|
||||
if (!lbCaps.isEmpty()) {
|
||||
|
|
|
|||
|
|
@ -1120,6 +1120,11 @@ NetworkMigrationResponder, AggregatedCommandExecutor {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handlesOnlyRulesInTransitionState() {
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean canHandleLbRules(final List<LoadBalancingRule> rules) {
|
||||
final Map<Capability, String> lbCaps = getCapabilities().get(Service.Lb);
|
||||
if (!lbCaps.isEmpty()) {
|
||||
|
|
|
|||
|
|
@ -1796,8 +1796,24 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
|
|||
// entries will be rollbacked.
|
||||
lbs = Arrays.asList(lb);
|
||||
} else {
|
||||
boolean onlyRulesInTransitionState = true;
|
||||
for (LoadBalancingServiceProvider lbElement : _lbProviders) {
|
||||
Provider provider = lbElement.getProvider();
|
||||
boolean isLbProvider = _networkModel.isProviderSupportServiceInNetwork(lb.getNetworkId(), Service.Lb, provider);
|
||||
if (!isLbProvider) {
|
||||
continue;
|
||||
}
|
||||
onlyRulesInTransitionState = lbElement.handlesOnlyRulesInTransitionState();
|
||||
break;
|
||||
}
|
||||
|
||||
// get all rules in transition state
|
||||
lbs = _lbDao.listInTransitionStateByNetworkIdAndScheme(lb.getNetworkId(), lb.getScheme());
|
||||
if (onlyRulesInTransitionState) {
|
||||
lbs = _lbDao.listInTransitionStateByNetworkIdAndScheme(lb.getNetworkId(), lb.getScheme());
|
||||
} else {
|
||||
lbs = _lbDao.listByNetworkIdAndScheme(lb.getNetworkId(), lb.getScheme());
|
||||
}
|
||||
|
||||
}
|
||||
return applyLoadBalancerRules(lbs, true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,4 +28,8 @@ public class MockVpcVirtualRouterElement extends VpcVirtualRouterElement {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handlesOnlyRulesInTransitionState() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -443,6 +443,22 @@ test_data = {
|
|||
"supportedservices":
|
||||
"Dhcp,Dns,SourceNat,PortForwarding,Vpn,Lb,UserData,StaticNat,NetworkACL"
|
||||
},
|
||||
"vpc_offering_multi_lb": {
|
||||
"name": "VPC offering with multiple Lb service providers",
|
||||
"displaytext": "VPC offering with multiple Lb service providers",
|
||||
"supportedservices": "Dhcp,Dns,SourceNat,PortForwarding,Vpn,Lb,UserData,StaticNat,NetworkACL",
|
||||
"serviceProviderList": {
|
||||
"Vpn": 'VpcVirtualRouter',
|
||||
"Dhcp": 'VpcVirtualRouter',
|
||||
"Dns": 'VpcVirtualRouter',
|
||||
"SourceNat": 'VpcVirtualRouter',
|
||||
"Lb": ["InternalLbVm", "VpcVirtualRouter"],
|
||||
"PortForwarding": 'VpcVirtualRouter',
|
||||
"UserData": 'VpcVirtualRouter',
|
||||
"StaticNat": 'VpcVirtualRouter',
|
||||
"NetworkACL": 'VpcVirtualRouter'
|
||||
}
|
||||
},
|
||||
"vpc": {
|
||||
"name": "TestVPC",
|
||||
"displaytext": "TestVPC",
|
||||
|
|
|
|||
Loading…
Reference in New Issue