Skip to content

Commit

Permalink
write LoadBalancingAlgorithms in protobuf
Browse files Browse the repository at this point in the history
  • Loading branch information
Keksoj committed Apr 5, 2023
1 parent 5a77faf commit f434974
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 28 deletions.
4 changes: 2 additions & 2 deletions bin/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -244,8 +244,8 @@ cipher_list = [
protocol = "http"

# per cluster load balancing algorithm. The possible values are
# "round_robin", "random", "least_loaded" and "power_of_two". Defaults to "round_robin"
load_balancing = "round_robin"
# "ROUND_ROBIN", "RANDOM", "LEAST_LOADED" and "POWER_OF_TWO". Defaults to "ROUND_ROBIN"
load_balancing = "ROUND_ROBIN"
# metric evaluating the load on the backend. available options: connections, requests, connection_time
# load_metric = "connections"

Expand Down
2 changes: 1 addition & 1 deletion bin/src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use std::{collections::BTreeMap, net::SocketAddr};
use clap::{Parser, Subcommand};

use sozu_command_lib::{
proto::command::TlsVersion, request::LoadBalancingAlgorithms,
proto::command::{LoadBalancingAlgorithms, TlsVersion},
state::ClusterId as StateClusterId,
};

Expand Down
10 changes: 9 additions & 1 deletion command/src/command.proto
Original file line number Diff line number Diff line change
Expand Up @@ -90,4 +90,12 @@ enum TlsVersion {
TLS_V1_1 = 3;
TLS_V1_2 = 4;
TLS_V1_3 = 5;
}
}

// TODO: check that default is ROUND_ROBIN
enum LoadBalancingAlgorithms {
ROUND_ROBIN = 0;
RANDOM = 1;
LEAST_LOADED = 2;
POWER_OF_TWO = 3;
}
7 changes: 4 additions & 3 deletions command/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@ use toml;
use crate::{
certificate::split_certificate_chain,
proto::command::{
AddCertificate, CertificateAndKey, PathRule, RequestHttpFrontend, RulePosition, TlsVersion,
AddCertificate, CertificateAndKey, LoadBalancingAlgorithms, PathRule, RequestHttpFrontend,
RulePosition, TlsVersion,
},
request::{
ActivateListener, AddBackend, Cluster, ListenerType, LoadBalancingAlgorithms,
LoadBalancingParams, LoadMetric, Request, RequestTcpFrontend, WorkerRequest,
ActivateListener, AddBackend, Cluster, ListenerType, LoadBalancingParams, LoadMetric,
Request, RequestTcpFrontend, WorkerRequest,
},
response::{HttpListenerConfig, HttpsListenerConfig, TcpListenerConfig},
};
Expand Down
15 changes: 4 additions & 11 deletions command/src/request.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ use crate::{
certificate::Fingerprint,
config::ProxyProtocolConfig,
proto::command::{
AddCertificate, FrontendFilters, PathRuleKind, RemoveCertificate, ReplaceCertificate,
RequestHttpFrontend, RulePosition,
AddCertificate, FrontendFilters, LoadBalancingAlgorithms, PathRuleKind, RemoveCertificate,
ReplaceCertificate, RequestHttpFrontend, RulePosition,
},
response::{
HttpFrontend, HttpListenerConfig, HttpsListenerConfig, MessageId, TcpListenerConfig,
Expand Down Expand Up @@ -366,20 +366,13 @@ pub struct QueryMetricsOptions {
pub metric_names: Vec<String>,
}

#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum LoadBalancingAlgorithms {
RoundRobin,
Random,
LeastLoaded,
PowerOfTwo,
}

/*
impl Default for LoadBalancingAlgorithms {
fn default() -> Self {
LoadBalancingAlgorithms::RoundRobin
}
}
*/

#[derive(Debug)]
pub struct ParseErrorLoadBalancing;
Expand Down
4 changes: 2 additions & 2 deletions command/src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1245,8 +1245,8 @@ impl<
mod tests {
use super::*;
use crate::{
proto::command::{RequestHttpFrontend, RulePosition},
request::{LoadBalancingAlgorithms, LoadBalancingParams, Request},
proto::command::{LoadBalancingAlgorithms, RequestHttpFrontend, RulePosition},
request::{LoadBalancingParams, Request},
};

#[test]
Expand Down
5 changes: 2 additions & 3 deletions e2e/src/sozu/worker.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,9 @@ use sozu_command::{
channel::Channel,
config::{Config, ConfigBuilder, FileConfig},
logging::{Logger, LoggerBackend},
proto::command::{PathRule, RequestHttpFrontend, RulePosition},
proto::command::{LoadBalancingAlgorithms, PathRule, RequestHttpFrontend, RulePosition},
request::{
AddBackend, Cluster, LoadBalancingAlgorithms, LoadBalancingParams, Request,
RequestTcpFrontend, WorkerRequest,
AddBackend, Cluster, LoadBalancingParams, Request, RequestTcpFrontend, WorkerRequest,
},
response::WorkerResponse,
scm_socket::{Listeners, ScmSocket},
Expand Down
4 changes: 1 addition & 3 deletions lib/src/backends.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@ use anyhow::{bail, Context};
use mio::net::TcpStream;

use sozu_command::{
request::{LoadBalancingAlgorithms, LoadMetric},
response::Event,
state::ClusterId,
proto::command::LoadBalancingAlgorithms, request::LoadMetric, response::Event, state::ClusterId,
};

use crate::server::push_event;
Expand Down
4 changes: 2 additions & 2 deletions lib/src/http.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1111,8 +1111,8 @@ mod tests {
use crate::sozu_command::{
channel::Channel,
config::ListenerBuilder,
proto::command::{PathRule, RulePosition},
request::{LoadBalancingAlgorithms, LoadBalancingParams, Request, WorkerRequest},
proto::command::{LoadBalancingAlgorithms, PathRule, RulePosition},
request::{LoadBalancingParams, Request, WorkerRequest},
response::{Backend, HttpFrontend},
};

Expand Down

0 comments on commit f434974

Please sign in to comment.