aboutsummaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
authorAlex Auvolat <lx@deuxfleurs.fr>2025-01-29 11:06:45 +0100
committerAlex Auvolat <lx@deuxfleurs.fr>2025-01-29 19:26:16 +0100
commit420bbc162dffd1246544168cf2e935efc60c5c98 (patch)
tree2bb6a733de3e0c1856879631f4397dad0a518cb0 /src/api
parent12ea4cda5fe033fc2b9f1fec51ddc3d8b860a85f (diff)
downloadgarage-420bbc162dffd1246544168cf2e935efc60c5c98.tar.gz
garage-420bbc162dffd1246544168cf2e935efc60c5c98.zip
admin api: clearer syntax for AddBucketAlias and RemoveBucketAlias
Diffstat (limited to 'src/api')
-rw-r--r--src/api/admin/api.rs22
-rw-r--r--src/api/admin/bucket.rs36
-rw-r--r--src/api/admin/cluster.rs9
-rw-r--r--src/api/admin/key.rs7
-rw-r--r--src/api/admin/router_v2.rs22
5 files changed, 51 insertions, 45 deletions
diff --git a/src/api/admin/api.rs b/src/api/admin/api.rs
index 5fedd11f..eac93b6e 100644
--- a/src/api/admin/api.rs
+++ b/src/api/admin/api.rs
@@ -515,22 +515,36 @@ pub struct DenyBucketKeyResponse(pub GetBucketInfoResponse);
// ---- AddBucketAlias ----
#[derive(Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
pub struct AddBucketAliasRequest {
pub bucket_id: String,
- pub access_key_id: Option<String>,
- pub alias: String,
+ #[serde(flatten)]
+ pub alias: BucketAliasEnum,
}
#[derive(Serialize, Deserialize)]
pub struct AddBucketAliasResponse(pub GetBucketInfoResponse);
+#[derive(Serialize, Deserialize)]
+#[serde(untagged)]
+pub enum BucketAliasEnum {
+ #[serde(rename_all = "camelCase")]
+ Global { global_alias: String },
+ #[serde(rename_all = "camelCase")]
+ Local {
+ local_alias: String,
+ access_key_id: String,
+ },
+}
+
// ---- RemoveBucketAlias ----
#[derive(Serialize, Deserialize)]
+#[serde(rename_all = "camelCase")]
pub struct RemoveBucketAliasRequest {
pub bucket_id: String,
- pub access_key_id: Option<String>,
- pub alias: String,
+ #[serde(flatten)]
+ pub alias: BucketAliasEnum,
}
#[derive(Serialize, Deserialize)]
diff --git a/src/api/admin/bucket.rs b/src/api/admin/bucket.rs
index ee7a5e12..0cc420ec 100644
--- a/src/api/admin/bucket.rs
+++ b/src/api/admin/bucket.rs
@@ -16,15 +16,7 @@ use garage_model::permission::*;
use garage_model::s3::mpu_table;
use garage_model::s3::object_table::*;
-use crate::admin::api::ApiBucketKeyPerm;
-use crate::admin::api::{
- AddBucketAliasRequest, AddBucketAliasResponse, AllowBucketKeyRequest, AllowBucketKeyResponse,
- ApiBucketQuotas, BucketKeyPermChangeRequest, BucketLocalAlias, CreateBucketRequest,
- CreateBucketResponse, DeleteBucketRequest, DeleteBucketResponse, DenyBucketKeyRequest,
- DenyBucketKeyResponse, GetBucketInfoKey, GetBucketInfoRequest, GetBucketInfoResponse,
- GetBucketInfoWebsiteResponse, ListBucketsRequest, ListBucketsResponse, ListBucketsResponseItem,
- RemoveBucketAliasRequest, RemoveBucketAliasResponse, UpdateBucketRequest, UpdateBucketResponse,
-};
+use crate::admin::api::*;
use crate::admin::error::*;
use crate::admin::EndpointHandler;
use crate::common_error::CommonError;
@@ -459,15 +451,18 @@ impl EndpointHandler for AddBucketAliasRequest {
let helper = garage.locked_helper().await;
- match self.access_key_id {
- None => {
+ match self.alias {
+ BucketAliasEnum::Global { global_alias } => {
helper
- .set_global_bucket_alias(bucket_id, &self.alias)
+ .set_global_bucket_alias(bucket_id, &global_alias)
.await?;
}
- Some(ak) => {
+ BucketAliasEnum::Local {
+ local_alias,
+ access_key_id,
+ } => {
helper
- .set_local_bucket_alias(bucket_id, &ak, &self.alias)
+ .set_local_bucket_alias(bucket_id, &access_key_id, &local_alias)
.await?;
}
}
@@ -487,15 +482,18 @@ impl EndpointHandler for RemoveBucketAliasRequest {
let helper = garage.locked_helper().await;
- match self.access_key_id {
- None => {
+ match self.alias {
+ BucketAliasEnum::Global { global_alias } => {
helper
- .unset_global_bucket_alias(bucket_id, &self.alias)
+ .unset_global_bucket_alias(bucket_id, &global_alias)
.await?;
}
- Some(ak) => {
+ BucketAliasEnum::Local {
+ local_alias,
+ access_key_id,
+ } => {
helper
- .unset_local_bucket_alias(bucket_id, &ak, &self.alias)
+ .unset_local_bucket_alias(bucket_id, &access_key_id, &local_alias)
.await?;
}
}
diff --git a/src/api/admin/cluster.rs b/src/api/admin/cluster.rs
index 3327cb4c..112cb542 100644
--- a/src/api/admin/cluster.rs
+++ b/src/api/admin/cluster.rs
@@ -10,14 +10,7 @@ use garage_rpc::layout;
use garage_model::garage::Garage;
-use crate::admin::api::{
- ApplyClusterLayoutRequest, ApplyClusterLayoutResponse, ConnectClusterNodeResponse,
- ConnectClusterNodesRequest, ConnectClusterNodesResponse, FreeSpaceResp,
- GetClusterHealthRequest, GetClusterHealthResponse, GetClusterLayoutRequest,
- GetClusterLayoutResponse, GetClusterStatusRequest, GetClusterStatusResponse, NodeResp,
- NodeRoleChange, NodeRoleChangeEnum, NodeRoleResp, RevertClusterLayoutRequest,
- RevertClusterLayoutResponse, UpdateClusterLayoutRequest, UpdateClusterLayoutResponse,
-};
+use crate::admin::api::*;
use crate::admin::error::*;
use crate::admin::EndpointHandler;
diff --git a/src/api/admin/key.rs b/src/api/admin/key.rs
index 5bec2202..3e4201d9 100644
--- a/src/api/admin/key.rs
+++ b/src/api/admin/key.rs
@@ -8,12 +8,7 @@ use garage_table::*;
use garage_model::garage::Garage;
use garage_model::key_table::*;
-use crate::admin::api::{
- ApiBucketKeyPerm, CreateKeyRequest, CreateKeyResponse, DeleteKeyRequest, DeleteKeyResponse,
- GetKeyInfoRequest, GetKeyInfoResponse, ImportKeyRequest, ImportKeyResponse,
- KeyInfoBucketResponse, KeyPerm, ListKeysRequest, ListKeysResponse, ListKeysResponseItem,
- UpdateKeyRequest, UpdateKeyResponse,
-};
+use crate::admin::api::*;
use crate::admin::error::*;
use crate::admin::EndpointHandler;
diff --git a/src/api/admin/router_v2.rs b/src/api/admin/router_v2.rs
index a6f110a7..29250f39 100644
--- a/src/api/admin/router_v2.rs
+++ b/src/api/admin/router_v2.rs
@@ -174,16 +174,18 @@ impl AdminApiRequest {
// Bucket aliasing
Endpoint::GlobalAliasBucket { id, alias } => {
Ok(AdminApiRequest::AddBucketAlias(AddBucketAliasRequest {
- access_key_id: None,
bucket_id: id,
- alias,
+ alias: BucketAliasEnum::Global {
+ global_alias: alias,
+ },
}))
}
Endpoint::GlobalUnaliasBucket { id, alias } => Ok(AdminApiRequest::RemoveBucketAlias(
RemoveBucketAliasRequest {
- access_key_id: None,
bucket_id: id,
- alias,
+ alias: BucketAliasEnum::Global {
+ global_alias: alias,
+ },
},
)),
Endpoint::LocalAliasBucket {
@@ -191,9 +193,11 @@ impl AdminApiRequest {
access_key_id,
alias,
} => Ok(AdminApiRequest::AddBucketAlias(AddBucketAliasRequest {
- access_key_id: Some(access_key_id),
bucket_id: id,
- alias,
+ alias: BucketAliasEnum::Local {
+ local_alias: alias,
+ access_key_id,
+ },
})),
Endpoint::LocalUnaliasBucket {
id,
@@ -201,9 +205,11 @@ impl AdminApiRequest {
alias,
} => Ok(AdminApiRequest::RemoveBucketAlias(
RemoveBucketAliasRequest {
- access_key_id: Some(access_key_id),
bucket_id: id,
- alias,
+ alias: BucketAliasEnum::Local {
+ local_alias: alias,
+ access_key_id,
+ },
},
)),