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:
		
				
					committed by
					
						 Thomas Lamprecht
						Thomas Lamprecht
					
				
			
			
				
	
			
			
			
						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 | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user