api: add keep-job-configs flag to datastore remove endpoint
Signed-off-by: Hannes Laimer <h.laimer@proxmox.com> Suggested Fixes: Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
c7d032fc17
commit
eb1c59cc2a
|
@ -10,6 +10,12 @@ use proxmox::api::schema::parse_property_string;
|
||||||
|
|
||||||
use pbs_datastore::task::TaskState;
|
use pbs_datastore::task::TaskState;
|
||||||
|
|
||||||
|
use crate::api2::config::sync::delete_sync_job;
|
||||||
|
use crate::api2::config::verify::delete_verification_job;
|
||||||
|
use crate::api2::admin::{
|
||||||
|
sync::list_sync_jobs,
|
||||||
|
verify::list_verification_jobs,
|
||||||
|
};
|
||||||
use crate::api2::types::*;
|
use crate::api2::types::*;
|
||||||
use crate::backup::*;
|
use crate::backup::*;
|
||||||
use crate::config::cached_user_info::CachedUserInfo;
|
use crate::config::cached_user_info::CachedUserInfo;
|
||||||
|
@ -413,6 +419,12 @@ pub fn update_datastore(
|
||||||
name: {
|
name: {
|
||||||
schema: DATASTORE_SCHEMA,
|
schema: DATASTORE_SCHEMA,
|
||||||
},
|
},
|
||||||
|
"keep-job-configs": {
|
||||||
|
description: "If enabled, the job configurations related to this datastore will be kept.",
|
||||||
|
type: bool,
|
||||||
|
optional: true,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
digest: {
|
digest: {
|
||||||
optional: true,
|
optional: true,
|
||||||
schema: PROXMOX_CONFIG_DIGEST_SCHEMA,
|
schema: PROXMOX_CONFIG_DIGEST_SCHEMA,
|
||||||
|
@ -424,7 +436,12 @@ pub fn update_datastore(
|
||||||
},
|
},
|
||||||
)]
|
)]
|
||||||
/// Remove a datastore configuration.
|
/// Remove a datastore configuration.
|
||||||
pub async fn delete_datastore(name: String, digest: Option<String>) -> Result<(), Error> {
|
pub async fn delete_datastore(
|
||||||
|
name: String,
|
||||||
|
keep_job_configs: bool,
|
||||||
|
digest: Option<String>,
|
||||||
|
rpcenv: &mut dyn RpcEnvironment,
|
||||||
|
) -> Result<(), Error> {
|
||||||
|
|
||||||
let _lock = datastore::lock_config()?;
|
let _lock = datastore::lock_config()?;
|
||||||
|
|
||||||
|
@ -440,6 +457,15 @@ pub async fn delete_datastore(name: String, digest: Option<String>) -> Result<()
|
||||||
None => bail!("datastore '{}' does not exist.", name),
|
None => bail!("datastore '{}' does not exist.", name),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !keep_job_configs {
|
||||||
|
for job in list_verification_jobs(Some(name.clone()), Value::Null, rpcenv)? {
|
||||||
|
delete_verification_job(job.config.id, None, rpcenv)?
|
||||||
|
}
|
||||||
|
for job in list_sync_jobs(Some(name.clone()), Value::Null, rpcenv)? {
|
||||||
|
delete_sync_job(job.config.id, None, rpcenv)?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
datastore::save_config(&config)?;
|
datastore::save_config(&config)?;
|
||||||
|
|
||||||
// ignore errors
|
// ignore errors
|
||||||
|
|
Loading…
Reference in New Issue