cli_v2: migrate cleanupincompleteuploads to Admin API

admin api: add CleanupIncompleteUploads spec
This commit is contained in:
Alex Auvolat
2025-01-30 17:45:54 +01:00
parent e96014ca60
commit bdaf55ab3f
8 changed files with 134 additions and 66 deletions
+14
View File
@@ -62,6 +62,7 @@ admin_endpoints![
CreateBucket,
UpdateBucket,
DeleteBucket,
CleanupIncompleteUploads,
// Operations on permissions for keys on buckets
AllowBucketKey,
@@ -497,6 +498,19 @@ pub struct DeleteBucketRequest {
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DeleteBucketResponse;
// ---- CleanupIncompleteUploads ----
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CleanupIncompleteUploadsRequest {
pub bucket_id: String,
pub older_than_secs: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CleanupIncompleteUploadsResponse {
pub uploads_deleted: u64,
}
// **********************************************
// Operations on permissions for keys on buckets
// **********************************************
+21
View File
@@ -1,5 +1,6 @@
use std::collections::HashMap;
use std::sync::Arc;
use std::time::Duration;
use async_trait::async_trait;
@@ -388,6 +389,26 @@ impl EndpointHandler for UpdateBucketRequest {
}
}
#[async_trait]
impl EndpointHandler for CleanupIncompleteUploadsRequest {
type Response = CleanupIncompleteUploadsResponse;
async fn handle(self, garage: &Arc<Garage>) -> Result<CleanupIncompleteUploadsResponse, Error> {
let duration = Duration::from_secs(self.older_than_secs);
let bucket_id = parse_bucket_id(&self.bucket_id)?;
let count = garage
.bucket_helper()
.cleanup_incomplete_uploads(&bucket_id, duration)
.await?;
Ok(CleanupIncompleteUploadsResponse {
uploads_deleted: count as u64,
})
}
}
// ---- BUCKET/KEY PERMISSIONS ----
#[async_trait]
+1
View File
@@ -52,6 +52,7 @@ impl AdminApiRequest {
POST CreateBucket (body),
POST DeleteBucket (query::id),
POST UpdateBucket (body_field, query::id),
POST CleanupIncompleteUploads (body),
// Bucket-key permissions
POST AllowBucketKey (body),
POST DenyBucketKey (body),