api/config: use http_bail for 'not found' errors

the api should return a 404 error for entries that do not exist

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
Dominik Csapak 2022-03-04 14:47:51 +01:00 committed by Wolfgang Bumiller
parent 8d6425aa24
commit dcd1518e10
11 changed files with 32 additions and 32 deletions

View File

@ -1,11 +1,11 @@
/// Configure OpenId realms /// Configure OpenId realms
use anyhow::{bail, Error}; use anyhow::Error;
use serde_json::Value; use serde_json::Value;
use ::serde::{Deserialize, Serialize}; use ::serde::{Deserialize, Serialize};
use hex::FromHex; use hex::FromHex;
use proxmox_router::{Router, RpcEnvironment, Permission}; use proxmox_router::{http_bail, Router, RpcEnvironment, Permission};
use proxmox_schema::{api, param_bail}; use proxmox_schema::{api, param_bail};
use pbs_api_types::{ use pbs_api_types::{
@ -112,7 +112,7 @@ pub fn delete_openid_realm(
} }
if domains.sections.remove(&realm).is_none() { if domains.sections.remove(&realm).is_none() {
bail!("realm '{}' does not exist.", realm); http_bail!(NOT_FOUND, "realm '{}' does not exist.", realm);
} }
domains::save_config(&domains)?; domains::save_config(&domains)?;

View File

@ -1,9 +1,9 @@
use anyhow::{bail, Error}; use anyhow::Error;
use ::serde::{Deserialize, Serialize}; use ::serde::{Deserialize, Serialize};
use serde_json::Value; use serde_json::Value;
use hex::FromHex; use hex::FromHex;
use proxmox_router::{Router, RpcEnvironment, Permission}; use proxmox_router::{http_bail, Router, RpcEnvironment, Permission};
use proxmox_schema::{api, param_bail}; use proxmox_schema::{api, param_bail};
use pbs_api_types::{ use pbs_api_types::{
@ -256,7 +256,7 @@ pub fn delete_changer(name: String, _param: Value) -> Result<(), Error> {
} }
config.sections.remove(&name); config.sections.remove(&name);
}, },
None => bail!("Delete changer '{}' failed - no such entry", name), None => http_bail!(NOT_FOUND, "Delete changer '{}' failed - no such entry", name),
} }
let drive_list: Vec<LtoTapeDrive> = config.convert_to_typed_array("lto")?; let drive_list: Vec<LtoTapeDrive> = config.convert_to_typed_array("lto")?;

View File

@ -1,11 +1,11 @@
use std::path::PathBuf; use std::path::PathBuf;
use anyhow::{bail, Error}; use anyhow::Error;
use serde_json::Value; use serde_json::Value;
use ::serde::{Deserialize, Serialize}; use ::serde::{Deserialize, Serialize};
use hex::FromHex; use hex::FromHex;
use proxmox_router::{Router, RpcEnvironment, RpcEnvironmentType, Permission}; use proxmox_router::{http_bail, Router, RpcEnvironment, RpcEnvironmentType, Permission};
use proxmox_schema::{api, param_bail, ApiType}; use proxmox_schema::{api, param_bail, ApiType};
use proxmox_section_config::SectionConfigData; use proxmox_section_config::SectionConfigData;
use proxmox_sys::WorkerTaskContext; use proxmox_sys::WorkerTaskContext;
@ -359,7 +359,7 @@ pub async fn delete_datastore(
match config.sections.get(&name) { match config.sections.get(&name) {
Some(_) => { config.sections.remove(&name); }, Some(_) => { config.sections.remove(&name); },
None => bail!("datastore '{}' does not exist.", name), None => http_bail!(NOT_FOUND, "datastore '{}' does not exist.", name),
} }
if !keep_job_configs { if !keep_job_configs {

View File

@ -1,9 +1,9 @@
use anyhow::{bail, format_err, Error}; use anyhow::{format_err, Error};
use ::serde::{Deserialize, Serialize}; use ::serde::{Deserialize, Serialize};
use serde_json::Value; use serde_json::Value;
use hex::FromHex; use hex::FromHex;
use proxmox_router::{Router, RpcEnvironment, Permission}; use proxmox_router::{http_bail, Router, RpcEnvironment, Permission};
use proxmox_schema::{api, param_bail}; use proxmox_schema::{api, param_bail};
use pbs_api_types::{ use pbs_api_types::{
@ -258,7 +258,7 @@ pub fn delete_drive(name: String, _param: Value) -> Result<(), Error> {
} }
config.sections.remove(&name); config.sections.remove(&name);
}, },
None => bail!("Delete drive '{}' failed - no such drive", name), None => http_bail!(NOT_FOUND, "Delete drive '{}' failed - no such drive", name),
} }
pbs_config::drive::save_config(&config)?; pbs_config::drive::save_config(&config)?;

