mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-02 20:02:29 +01:00
Pass LbProtocol down to the HAProxyConfigurator
This commit is contained in:
parent
88dd3009d8
commit
cacac14425
@ -150,6 +150,10 @@ public class LoadBalancerTO {
|
||||
return lbProtocol;
|
||||
}
|
||||
|
||||
public void setLbProtocol(String lbProtocol) {
|
||||
this.lbProtocol = lbProtocol;
|
||||
}
|
||||
|
||||
public boolean isRevoked() {
|
||||
return revoked;
|
||||
}
|
||||
|
||||
@ -503,6 +503,9 @@ public class HAProxyConfigurator implements LoadBalancerConfigurator {
|
||||
.append(":")
|
||||
.append(dest.getDestPort())
|
||||
.append(" check");
|
||||
if(lbTO.getLbProtocol() != null && lbTO.getLbProtocol().equals("tcp-proxy")) {
|
||||
sb.append(" send-proxy");
|
||||
}
|
||||
dstSubRule.add(sb.toString());
|
||||
if (stickinessSubRule != null) {
|
||||
sb.append(" cookie ").append(dest.getDestIp().replace(".", "_")).append('-').append(dest.getDestPort()).toString();
|
||||
|
||||
@ -29,6 +29,10 @@ import org.junit.Test;
|
||||
|
||||
import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
|
||||
import com.cloud.agent.api.to.LoadBalancerTO;
|
||||
import com.cloud.network.lb.LoadBalancingRule.LbDestination;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @author dhoogland
|
||||
@ -87,6 +91,24 @@ public class HAProxyConfiguratorTest {
|
||||
// httpmode
|
||||
}
|
||||
|
||||
/**
|
||||
* Test method for {@link com.cloud.network.HAProxyConfigurator#generateConfiguration(com.cloud.agent.api.routing.LoadBalancerConfigCommand)}.
|
||||
*/
|
||||
@Test
|
||||
public void testGenerateConfigurationLoadBalancerProxyProtocolConfigCommand() {
|
||||
final List<LbDestination> dests = new ArrayList<>();
|
||||
dests.add(new LbDestination(443, 8443, "10.1.10.2", false));
|
||||
dests.add(new LbDestination(443, 8443, "10.1.10.2", true));
|
||||
LoadBalancerTO lb = new LoadBalancerTO("1", "10.2.0.1", 443, "tcp", "http", false, false, false, dests);
|
||||
lb.setLbProtocol("tcp-proxy");
|
||||
LoadBalancerTO[] lba = new LoadBalancerTO[1];
|
||||
lba[0] = lb;
|
||||
HAProxyConfigurator hpg = new HAProxyConfigurator();
|
||||
LoadBalancerConfigCommand cmd = new LoadBalancerConfigCommand(lba, "10.0.0.1", "10.1.0.1", "10.1.1.1", null, 1L, "12", false);
|
||||
String result = genConfig(hpg, cmd);
|
||||
assertTrue("'send-proxy' should result if protocol is 'tcp-proxy'", result.contains("send-proxy"));
|
||||
}
|
||||
|
||||
private String genConfig(HAProxyConfigurator hpg, LoadBalancerConfigCommand cmd) {
|
||||
String[] sa = hpg.generateConfiguration(cmd);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
@ -602,7 +602,7 @@ NetworkMigrationResponder, AggregatedCommandExecutor {
|
||||
final Map<Capability, String> lbCapabilities = new HashMap<Capability, String>();
|
||||
lbCapabilities.put(Capability.SupportedLBAlgorithms, "roundrobin,leastconn,source");
|
||||
lbCapabilities.put(Capability.SupportedLBIsolation, "dedicated");
|
||||
lbCapabilities.put(Capability.SupportedProtocols, "tcp, udp");
|
||||
lbCapabilities.put(Capability.SupportedProtocols, "tcp, udp, tcp-proxy");
|
||||
lbCapabilities.put(Capability.SupportedStickinessMethods, getHAProxyStickinessCapability());
|
||||
lbCapabilities.put(Capability.LbSchemes, LoadBalancerContainer.Scheme.Public.toString());
|
||||
|
||||
|
||||
@ -301,6 +301,7 @@ public class CommandSetupHelper {
|
||||
for (final LoadBalancingRule rule : rules) {
|
||||
final boolean revoked = rule.getState().equals(FirewallRule.State.Revoke);
|
||||
final String protocol = rule.getProtocol();
|
||||
final String lb_protocol = rule.getLbProtocol();
|
||||
final String algorithm = rule.getAlgorithm();
|
||||
final String uuid = rule.getUuid();
|
||||
|
||||
@ -309,6 +310,7 @@ public class CommandSetupHelper {
|
||||
final List<LbDestination> destinations = rule.getDestinations();
|
||||
final List<LbStickinessPolicy> stickinessPolicies = rule.getStickinessPolicies();
|
||||
final LoadBalancerTO lb = new LoadBalancerTO(uuid, srcIp, srcPort, protocol, algorithm, revoked, false, inline, destinations, stickinessPolicies);
|
||||
lb.setLbProtocol(lb_protocol);
|
||||
lbs[i++] = lb;
|
||||
}
|
||||
String routerPublicIp = null;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user