diff options
Diffstat (limited to 'src/api')
-rw-r--r-- | src/api/admin/api.rs | 1 | ||||
-rw-r--r-- | src/api/admin/bucket.rs | 14 | ||||
-rw-r--r-- | src/api/admin/router_v2.rs | 3 |
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 => { |