View File

@ -1,7 +1,7 @@
use anyhow::{bail, Error}; use anyhow::Error;
use ::serde::{Deserialize, Serialize}; use ::serde::{Deserialize, Serialize};
use proxmox_router::{Router, RpcEnvironment, Permission}; use proxmox_router::{http_bail, Router, RpcEnvironment, Permission};
use proxmox_schema::{api, param_bail}; use proxmox_schema::{api, param_bail};
use pbs_api_types::{ use pbs_api_types::{
@ -217,7 +217,7 @@ pub fn delete_pool(name: String) -> Result<(), Error> {
match config.sections.get(&name) { match config.sections.get(&name) {
Some(_) => { config.sections.remove(&name); }, Some(_) => { config.sections.remove(&name); },
None => bail!("delete pool '{}' failed - no such pool", name), None => http_bail!(NOT_FOUND, "delete pool '{}' failed - no such pool", name),
} }
pbs_config::media_pool::save_config(&config)?; pbs_config::media_pool::save_config(&config)?;

View File

@ -6,7 +6,7 @@ use serde_json::Value;
use ::serde::{Deserialize, Serialize}; use ::serde::{Deserialize, Serialize};
use hex::FromHex; use hex::FromHex;
use proxmox_router::{http_err, ApiMethod, Router, RpcEnvironment, Permission}; use proxmox_router::{http_bail, http_err, ApiMethod, Router, RpcEnvironment, Permission};
use proxmox_schema::{api, param_bail}; use proxmox_schema::{api, param_bail};
use pbs_client::{HttpClient, HttpClientOptions}; use pbs_client::{HttpClient, HttpClientOptions};
@ -272,7 +272,7 @@ pub fn delete_remote(name: String, digest: Option<String>) -> Result<(), Error>
match config.sections.get(&name) { match config.sections.get(&name) {
Some(_) => { config.sections.remove(&name); }, Some(_) => { config.sections.remove(&name); },
None => bail!("remote '{}' does not exist.", name), None => http_bail!(NOT_FOUND, "remote '{}' does not exist.", name),
} }
pbs_config::remote::save_config(&config)?; pbs_config::remote::save_config(&config)?;

View File

@ -3,7 +3,7 @@ use serde_json::Value;
use ::serde::{Deserialize, Serialize}; use ::serde::{Deserialize, Serialize};
use hex::FromHex; use hex::FromHex;
use proxmox_router::{Router, RpcEnvironment, Permission}; use proxmox_router::{http_bail, Router, RpcEnvironment, Permission};
use proxmox_schema::{api, param_bail}; use proxmox_schema::{api, param_bail};
use pbs_api_types::{ use pbs_api_types::{
@ -367,7 +367,7 @@ pub fn delete_sync_job(
} }
config.sections.remove(&id); config.sections.remove(&id);
}, },
Err(_) => { bail!("job '{}' does not exist.", id) }, Err(_) => { http_bail!(NOT_FOUND, "job '{}' does not exist.", id) },
}; };
sync::save_config(&config)?; sync::save_config(&config)?;

View File

