diff options
author | Alex Auvolat <alex@adnab.me> | 2023-06-14 13:53:19 +0200 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2023-06-14 13:53:19 +0200 |
commit | 35c108b85d2b70ad28cd93bfd412607a89b9acf9 (patch) | |
tree | bf64fed2c762a1981c92492e470113574d46d2a8 /src/api | |
parent | 52376d47caf747f5cf93a21e5c15e4e6b8d991ee (diff) | |
download | garage-35c108b85d2b70ad28cd93bfd412607a89b9acf9.tar.gz garage-35c108b85d2b70ad28cd93bfd412607a89b9acf9.zip |
admin api: switch GetClusterHealth to camelcase (fix #381 again)
Diffstat (limited to 'src/api')
-rw-r--r-- | src/api/admin/cluster.rs | 28 | ||||
-rw-r--r-- | src/api/admin/router.rs | 2 |
2 files changed, 29 insertions, 1 deletions
diff --git a/src/api/admin/cluster.rs b/src/api/admin/cluster.rs index 8a208a2c..90203043 100644 --- a/src/api/admin/cluster.rs +++ b/src/api/admin/cluster.rs @@ -40,7 +40,22 @@ pub async fn handle_get_cluster_status(garage: &Arc<Garage>) -> Result<Response< } pub async fn handle_get_cluster_health(garage: &Arc<Garage>) -> Result<Response<Body>, Error> { + use garage_rpc::system::ClusterHealthStatus; let health = garage.system.health(); + let health = ClusterHealth { + status: match health.status { + ClusterHealthStatus::Healthy => "healthy", + ClusterHealthStatus::Degraded => "degraded", + ClusterHealthStatus::Unavailable => "unavailable", + }, + known_nodes: health.known_nodes, + connected_nodes: health.connected_nodes, + storage_nodes: health.storage_nodes, + storage_nodes_ok: health.storage_nodes_ok, + partitions: health.partitions, + partitions_quorum: health.partitions_quorum, + partitions_all_ok: health.partitions_all_ok, + }; Ok(json_ok_response(&health)?) } @@ -120,6 +135,19 @@ fn get_cluster_layout(garage: &Arc<Garage>) -> GetClusterLayoutResponse { // ---- +#[derive(Debug, Clone, Copy, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct ClusterHealth { + pub status: &'static str, + pub known_nodes: usize, + pub connected_nodes: usize, + pub storage_nodes: usize, + pub storage_nodes_ok: usize, + pub partitions: usize, + pub partitions_quorum: usize, + pub partitions_all_ok: usize, +} + #[derive(Serialize)] #[serde(rename_all = "camelCase")] struct GetClusterStatusResponse { diff --git a/src/api/admin/router.rs b/src/api/admin/router.rs index 5af3ffb5..b98db284 100644 --- a/src/api/admin/router.rs +++ b/src/api/admin/router.rs @@ -96,7 +96,7 @@ impl Endpoint { GET "/health" => Health, GET "/metrics" => Metrics, GET "/v1/status" => GetClusterStatus, - GET "/v0/health" => GetClusterHealth, + GET "/v1/health" => GetClusterHealth, POST "/v0/connect" => ConnectClusterNodes, // Layout endpoints GET "/v1/layout" => GetClusterLayout, |