Separate /health (simple text answer) and /v0/health (full json answer, authenticated)

This commit is contained in:
Alex Auvolat
2022-12-05 15:38:32 +01:00
parent 280d1be7b1
commit d7868c48a4
3 changed files with 33 additions and 48 deletions
+17
View File
@@ -9,6 +9,7 @@ use garage_util::crdt::*;
use garage_util::data::*;
use garage_rpc::layout::*;
use garage_rpc::system::ClusterHealthStatus;
use garage_model::garage::Garage;
@@ -43,6 +44,22 @@ pub async fn handle_get_cluster_status(garage: &Arc<Garage>) -> Result<Response<
Ok(json_ok_response(&res)?)
}
pub async fn handle_get_cluster_health(garage: &Arc<Garage>) -> Result<Response<Body>, Error> {
let health = garage.system.health();
let status = match health.status {
ClusterHealthStatus::Unavailable => StatusCode::SERVICE_UNAVAILABLE,
_ => StatusCode::OK,
};
let resp_json =
serde_json::to_string_pretty(&health).map_err(garage_util::error::Error::from)?;
Ok(Response::builder()
.status(status)
.header(http::header::CONTENT_TYPE, "application/json")
.body(Body::from(resp_json))?)
}
pub async fn handle_connect_cluster_nodes(
garage: &Arc<Garage>,
req: Request<Body>,