mirror of
https://github.com/deuxfleurs-org/garage.git
synced 2026-08-05 12:27:41 +00:00
admin api: clearer syntax for AddBucketAlias and RemoveBucketAlias
This commit is contained in:
+18
-4
@@ -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)]
|
||||
|
||||
+17
-19
@@ -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?;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
},
|
||||
)),
|
||||
|
||||
|
||||
Reference in New Issue
Block a user