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 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::backup::*;
|
||||
use crate::config::cached_user_info::CachedUserInfo;
|
||||
@ -413,6 +419,12 @@ pub fn update_datastore(
|
||||
name: {
|
||||
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: {
|
||||
optional: true,
|
||||
schema: PROXMOX_CONFIG_DIGEST_SCHEMA,
|
||||
@ -424,7 +436,12 @@ pub fn update_datastore(
|
||||
},
|
||||
)]
|
||||
/// 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()?;
|
||||
|
||||
@ -440,6 +457,15 @@ pub async fn delete_datastore(name: String, digest: Option<String>) -> Result<()
|
||||
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)?;
|
||||
|
||||
// ignore errors
|
||||
|
Loading…
Reference in New Issue
Block a user