Skip to content

Commit 7141c7e

Browse files
committed
Move global setting from api to engine/components-api
1 parent 674917d commit 7141c7e

File tree

6 files changed

+40
-32
lines changed

6 files changed

+40
-32
lines changed

api/src/main/java/org/apache/cloudstack/network/lb/LoadBalancerConfigKey.java

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,10 @@
2020
import java.util.LinkedHashMap;
2121
import java.util.Map;
2222

23-
import com.cloud.network.rules.LoadBalancer;
2423
import com.cloud.network.rules.LoadBalancerConfig.Scope;
2524
import com.cloud.utils.Pair;
26-
import org.apache.cloudstack.framework.config.ConfigKey;
27-
import org.apache.cloudstack.framework.config.Configurable;
2825

29-
public enum LoadBalancerConfigKey implements Configurable {
26+
public enum LoadBalancerConfigKey {
3027

3128
LbStatsEnable(Category.Stats, "lb.stats.enable", "LB stats enable", Boolean.class, "true", "Enable statistics reporting with default settings, default is 'true'", Scope.Network, Scope.Vpc),
3229

@@ -66,22 +63,7 @@ public enum LoadBalancerConfigKey implements Configurable {
6663

6764
LbServerMaxQueue(Category.LoadBalancer, "lb.server.maxqueue", "Max conn wait in queue per server", Long.class, "<0 means unlimited in haproxy>", "Maximum number of connections which will wait in queue for this server, default is ''", Scope.LoadBalancerRule),
6865

69-
LbSslConfiguration(Category.LoadBalancer, "lb.ssl.configuration", "SSL configuration, could be 'none', 'old' or 'intermediate'", String.class, "none" , "if 'none', no SSL configurations will be added, if 'old', refer to https://ssl-config.mozilla.org/#server=haproxy&server-version=1.8.17&config=old&openssl-version=1.0.2l if 'intermediate', refer to https://ssl-config.mozilla.org/#server=haproxy&server-version=1.8.17&config=intermediate&openssl-version=1.0.2l default value is 'none'", Scope.LoadBalancerRule);
70-
71-
private static final String DefaultValueOfSSLCustomizationCK = "default.value.of.ssl.customization";
72-
73-
private static final ConfigKey<String> DefaultValueOfSALCustomization = new ConfigKey<>("Advanced", String.class, DefaultValueOfSSLCustomizationCK, "none",
74-
"Control default value of load balancer ssl customization", true, ConfigKey.Scope.Global);
75-
76-
@Override
77-
public String getConfigComponentName() {
78-
return LoadBalancerConfigKey.class.getSimpleName();
79-
}
80-
81-
@Override
82-
public ConfigKey<?>[] getConfigKeys() {
83-
return new ConfigKey[]{DefaultValueOfSALCustomization};
84-
}
66+
LbSslConfiguration(Category.LoadBalancer, "lb.ssl.configuration", "SSL configuration, could be 'none', 'old' or 'intermediate'", String.class, "Inherited from global setting" , "if 'none', no SSL configurations will be added, if 'old', refer to https://ssl-config.mozilla.org/#server=haproxy&server-version=1.8.17&config=old&openssl-version=1.0.2l if 'intermediate', refer to https://ssl-config.mozilla.org/#server=haproxy&server-version=1.8.17&config=intermediate&openssl-version=1.0.2l default value is 'none'", Scope.LoadBalancerRule);
8567

8668
public static enum Category {
8769
General, Advanced, Stats, LoadBalancer
@@ -122,8 +104,6 @@ public String displayText() {
122104
}
123105

124106
public String defaultValue() {
125-
if(key().equals("lb.ssl.configuration"))
126-
return DefaultValueOfSALCustomization.value();
127107
return _defaultValue;
128108
}
129109

@@ -220,8 +200,8 @@ public static Pair<LoadBalancerConfigKey, String> validate(Scope scope, String k
220200
}
221201
}
222202

223-
if(key.equals("lb.ssl.configuration")){
224-
if ( !("none".equalsIgnoreCase(value) || "old".equalsIgnoreCase(value) || "intermediate".equalsIgnoreCase(value)) ){
203+
if (LbSslConfiguration.key().equals(key)) {
204+
if (! "none".equalsIgnoreCase(value) && ! "old".equalsIgnoreCase(value) && ! "intermediate".equalsIgnoreCase(value)) {
225205
return new Pair<>(null, "Please enter either 'none', 'old' or 'intermediate' for parameter " + key);
226206
}
227207
}

core/src/main/java/com/cloud/agent/api/routing/LoadBalancerConfigCommand.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public class LoadBalancerConfigCommand extends NetworkElementCommand {
4343
public String lbStatsUri = "/admin?stats";
4444
public String maxconn = "";
4545
public String lbProtocol;
46+
public String lbSslConfiguration = "";
4647
public boolean keepAliveEnabled = false;
4748
NicTO nic;
4849
Long vpcId;

core/src/main/java/com/cloud/network/HAProxyConfigurator.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -483,8 +483,11 @@ private String getLbSubRuleForStickiness(final LoadBalancerTO lbTO) {
483483
return sb.toString();
484484
}
485485

486-
private String getCustomizedSslConfigs(HashMap<String, String> lbConfigsMap){
486+
private String getCustomizedSslConfigs(HashMap<String, String> lbConfigsMap, final LoadBalancerConfigCommand lbCmd){
487487
String lbSslConfiguration = lbConfigsMap.get(LoadBalancerConfigKey.LbSslConfiguration.key());
488+
if (lbSslConfiguration == null) {
489+
lbSslConfiguration = lbCmd.lbSslConfiguration;
490+
}
488491
if ("old".equalsIgnoreCase(lbSslConfiguration)) {
489492
return sslConfigurationOld;
490493
} else if ("intermediate".equalsIgnoreCase(lbSslConfiguration)) {
@@ -493,7 +496,7 @@ private String getCustomizedSslConfigs(HashMap<String, String> lbConfigsMap){
493496
return "";
494497
}
495498

496-
private List<String> getRulesForPool(final LoadBalancerTO lbTO, boolean keepAliveEnabled, final String networkCidr, HashMap<String, String> networkLbConfigsMap) {
499+
private List<String> getRulesForPool(final LoadBalancerTO lbTO, final LoadBalancerConfigCommand lbCmd, HashMap<String, String> networkLbConfigsMap) {
497500
StringBuilder sb = new StringBuilder();
498501
final String poolName = sb.append(lbTO.getSrcIp().replace(".", "_")).append('-').append(lbTO.getSrcPort()).toString();
499502
final String publicIP = lbTO.getSrcIp();
@@ -533,7 +536,7 @@ private List<String> getRulesForPool(final LoadBalancerTO lbTO, boolean keepAliv
533536
sb.append(" alpn h2,http/1.1");
534537
}
535538

536-
sb.append(getCustomizedSslConfigs(lbConfigsMap));
539+
sb.append(getCustomizedSslConfigs(lbConfigsMap, lbCmd));
537540

538541
sb.append("\n\thttp-request add-header X-Forwarded-Proto https");
539542
}
@@ -604,8 +607,9 @@ private List<String> getRulesForPool(final LoadBalancerTO lbTO, boolean keepAliv
604607
sb.append(" check");
605608
}
606609

607-
sb.append(getCustomizedSslConfigs(lbConfigsMap));
608-
610+
if (sslOffloading) {
611+
sb.append(getCustomizedSslConfigs(lbConfigsMap, lbCmd));
612+
}
609613

610614
if (lbConfigsMap.get(LoadBalancerConfigKey.LbServerMaxConn.key()) != null) {
611615
long maxConnEach = Long.parseLong(lbConfigsMap.get(LoadBalancerConfigKey.LbServerMaxConn.key()));
@@ -668,6 +672,7 @@ private List<String> getRulesForPool(final LoadBalancerTO lbTO, boolean keepAliv
668672
http = true;
669673
}
670674

675+
boolean keepAliveEnabled = lbCmd.keepAliveEnabled;
671676
String cfgLbHttpKeepalive = lbConfigsMap.get(LoadBalancerConfigKey.LbHttpKeepalive.key());
672677
if (cfgLbHttpKeepalive != null && cfgLbHttpKeepalive.equalsIgnoreCase("true")) {
673678
keepAliveEnabled = true;
@@ -699,7 +704,7 @@ private List<String> getRulesForPool(final LoadBalancerTO lbTO, boolean keepAliv
699704
result.add(sb.toString());
700705
result.addAll(frontendConfigs);
701706
sb = new StringBuilder();
702-
sb.append("\tacl local_subnet src ").append(networkCidr);
707+
sb.append("\tacl local_subnet src ").append(lbCmd.getNetworkCidr());
703708
sb.append("\n\tuse_backend ").append(poolName).append("-backend-local if local_subnet");
704709
sb.append("\n\tdefault_backend ").append(poolName).append("-backend");
705710
sb.append("\n\n");
@@ -864,7 +869,7 @@ public String[] generateConfiguration(final LoadBalancerConfigCommand lbCmd) {
864869
if (lbTO.isRevoked()) {
865870
continue;
866871
}
867-
final List<String> poolRules = getRulesForPool(lbTO, lbCmd.keepAliveEnabled, lbCmd.getNetworkCidr(), networkLbConfigsMap);
872+
final List<String> poolRules = getRulesForPool(lbTO, lbCmd, networkLbConfigsMap);
868873
result.addAll(poolRules);
869874
has_listener = true;
870875
}

engine/components-api/src/main/java/com/cloud/network/lb/LoadBalancerConfigManager.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,17 @@
1919
import java.util.List;
2020

2121
import com.cloud.network.rules.LoadBalancerConfig;
22+
import org.apache.cloudstack.framework.config.ConfigKey;
23+
import org.apache.cloudstack.framework.config.Configurable;
2224

23-
public interface LoadBalancerConfigManager {
25+
public interface LoadBalancerConfigManager extends Configurable {
26+
27+
static final String DefaultLbSSLConfigurationCK = "default.lb.ssl.configuration";
28+
29+
static final ConfigKey<String> DefaultLbSSLConfiguration = new ConfigKey<>("Advanced", String.class,
30+
DefaultLbSSLConfigurationCK, "none",
31+
"Default value of load balancer ssl configuration, could be 'none', 'old' or 'intermediate'",
32+
true, ConfigKey.Scope.Global);
2433

2534
List<? extends LoadBalancerConfig> getNetworkLbConfigs(Long networkId);
2635

server/src/main/java/com/cloud/network/lb/LoadBalancerConfigManagerImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import org.apache.cloudstack.api.command.user.loadbalancer.ReplaceLoadBalancerConfigsCmd;
5353
import org.apache.cloudstack.api.command.user.loadbalancer.UpdateLoadBalancerConfigCmd;
5454
import org.apache.cloudstack.context.CallContext;
55+
import org.apache.cloudstack.framework.config.ConfigKey;
5556
import org.apache.cloudstack.network.lb.LoadBalancerConfigKey;
5657
import org.apache.log4j.Logger;
5758

@@ -384,4 +385,15 @@ private boolean applyLbConfigsForNetwork(Long networkId) {
384385
throw new CloudRuntimeException("Failed to apply LB configs in virtual router on network: " + networkId);
385386
}
386387
}
388+
389+
@Override
390+
public String getConfigComponentName() {
391+
return LoadBalancerConfigManager.class.getSimpleName();
392+
}
393+
394+
@Override
395+
public ConfigKey<?>[] getConfigKeys() {
396+
return new ConfigKey[]{ DefaultLbSSLConfiguration };
397+
}
398+
387399
}

server/src/main/java/com/cloud/network/router/CommandSetupHelper.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ public void createApplyLoadBalancingRulesCommands(final List<LoadBalancingRule>
366366
cmd.lbStatsUri = _configDao.getValue(Config.NetworkLBHaproxyStatsUri.key());
367367
cmd.lbStatsAuth = _configDao.getValue(Config.NetworkLBHaproxyStatsAuth.key());
368368
cmd.lbStatsPort = _configDao.getValue(Config.NetworkLBHaproxyStatsPort.key());
369+
cmd.lbSslConfiguration = _configDao.getValue("default.lb.ssl.configuration");
369370

370371
cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, _routerControlHelper.getRouterControlIp(router.getId()));
371372
cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, _routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId()));

0 commit comments

Comments
 (0)