Skip to content

Commit 552209f

Browse files
committed
dnsdist: Handle the default LB policy in YAML configuration
1 parent 1ac2722 commit 552209f

File tree

4 files changed

+24
-0
lines changed

4 files changed

+24
-0
lines changed

pdns/dnsdistdist/dnsdist-configuration-yaml.cc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -831,6 +831,13 @@ bool loadConfigurationFromFile(const std::string& fileName, bool isClient, bool
831831
}
832832
}
833833

834+
if (!globalConfig.load_balancing_policies.default_policy.empty()) {
835+
auto policy = getRegisteredTypeByName<ServerPolicy>(globalConfig.load_balancing_policies.default_policy);
836+
dnsdist::configuration::updateRuntimeConfiguration([&policy](dnsdist::configuration::RuntimeConfiguration& config) {
837+
config.d_lbPolicy = std::move(policy);
838+
});
839+
}
840+
834841
for (const auto& pool : globalConfig.pools) {
835842
std::shared_ptr<ServerPool> poolObj = createPoolIfNotExists(std::string(pool.name));
836843
if (!pool.packet_cache.empty()) {

pdns/dnsdistdist/dnsdist-rust-lib/rust/src/lib.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2010,6 +2010,8 @@ mod dnsdistsettings {
20102010
#[derive(Deserialize, Serialize, Debug, PartialEq)]
20112011
#[serde(deny_unknown_fields)]
20122012
struct LoadBalancingPoliciesConfiguration {
2013+
#[serde(rename = "default-policy", default = "crate::default_value_load_balancing_policies_default_policy", skip_serializing_if = "crate::default_value_equal_load_balancing_policies_default_policy")]
2014+
default_policy: String,
20132015
#[serde(rename = "servfail-on-no-server", default, skip_serializing_if = "crate::is_default")]
20142016
servfail_on_no_server: bool,
20152017
#[serde(rename = "round-robin-servfail-on-no-server", default, skip_serializing_if = "crate::is_default")]
@@ -3058,6 +3060,15 @@ impl Default for dnsdistsettings::CustomLoadBalancingPolicyConfiguration {
30583060
}
30593061

30603062

3063+
// DEFAULT HANDLING for load_balancing_policies_default_policy
3064+
fn default_value_load_balancing_policies_default_policy() -> String {
3065+
String::from("leastOutstanding")
3066+
}
3067+
fn default_value_equal_load_balancing_policies_default_policy(value: &str)-> bool {
3068+
value == default_value_load_balancing_policies_default_policy()
3069+
}
3070+
3071+
30613072
impl Default for dnsdistsettings::LoadBalancingPoliciesConfiguration {
30623073
fn default() -> Self {
30633074
let deserialized: dnsdistsettings::LoadBalancingPoliciesConfiguration = serde_yaml::from_str("").unwrap();

pdns/dnsdistdist/dnsdist-settings-definitions.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1411,6 +1411,11 @@ custom-load-balancing-policy:
14111411

14121412
load-balancing-policies:
14131413
parameters:
1414+
- name: "default-policy"
1415+
type: "String"
1416+
default: "leastOutstanding"
1417+
lua-name: "setServerPolicy"
1418+
runtime-configurable: true
14141419
- name: "servfail-on-no-server"
14151420
type: "bool"
14161421
default: "false"

pdns/dnsdistdist/docs/reference/yaml-settings.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,7 @@ LazyHealthCheckConfiguration
501501
LoadBalancingPoliciesConfiguration
502502
----------------------------------
503503

504+
- **default-policy**: String ``(leastOutstanding)``
504505
- **servfail-on-no-server**: Boolean ``(false)``
505506
- **round-robin-servfail-on-no-server**: Boolean ``(false)``
506507
- **weighted-balancing-factor**: Double ``(0.0)``

0 commit comments

Comments
 (0)