@ -1,9 +1,9 @@
use anyhow::{bail, Error}; use anyhow::Error;
use serde_json::Value; use serde_json::Value;
use ::serde::{Deserialize, Serialize}; use ::serde::{Deserialize, Serialize};
use hex::FromHex; use hex::FromHex;
use proxmox_router::{Router, RpcEnvironment, Permission}; use proxmox_router::{http_bail, Router, RpcEnvironment, Permission};
use proxmox_schema::{api, param_bail}; use proxmox_schema::{api, param_bail};
use pbs_api_types::{ use pbs_api_types::{
@ -268,7 +268,7 @@ pub fn delete_tape_backup_job(
Ok(_job) => { Ok(_job) => {
config.sections.remove(&id); config.sections.remove(&id);
}, },
Err(_) => { bail!("job '{}' does not exist.", id) }, Err(_) => { http_bail!(NOT_FOUND, "job '{}' does not exist.", id) },
}; };
pbs_config::tape_job::save_config(&config)?; pbs_config::tape_job::save_config(&config)?;

View File

@ -2,7 +2,7 @@ use anyhow::{format_err, bail, Error};
use serde_json::Value; use serde_json::Value;
use hex::FromHex; use hex::FromHex;
use proxmox_router::{ApiMethod, Router, RpcEnvironment, Permission}; use proxmox_router::{http_bail, ApiMethod, Router, RpcEnvironment, Permission};
use proxmox_schema::{api, param_bail}; use proxmox_schema::{api, param_bail};
use pbs_api_types::{ use pbs_api_types::{
@ -126,7 +126,7 @@ pub fn change_passphrase(
let key_config = match config_map.get(&fingerprint) { let key_config = match config_map.get(&fingerprint) {
Some(key_config) => key_config, Some(key_config) => key_config,
None => bail!("tape encryption key configuration '{}' does not exist.", fingerprint), None => http_bail!(NOT_FOUND, "tape encryption key configuration '{}' does not exist.", fingerprint),
}; };
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?; let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
@ -234,7 +234,7 @@ pub fn read_key(
let key_config = match config_map.get(&fingerprint) { let key_config = match config_map.get(&fingerprint) {
Some(key_config) => key_config, Some(key_config) => key_config,
None => bail!("tape encryption key '{}' does not exist.", fingerprint), None => http_bail!(NOT_FOUND, "tape encryption key '{}' does not exist.", fingerprint),
}; };
if key_config.kdf.is_none() { if key_config.kdf.is_none() {
@ -281,7 +281,7 @@ pub fn delete_key(
match config_map.get(&fingerprint) { match config_map.get(&fingerprint) {
Some(_) => { config_map.remove(&fingerprint); }, Some(_) => { config_map.remove(&fingerprint); },
None => bail!("tape encryption key '{}' does not exist.", fingerprint), None => http_bail!(NOT_FOUND, "tape encryption key '{}' does not exist.", fingerprint),
} }
save_key_configs(config_map)?; save_key_configs(config_map)?;

View File

@ -1,9 +1,9 @@
use anyhow::{bail, Error}; use anyhow::Error;
use serde_json::Value; use serde_json::Value;
use ::serde::{Deserialize, Serialize}; use ::serde::{Deserialize, Serialize};
use hex::FromHex; use hex::FromHex;
use proxmox_router::{ApiMethod, Router, RpcEnvironment, Permission}; use proxmox_router::{http_bail, ApiMethod, Router, RpcEnvironment, Permission};
use proxmox_schema::{api, param_bail}; use proxmox_schema::{api, param_bail};
use pbs_api_types::{ use pbs_api_types::{
@ -245,7 +245,7 @@ pub fn delete_traffic_control(name: String, digest: Option<String>) -> Result<()
match config.sections.get(&name) { match config.sections.get(&name) {
Some(_) => { config.sections.remove(&name); }, Some(_) => { config.sections.remove(&name); },
None => bail!("traffic control rule '{}' does not exist.", name), None => http_bail!(NOT_FOUND, "traffic control rule '{}' does not exist.", name),
} }
pbs_config::traffic_control::save_config(&config)?; pbs_config::traffic_control::save_config(&config)?;

View File

@ -1,9 +1,9 @@
use anyhow::{bail, Error}; use anyhow::Error;
use serde_json::Value; use serde_json::Value;
use ::serde::{Deserialize, Serialize}; use ::serde::{Deserialize, Serialize};
use hex::FromHex; use hex::FromHex;
use proxmox_router::{Router, RpcEnvironment, Permission}; use proxmox_router::{http_bail, Router, RpcEnvironment, Permission};
use proxmox_schema::{api, param_bail}; use proxmox_schema::{api, param_bail};
use pbs_api_types::{ use pbs_api_types::{
@ -287,7 +287,7 @@ pub fn delete_verification_job(
match config.sections.get(&id) { match config.sections.get(&id) {
Some(_) => { config.sections.remove(&id); }, Some(_) => { config.sections.remove(&id); },
None => bail!("job '{}' does not exist.", id), None => http_bail!(NOT_FOUND, "job '{}' does not exist.", id),
} }
verify::save_config(&config)?; verify::save_config(&config)?;