admin api: generate params from struct
All checks were successful
ci/woodpecker/pr/debug Pipeline was successful
ci/woodpecker/push/debug Pipeline was successful

This commit is contained in:
Alex 2025-03-12 11:07:12 +01:00
parent 795b4a41b7
commit 0b12debf6c
3 changed files with 72 additions and 27 deletions

View file

@ -554,13 +554,25 @@
"name": "id",
"in": "path",
"description": "Admin API token ID",
"required": true
"required": true,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "search",
"in": "path",
"description": "Partial token ID or name to search for",
"required": true
"required": true,
"schema": {
"type": [
"string",
"null"
]
}
}
],
"responses": {
@ -634,19 +646,37 @@
"name": "id",
"in": "path",
"description": "Exact bucket ID to look up",
"required": true
"required": true,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "globalAlias",
"in": "path",
"description": "Global alias of bucket to look up",
"required": true
"required": true,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "search",
"in": "path",
"description": "Partial ID or alias to search for",
"required": true
"required": true,
"schema": {
"type": [
"string",
"null"
]
}
}
],
"responses": {
@ -795,19 +825,34 @@
"name": "id",
"in": "path",
"description": "Access key ID",
"required": true
"required": true,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "search",
"in": "path",
"description": "Partial key ID or name to search for",
"required": true
"required": true,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "showSecretKey",
"in": "path",
"description": "Whether to return the secret access key",
"required": true
"required": true,
"schema": {
"type": "boolean"
}
}
],
"responses": {

View file

@ -5,7 +5,7 @@ use std::sync::Arc;
use paste::paste;
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
use utoipa::{IntoParams, ToSchema};
use garage_rpc::*;
@ -303,9 +303,12 @@ pub struct ListAdminTokensResponse(pub Vec<GetAdminTokenInfoResponse>);
// ---- GetAdminTokenInfo ----
#[derive(Debug, Clone, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize, IntoParams)]
#[serde(rename_all = "camelCase")]
pub struct GetAdminTokenInfoRequest {
/// Admin API token ID
pub id: Option<String>,
/// Partial token ID or name to search for
pub search: Option<String>,
}
@ -634,10 +637,15 @@ pub struct ListKeysResponseItem {
// ---- GetKeyInfo ----
#[derive(Debug, Clone, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize, IntoParams)]
#[serde(rename_all = "camelCase")]
pub struct GetKeyInfoRequest {
/// Access key ID
pub id: Option<String>,
/// Partial key ID or name to search for
pub search: Option<String>,
/// Whether to return the secret access key
#[serde(default)]
pub show_secret_key: bool,
}
@ -761,10 +769,14 @@ pub struct BucketLocalAlias {
// ---- GetBucketInfo ----
#[derive(Debug, Clone, Serialize, Deserialize)]
#[derive(Debug, Clone, Serialize, Deserialize, IntoParams)]
#[serde(rename_all = "camelCase")]
pub struct GetBucketInfoRequest {
/// Exact bucket ID to look up
pub id: Option<String>,
/// Global alias of bucket to look up
pub global_alias: Option<String>,
/// Partial ID or alias to search for
pub search: Option<String>,
}

View file

@ -57,7 +57,6 @@ do not correspond to an actual website.
)]
fn CheckDomain() -> () {}
// **********************************************
// Cluster operations
// **********************************************
@ -141,10 +140,7 @@ fn ListAdminTokens() -> () {}
Return information about a specific admin API token.
You can search by specifying the exact token identifier (`id`) or by specifying a pattern (`search`).
",
params(
("id", description = "Admin API token ID"),
("search", description = "Partial token ID or name to search for"),
),
params(GetAdminTokenInfoRequest),
responses(
(status = 200, description = "Information about the admin token", body = GetAdminTokenInfoResponse),
(status = 500, description = "Internal server error")
@ -337,11 +333,7 @@ You can search by specifying the exact key identifier (`id`) or by specifying a
For confidentiality reasons, the secret key is not returned by default: you must pass the `showSecretKey` query parameter to get it.
",
params(
("id", description = "Access key ID"),
("search", description = "Partial key ID or name to search for"),
("showSecretKey", description = "Whether to return the secret access key"),
),
params(GetKeyInfoRequest),
responses(
(status = 200, description = "Information about the access key", body = GetKeyInfoResponse),
(status = 500, description = "Internal server error")
@ -434,11 +426,7 @@ It includes its aliases, its web configuration, keys that have some permissions
on it, some statistics (number of objects, size), number of dangling multipart uploads,
and its quotas (if any).
",
params(
("id", description = "Exact bucket ID to look up"),
("globalAlias", description = "Global alias of bucket to look up"),
("search", description = "Partial ID or alias to search for"),
),
params(GetBucketInfoRequest),
responses(
(status = 200, description = "Returns exhaustive information about the bucket", body = GetBucketInfoResponse),
(status = 500, description = "Internal server error")