Skip to content

Commit d88d75b

Browse files
author
Daniel Vega
committed
Fixes for multiple ports in load balancer
1 parent 6f2d040 commit d88d75b

3 files changed

Lines changed: 16 additions & 8 deletions

File tree

plugins/network-elements/globonetwork/src/com/globo/globonetwork/cloudstack/manager/GloboNetworkManager.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1936,14 +1936,11 @@ public boolean applyLbRuleInGloboNetwork(final Network network, final LoadBalanc
19361936

19371937
// Port mapping
19381938
List<String> ports = new ArrayList<String>();
1939-
List<String> realPorts = new ArrayList<String>();
19401939
ports.add(rule.getSourcePortStart() + ":" + rule.getDefaultPortStart());
1941-
realPorts.add(String.valueOf(rule.getDefaultPortStart()));
19421940
if (rule.getAdditionalPortMap() != null) {
19431941
for (String portMap : rule.getAdditionalPortMap()) {
19441942
// Right format of ports has already been validated in validateLBRule()
19451943
ports.add(portMap);
1946-
realPorts.add(portMap.split(":")[1]);
19471944
}
19481945
}
19491946

@@ -1956,7 +1953,7 @@ public boolean applyLbRuleInGloboNetwork(final Network network, final LoadBalanc
19561953
GloboNetworkVipResponse.Real real = new GloboNetworkVipResponse.Real();
19571954
real.setIp(destVM.getIpAddress());
19581955
real.setVmName(getEquipNameFromUuid(vm.getUuid()));
1959-
real.setPorts(realPorts);
1956+
real.setPorts(ports);
19601957
real.setRevoked(destVM.isRevoked());
19611958

19621959
GloboNetworkNetworkVO globoNetworkRealNetworkVO = _globoNetworkNetworkDao.findByNetworkId(destVM.getNetworkId());
@@ -2103,8 +2100,8 @@ public boolean validateLBRule(Network network, LoadBalancingRule rule) {
21032100
if (portMapArray.length != 2) {
21042101
throw new InvalidParameterValueException("Additional port mapping is invalid, should be in the form '80:8080,443:8443'");
21052102
}
2106-
Integer lbPort = Integer.valueOf(portMapArray[0]);
2107-
Integer realPort = Integer.valueOf(portMapArray[1]);
2103+
Integer lbPort = Integer.valueOf(portMapArray[0].trim());
2104+
Integer realPort = Integer.valueOf(portMapArray[1].trim());
21082105
if (portsAlreadyMapped.contains(lbPort)) {
21092106
throw new InvalidParameterValueException("Additional port mapping is invalid. Duplicated Load Balancer port");
21102107
}

plugins/network-elements/globonetwork/src/com/globo/globonetwork/cloudstack/resource/GloboNetworkResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -706,8 +706,8 @@ public Answer execute(AddOrRemoveVipInGloboNetworkCommand cmd) {
706706
RealIP realIP = new RealIP();
707707
realIP.setName(real.getVmName());
708708
realIP.setRealIp(real.getIp());
709-
710-
realIP.setRealPort(Integer.valueOf(port));
709+
realIP.setVipPort(Integer.valueOf(port.split(":")[0]));
710+
realIP.setRealPort(Integer.valueOf(port.split(":")[1]));
711711
realIP.setIpId(ip.getId());
712712
realsIp.add(realIP);
713713

server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1972,6 +1972,17 @@ private LoadBalancingRule getLoadBalancerRuleToApply(LoadBalancerVO lb) {
19721972
}
19731973
loadBalancing.setAdditionalNetworks(additionalNetworks);
19741974

1975+
List<String> additionalPorts = new ArrayList<String>();
1976+
List<LoadBalancerPortMapVO> lbPortMaps = ApiDBUtils.listLoadBalancerAdditionalPorts(lb.getId());
1977+
if (lbPortMaps != null) {
1978+
for (LoadBalancerPortMapVO lbPortMap : lbPortMaps) {
1979+
if (lbPortMap.getLoadBalancerId() == lb.getId()) { // FIXME Double-check lbID because query doesn't seem to be working
1980+
additionalPorts.add(lbPortMap.getPublicPort() + ":" + lbPortMap.getPrivatePort());
1981+
}
1982+
}
1983+
}
1984+
loadBalancing.setAdditionalPortMap(additionalPorts);
1985+
19751986
List<LbHealthCheckPolicy> hcPolicyList = getHealthCheckPolicies(lb.getId());
19761987
loadBalancing.setHealthCheckPolicies(hcPolicyList);
19771988

0 commit comments

Comments
 (0)