aboutsummaryrefslogtreecommitdiff
path: root/src/api/admin
diff options
context:
space:
mode:
authorAlex Auvolat <lx@deuxfleurs.fr>2025-01-30 13:36:25 +0100
committerAlex Auvolat <lx@deuxfleurs.fr>2025-01-30 13:36:25 +0100
commitf37d5d2b08b008eba7b1ee8d84b08d5fddeabf78 (patch)
tree453085c608fc35687f5207bffc2fc5a007d918e2 /src/api/admin
parent819f4f00509a57097d0ee8291e1556829e982e14 (diff)
downloadgarage-f37d5d2b08b008eba7b1ee8d84b08d5fddeabf78.tar.gz
garage-f37d5d2b08b008eba7b1ee8d84b08d5fddeabf78.zip
admin api: convert most bucket operations
Diffstat (limited to 'src/api/admin')
-rw-r--r--src/api/admin/api.rs1
-rw-r--r--src/api/admin/bucket.rs14
-rw-r--r--src/api/admin/router_v2.rs3
3 files changed, 13 insertions, 5 deletions
diff --git a/src/api/admin/api.rs b/src/api/admin/api.rs
index 52ecd501..21133f10 100644
--- a/src/api/admin/api.rs
+++ b/src/api/admin/api.rs
@@ -395,6 +395,7 @@ pub struct BucketLocalAlias {
pub struct GetBucketInfoRequest {
pub id: Option<String>,
pub global_alias: Option<String>,
+ pub search: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
diff --git a/src/api/admin/bucket.rs b/src/api/admin/bucket.rs
index 0cc420ec..d2d75fc0 100644
--- a/src/api/admin/bucket.rs
+++ b/src/api/admin/bucket.rs
@@ -73,16 +73,22 @@ impl EndpointHandler for GetBucketInfoRequest {
type Response = GetBucketInfoResponse;
async fn handle(self, garage: &Arc<Garage>) -> Result<GetBucketInfoResponse, Error> {
- let bucket_id = match (self.id, self.global_alias) {
- (Some(id), None) => parse_bucket_id(&id)?,
- (None, Some(ga)) => garage
+ let bucket_id = match (self.id, self.global_alias, self.search) {
+ (Some(id), None, None) => parse_bucket_id(&id)?,
+ (None, Some(ga), None) => garage
.bucket_helper()
.resolve_global_bucket_name(&ga)
.await?
.ok_or_else(|| HelperError::NoSuchBucket(ga.to_string()))?,
+ (None, None, Some(search)) => {
+ garage
+ .bucket_helper()
+ .admin_get_existing_matching_bucket(&search)
+ .await?
+ }
_ => {
return Err(Error::bad_request(
- "Either id or globalAlias must be provided (but not both)",
+ "Either id, globalAlias or search must be provided (but not several of them)",
));
}
};
diff --git a/src/api/admin/router_v2.rs b/src/api/admin/router_v2.rs
index 29250f39..9d60b312 100644
--- a/src/api/admin/router_v2.rs
+++ b/src/api/admin/router_v2.rs
@@ -46,7 +46,7 @@ impl AdminApiRequest {
POST DeleteKey (query::id),
GET ListKeys (),
// Bucket endpoints
- GET GetBucketInfo (query_opt::id, query_opt::global_alias),
+ GET GetBucketInfo (query_opt::id, query_opt::global_alias, query_opt::search),
GET ListBuckets (),
POST CreateBucket (body),
POST DeleteBucket (query::id),
@@ -141,6 +141,7 @@ impl AdminApiRequest {
Ok(AdminApiRequest::GetBucketInfo(GetBucketInfoRequest {
id,
global_alias,
+ search: None,
}))
}
Endpoint::CreateBucket => {