admin api: convert most bucket operations

This commit is contained in:
Alex Auvolat
2025-01-30 13:36:25 +01:00
parent 819f4f0050
commit f37d5d2b08
10 changed files with 581 additions and 640 deletions
+1
View File
@@ -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)]
+10 -4
View File
@@ -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)",
));
}
};
+2 -1
View File
@@ -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 => {