diff options
author | Alex Auvolat <lx@deuxfleurs.fr> | 2025-02-05 14:22:10 +0100 |
---|---|---|
committer | Alex Auvolat <lx@deuxfleurs.fr> | 2025-02-05 14:22:10 +0100 |
commit | 9f468b4439bdd5e2e67a6215f941556310877155 (patch) | |
tree | 7524ac5326e069d014fd25b624d794d52aa5e745 /src/api/admin | |
parent | 97be7b38fa3bd3172895f6ab44157e5236d65cd6 (diff) | |
download | garage-9f468b4439bdd5e2e67a6215f941556310877155.tar.gz garage-9f468b4439bdd5e2e67a6215f941556310877155.zip |
cli_v2: implement CreateMetadataSnapshot
Diffstat (limited to 'src/api/admin')
-rw-r--r-- | src/api/admin/api.rs | 17 | ||||
-rw-r--r-- | src/api/admin/lib.rs | 1 | ||||
-rw-r--r-- | src/api/admin/node.rs | 23 | ||||
-rw-r--r-- | src/api/admin/router_v2.rs | 2 |
4 files changed, 43 insertions, 0 deletions
diff --git a/src/api/admin/api.rs b/src/api/admin/api.rs index cde11bac..3f041208 100644 --- a/src/api/admin/api.rs +++ b/src/api/admin/api.rs @@ -77,6 +77,9 @@ admin_endpoints![ AddBucketAlias, RemoveBucketAlias, + // Node operations + CreateMetadataSnapshot, + // Worker operations ListWorkers, GetWorkerInfo, @@ -91,6 +94,8 @@ admin_endpoints![ ]; local_admin_endpoints![ + // Node operations + CreateMetadataSnapshot, // Background workers ListWorkers, GetWorkerInfo, @@ -624,6 +629,18 @@ pub struct RemoveBucketAliasRequest { pub struct RemoveBucketAliasResponse(pub GetBucketInfoResponse); // ********************************************** +// Node operations +// ********************************************** + +// ---- CreateMetadataSnapshot ---- + +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +pub struct LocalCreateMetadataSnapshotRequest; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct LocalCreateMetadataSnapshotResponse; + +// ********************************************** // Worker operations // ********************************************** diff --git a/src/api/admin/lib.rs b/src/api/admin/lib.rs index e7ee37af..cc673eef 100644 --- a/src/api/admin/lib.rs +++ b/src/api/admin/lib.rs @@ -16,6 +16,7 @@ mod key; mod special; mod block; +mod node; mod worker; use std::sync::Arc; diff --git a/src/api/admin/node.rs b/src/api/admin/node.rs new file mode 100644 index 00000000..8c79acfd --- /dev/null +++ b/src/api/admin/node.rs @@ -0,0 +1,23 @@ +use std::sync::Arc; + +use async_trait::async_trait; + +use garage_model::garage::Garage; + +use crate::api::*; +use crate::error::Error; +use crate::{Admin, RequestHandler}; + +#[async_trait] +impl RequestHandler for LocalCreateMetadataSnapshotRequest { + type Response = LocalCreateMetadataSnapshotResponse; + + async fn handle( + self, + garage: &Arc<Garage>, + _admin: &Admin, + ) -> Result<LocalCreateMetadataSnapshotResponse, Error> { + garage_model::snapshot::async_snapshot_metadata(garage).await?; + Ok(LocalCreateMetadataSnapshotResponse) + } +} diff --git a/src/api/admin/router_v2.rs b/src/api/admin/router_v2.rs index 74822007..dac6c5f9 100644 --- a/src/api/admin/router_v2.rs +++ b/src/api/admin/router_v2.rs @@ -59,6 +59,8 @@ impl AdminApiRequest { // Bucket aliases POST AddBucketAlias (body), POST RemoveBucketAlias (body), + // Node APIs + POST CreateMetadataSnapshot (default::body, query::node), // Worker APIs POST ListWorkers (body_field, query::node), POST GetWorkerInfo (body_field, query::node), |