Skip to content

Commit

Permalink
create Request::QueryClusterByDomain
Browse files Browse the repository at this point in the history
remove enum QueryClusterType
  • Loading branch information
Keksoj committed Mar 23, 2023
1 parent 7fac13a commit 31d689a
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 49 deletions.
34 changes: 17 additions & 17 deletions bin/src/command/requests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ use sozu_command_lib::{
config::Config,
logging,
parser::parse_several_commands,
request::{FrontendFilters, MetricsConfiguration, QueryClusterType, Request, WorkerRequest},
request::{FrontendFilters, MetricsConfiguration, Request, WorkerRequest},
response::{
AggregatedMetrics, AvailableMetrics, ListedFrontends, ListenersList, Response,
ResponseContent, ResponseStatus, RunState, WorkerInfo,
Expand Down Expand Up @@ -69,7 +69,8 @@ impl CommandServer {
Request::QueryCertificateByFingerprint(_)
| Request::QueryCertificatesByDomain(_)
| Request::QueryAllCertificates
| Request::QueryClusters(_)
| Request::QueryClusterById(_)
| Request::QueryClustersByDomain(_)
| Request::QueryClustersHashes
| Request::QueryMetrics(_) => self.query(client_id, request).await,

Expand Down Expand Up @@ -1057,20 +1058,17 @@ impl CommandServer {
.state
.cluster_state(cluster_id)]))
}
Request::QueryClusters(query_type) => {
main_response_content = Some(ResponseContent::Clusters(match query_type {
QueryClusterType::Domain(domain) => {
let cluster_ids = get_cluster_ids_by_domain(
&self.state,
domain.hostname.clone(),
domain.path.clone(),
);
cluster_ids
.iter()
.map(|cluster_id| self.state.cluster_state(cluster_id))
.collect()
}
}));
Request::QueryClustersByDomain(domain) => {
let cluster_ids = get_cluster_ids_by_domain(
&self.state,
domain.hostname.clone(),
domain.path.clone(),
);
let clusters = cluster_ids
.iter()
.map(|cluster_id| self.state.cluster_state(cluster_id))
.collect();
main_response_content = Some(ResponseContent::Clusters(clusters));
}
_ => {}
};
Expand Down Expand Up @@ -1118,7 +1116,9 @@ impl CommandServer {
.collect();

let response_content = match &request {
&Request::QueryClustersHashes | &Request::QueryClusters(_) => {
&Request::QueryClustersHashes
| &Request::QueryClusterById(_)
| &Request::QueryClustersByDomain(_) => {
let main = main_response_content.unwrap(); // we should refactor to avoid this unwrap()
worker_responses.insert(String::from("main"), main);
ResponseContent::WorkerResponses(worker_responses)
Expand Down
6 changes: 3 additions & 3 deletions bin/src/ctl/command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use serde::Serialize;

use sozu_command_lib::{
certificate::Fingerprint,
request::{QueryClusterDomain, QueryClusterType, QueryMetricsOptions, Request},
request::{QueryClusterByDomain, QueryMetricsOptions, Request},
response::{Response, ResponseContent, ResponseStatus, RunState, WorkerInfo},
};

Expand Down Expand Up @@ -342,15 +342,15 @@ impl CommandManager {
bail!("Domain can't be empty");
}

let query_domain = QueryClusterDomain {
let query_domain = QueryClusterByDomain {
hostname: splitted
.get(0)
.with_context(|| "Domain can't be empty")?
.clone(),
path: splitted.get(1).cloned().map(|path| format!("/{path}")), // We add the / again because of the splitn removing it
};

Request::QueryClusters(QueryClusterType::Domain(query_domain))
Request::QueryClustersByDomain(query_domain)
} else {
Request::QueryClustersHashes
};
Expand Down
13 changes: 3 additions & 10 deletions command/src/request.rs
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ pub enum Request {
QueryCertificatesByDomain(String),

QueryClusterById(ClusterId),
QueryClusters(QueryClusterType),
QueryClustersByDomain(QueryClusterByDomain),
QueryClustersHashes,
QueryMetrics(QueryMetricsOptions),

Expand Down Expand Up @@ -132,7 +132,7 @@ impl Request {
| Request::HardStop
| Request::Status
| Request::QueryClusterById(_)
| Request::QueryClusters(_)
| Request::QueryClustersByDomain(_)
| Request::QueryClustersHashes
| Request::QueryMetrics(_)
| Request::Logging(_) => {
Expand Down Expand Up @@ -376,14 +376,7 @@ pub enum MetricsConfiguration {
}

#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(tag = "type", content = "data", rename_all = "SCREAMING_SNAKE_CASE")]
pub enum QueryClusterType {
// ClusterId(String),
Domain(QueryClusterDomain),
}

#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct QueryClusterDomain {
pub struct QueryClusterByDomain {
pub hostname: String,
pub path: Option<String>,
}
Expand Down
3 changes: 2 additions & 1 deletion command/src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,8 @@ impl ConfigState {
&Request::Logging(_)
| &Request::Status
| &Request::SoftStop
| &Request::QueryClusters(_)
| &Request::QueryClusterById(_)
| &Request::QueryClustersByDomain(_)
| &Request::QueryMetrics(_)
| &Request::QueryClustersHashes
| &Request::ConfigureMetrics(_)
Expand Down
34 changes: 16 additions & 18 deletions lib/src/server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ use sozu_command::{
config::Config,
ready::Ready,
request::{
ActivateListener, AddBackend, Cluster, DeactivateListener, ListenerType, QueryClusterType,
RemoveBackend, Request, WorkerRequest,
ActivateListener, AddBackend, Cluster, DeactivateListener, ListenerType, RemoveBackend,
Request, WorkerRequest,
},
response::{
Event, HttpListenerConfig, HttpsListenerConfig, MessageId, ResponseContent, ResponseStatus,
Expand Down Expand Up @@ -891,23 +891,21 @@ impl Server {
ResponseContent::Clusters(vec![self.config_state.cluster_state(cluster_id)]),
));
}
Request::QueryClusters(query_type) => {
let content = match query_type {
QueryClusterType::Domain(domain) => {
let cluster_ids = get_cluster_ids_by_domain(
&self.config_state,
domain.hostname.clone(),
domain.path.clone(),
);
let answer = cluster_ids
.iter()
.map(|cluster_id| self.config_state.cluster_state(cluster_id))
.collect();
Request::QueryClustersByDomain(domain) => {
let cluster_ids = get_cluster_ids_by_domain(
&self.config_state,
domain.hostname.clone(),
domain.path.clone(),
);
let answer = cluster_ids
.iter()
.map(|cluster_id| self.config_state.cluster_state(cluster_id))
.collect();

ResponseContent::Clusters(answer)
}
};
push_queue(WorkerResponse::ok_with_content(message.id.clone(), content));
push_queue(WorkerResponse::ok_with_content(
message.id.clone(),
ResponseContent::Clusters(answer),
));
return;
}
Request::QueryCertificateByFingerprint(f) => {
Expand Down

0 comments on commit 31d689a

Please sign in to comment.