CLI: garage json-api: allow payload to be omitted more often

This commit is contained in:
Alex Auvolat
2026-07-25 15:24:31 +02:00
parent 8d85301808
commit be17e25bee
2 changed files with 23 additions and 11 deletions
+22 -9
View File
@@ -110,16 +110,29 @@ impl Cli {
Ok(resp.success.into_iter().next().unwrap().1)
}
pub async fn cmd_json_api(&self, endpoint: String, payload: String) -> Result<(), Error> {
let payload: serde_json::Value = if payload == "-" {
serde_json::from_reader(&std::io::stdin())?
} else {
serde_json::from_str(&payload)?
};
pub async fn cmd_json_api(
&self,
endpoint: String,
payload: Option<String>,
) -> Result<(), Error> {
let request: AdminApiRequest = if let Some(payload) = payload {
let payload: serde_json::Value = if payload == "-" {
serde_json::from_reader(&std::io::stdin())?
} else {
serde_json::from_str(&payload)?
};
let request: AdminApiRequest = serde_json::from_value(serde_json::json!({
endpoint.clone(): payload,
}))?;
serde_json::from_value(serde_json::json!({
endpoint.clone(): payload,
}))?
} else {
serde_json::from_value(serde_json::json!({
endpoint.clone(): null,
}))
.or(serde_json::from_value(serde_json::json!({
endpoint.clone(): {},
})))?
};
let resp = match self
.proxy_rpc_endpoint
+1 -2
View File
@@ -78,8 +78,7 @@ pub enum Command {
/// The admin API endpoint to invoke, e.g. `GetClusterStatus`
endpoint: String,
/// The JSON payload, or `-` to read from `stdin`
#[structopt(default_value = "null")]
payload: String,
payload: Option<String>,
},
/// Generate completions for a shell