moved tape_job.rs to pbs_config workspace
This commit is contained in:
		| @ -8,11 +8,12 @@ use proxmox::http_err; | ||||
| use pbs_client::{HttpClient, HttpClientOptions}; | ||||
| use pbs_api_types::{ | ||||
|     REMOTE_ID_SCHEMA, REMOTE_PASSWORD_SCHEMA, Remote, RemoteConfig, RemoteConfigUpdater, | ||||
|     Authid, PROXMOX_CONFIG_DIGEST_SCHEMA, DataStoreListItem, | ||||
|     Authid, PROXMOX_CONFIG_DIGEST_SCHEMA, DataStoreListItem, SyncJobConfig, | ||||
| }; | ||||
|  | ||||
| use crate::config::cached_user_info::CachedUserInfo; | ||||
| use crate::config::acl::{PRIV_REMOTE_AUDIT, PRIV_REMOTE_MODIFY}; | ||||
| use crate::config::sync; | ||||
|  | ||||
| #[api( | ||||
|     input: { | ||||
| @ -247,8 +248,6 @@ pub fn update_remote( | ||||
| /// Remove a remote from the configuration file. | ||||
| pub fn delete_remote(name: String, digest: Option<String>) -> Result<(), Error> { | ||||
|  | ||||
|     use crate::config::sync::{self, SyncJobConfig}; | ||||
|  | ||||
|     let (sync_jobs, _) = sync::config()?; | ||||
|  | ||||
|     let job_list: Vec<SyncJobConfig>  = sync_jobs.convert_to_typed_array("sync")?; | ||||
|  | ||||
| @ -4,7 +4,11 @@ use ::serde::{Deserialize, Serialize}; | ||||
|  | ||||
| use proxmox::api::{api, Permission, Router, RpcEnvironment}; | ||||
|  | ||||
| use crate::api2::types::*; | ||||
| use pbs_api_types::{ | ||||
|     Authid, SyncJobConfig, | ||||
|     SINGLE_LINE_COMMENT_SCHEMA, JOB_ID_SCHEMA, REMOTE_ID_SCHEMA, DATASTORE_SCHEMA, | ||||
|     REMOVE_VANISHED_BACKUPS_SCHEMA, SYNC_SCHEDULE_SCHEMA, PROXMOX_CONFIG_DIGEST_SCHEMA, | ||||
| }; | ||||
|  | ||||
| use crate::config::acl::{ | ||||
|     PRIV_DATASTORE_AUDIT, | ||||
| @ -15,8 +19,7 @@ use crate::config::acl::{ | ||||
|     PRIV_REMOTE_READ, | ||||
| }; | ||||
|  | ||||
| use crate::config::cached_user_info::CachedUserInfo; | ||||
| use crate::config::sync::{self, SyncJobConfig}; | ||||
| use crate::config::{sync, cached_user_info::CachedUserInfo}; | ||||
| use pbs_config::open_backup_lockfile; | ||||
|  | ||||
| pub fn check_sync_job_read_access( | ||||
| @ -77,7 +80,7 @@ pub fn check_sync_job_modify_access( | ||||
|     returns: { | ||||
|         description: "List configured jobs.", | ||||
|         type: Array, | ||||
|         items: { type: sync::SyncJobConfig }, | ||||
|         items: { type: SyncJobConfig }, | ||||
|     }, | ||||
|     access: { | ||||
|         description: "Limited to sync job entries where user has Datastore.Audit on target datastore, and Remote.Audit on source remote.", | ||||
| @ -154,7 +157,7 @@ pub fn create_sync_job( | ||||
|  | ||||
|     let _lock = open_backup_lockfile(sync::SYNC_CFG_LOCKFILE, None, true)?; | ||||
|  | ||||
|     let sync_job: sync::SyncJobConfig = serde_json::from_value(param)?; | ||||
|     let sync_job: SyncJobConfig = serde_json::from_value(param)?; | ||||
|     if !check_sync_job_modify_access(&user_info, &auth_id, &sync_job) { | ||||
|         bail!("permission check failed"); | ||||
|     } | ||||
| @ -182,7 +185,7 @@ pub fn create_sync_job( | ||||
|             }, | ||||
|         }, | ||||
|     }, | ||||
|     returns: { type: sync::SyncJobConfig }, | ||||
|     returns: { type: SyncJobConfig }, | ||||
|     access: { | ||||
|         description: "Limited to sync job entries where user has Datastore.Audit on target datastore, and Remote.Audit on source remote.", | ||||
|         permission: &Permission::Anybody, | ||||
| @ -306,7 +309,7 @@ pub fn update_sync_job( | ||||
|         crate::tools::detect_modified_configuration_file(&digest, &expected_digest)?; | ||||
|     } | ||||
|  | ||||
|     let mut data: sync::SyncJobConfig = config.lookup("sync", &id)?; | ||||
|     let mut data: SyncJobConfig = config.lookup("sync", &id)?; | ||||
|  | ||||
|      if let Some(delete) = delete { | ||||
|         for delete_prop in delete { | ||||
|  | ||||
| @ -3,31 +3,27 @@ use serde_json::Value; | ||||
| use ::serde::{Deserialize, Serialize}; | ||||
|  | ||||
| use proxmox::api::{api, Router, RpcEnvironment, Permission}; | ||||
| use pbs_config::open_backup_lockfile; | ||||
|  | ||||
| use pbs_api_types::{ | ||||
|     Authid, | ||||
|     Userid, | ||||
|     TapeBackupJobConfig, | ||||
|     JOB_ID_SCHEMA, | ||||
|     DATASTORE_SCHEMA, | ||||
|     DRIVE_NAME_SCHEMA, | ||||
|     PROXMOX_CONFIG_DIGEST_SCHEMA, | ||||
|     SINGLE_LINE_COMMENT_SCHEMA, | ||||
|     MEDIA_POOL_NAME_SCHEMA, | ||||
|     SYNC_SCHEDULE_SCHEMA, | ||||
| }; | ||||
|  | ||||
| use crate::{ | ||||
|     api2::types::{ | ||||
|         Authid, | ||||
|         Userid, | ||||
|         JOB_ID_SCHEMA, | ||||
|         DATASTORE_SCHEMA, | ||||
|         DRIVE_NAME_SCHEMA, | ||||
|         PROXMOX_CONFIG_DIGEST_SCHEMA, | ||||
|         SINGLE_LINE_COMMENT_SCHEMA, | ||||
|         MEDIA_POOL_NAME_SCHEMA, | ||||
|         SYNC_SCHEDULE_SCHEMA, | ||||
|     }, | ||||
|     config::{ | ||||
|         self, | ||||
|         cached_user_info::CachedUserInfo, | ||||
|         acl::{ | ||||
|             PRIV_TAPE_AUDIT, | ||||
|             PRIV_TAPE_MODIFY, | ||||
|         }, | ||||
|         tape_job::{ | ||||
|             TAPE_JOB_CFG_LOCKFILE, | ||||
|             TapeBackupJobConfig, | ||||
|         } | ||||
|     }, | ||||
| }; | ||||
|  | ||||
| @ -53,7 +49,7 @@ pub fn list_tape_backup_jobs( | ||||
|     let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?; | ||||
|     let user_info = CachedUserInfo::new()?; | ||||
|  | ||||
|     let (config, digest) = config::tape_job::config()?; | ||||
|     let (config, digest) = pbs_config::tape_job::config()?; | ||||
|  | ||||
|     let list = config.convert_to_typed_array::<TapeBackupJobConfig>("backup")?; | ||||
|  | ||||
| @ -89,9 +85,9 @@ pub fn create_tape_backup_job( | ||||
|     job: TapeBackupJobConfig, | ||||
|     _rpcenv: &mut dyn RpcEnvironment, | ||||
| ) -> Result<(), Error> { | ||||
|     let _lock = open_backup_lockfile(TAPE_JOB_CFG_LOCKFILE, None, true)?; | ||||
|     let _lock = pbs_config::tape_job::lock()?; | ||||
|  | ||||
|     let (mut config, _digest) = config::tape_job::config()?; | ||||
|     let (mut config, _digest) = pbs_config::tape_job::config()?; | ||||
|  | ||||
|     if config.sections.get(&job.id).is_some() { | ||||
|         bail!("job '{}' already exists.", job.id); | ||||
| @ -99,7 +95,7 @@ pub fn create_tape_backup_job( | ||||
|  | ||||
|     config.set_data(&job.id, "backup", &job)?; | ||||
|  | ||||
|     config::tape_job::save_config(&config)?; | ||||
|     pbs_config::tape_job::save_config(&config)?; | ||||
|  | ||||
|     crate::server::jobstate::create_state_file("tape-backup-job", &job.id)?; | ||||
|  | ||||
| @ -125,7 +121,7 @@ pub fn read_tape_backup_job( | ||||
|     mut rpcenv: &mut dyn RpcEnvironment, | ||||
| ) -> Result<TapeBackupJobConfig, Error> { | ||||
|  | ||||
|     let (config, digest) = config::tape_job::config()?; | ||||
|     let (config, digest) = pbs_config::tape_job::config()?; | ||||
|  | ||||
|     let job = config.lookup("backup", &id)?; | ||||
|  | ||||
| @ -232,9 +228,9 @@ pub fn update_tape_backup_job( | ||||
|     delete: Option<Vec<DeletableProperty>>, | ||||
|     digest: Option<String>, | ||||
| ) -> Result<(), Error> { | ||||
|     let _lock = open_backup_lockfile(TAPE_JOB_CFG_LOCKFILE, None, true)?; | ||||
|     let _lock = pbs_config::tape_job::lock()?; | ||||
|  | ||||
|     let (mut config, expected_digest) = config::tape_job::config()?; | ||||
|     let (mut config, expected_digest) = pbs_config::tape_job::config()?; | ||||
|  | ||||
|     let mut data: TapeBackupJobConfig = config.lookup("backup", &id)?; | ||||
|  | ||||
| @ -279,7 +275,7 @@ pub fn update_tape_backup_job( | ||||
|  | ||||
|     config.set_data(&id, "backup", &data)?; | ||||
|  | ||||
|     config::tape_job::save_config(&config)?; | ||||
|     pbs_config::tape_job::save_config(&config)?; | ||||
|  | ||||
|     if schedule_changed { | ||||
|         crate::server::jobstate::update_job_last_run_time("tape-backup-job", &id)?; | ||||
| @ -311,9 +307,9 @@ pub fn delete_tape_backup_job( | ||||
|     digest: Option<String>, | ||||
|     _rpcenv: &mut dyn RpcEnvironment, | ||||
| ) -> Result<(), Error> { | ||||
|     let _lock = open_backup_lockfile(TAPE_JOB_CFG_LOCKFILE, None, true)?; | ||||
|     let _lock = pbs_config::tape_job::lock()?; | ||||
|  | ||||
|     let (mut config, expected_digest) = config::tape_job::config()?; | ||||
|     let (mut config, expected_digest) = pbs_config::tape_job::config()?; | ||||
|  | ||||
|     if let Some(ref digest) = digest { | ||||
|         let digest = proxmox::tools::hex_to_digest(digest)?; | ||||
| @ -327,7 +323,7 @@ pub fn delete_tape_backup_job( | ||||
|         Err(_) => { bail!("job '{}' does not exist.", id) }, | ||||
|     }; | ||||
|  | ||||
|     config::tape_job::save_config(&config)?; | ||||
|     pbs_config::tape_job::save_config(&config)?; | ||||
|  | ||||
|     crate::server::jobstate::remove_state_file("tape-backup-job", &id)?; | ||||
|  | ||||
|  | ||||
| @ -4,7 +4,12 @@ use ::serde::{Deserialize, Serialize}; | ||||
|  | ||||
| use proxmox::api::{api, Permission, Router, RpcEnvironment}; | ||||
|  | ||||
| use crate::api2::types::*; | ||||
| use pbs_api_types::{ | ||||
|     Authid, VerificationJobConfig, | ||||
|     SINGLE_LINE_COMMENT_SCHEMA, JOB_ID_SCHEMA, IGNORE_VERIFIED_BACKUPS_SCHEMA, | ||||
|     VERIFICATION_OUTDATED_AFTER_SCHEMA, VERIFICATION_SCHEDULE_SCHEMA, | ||||
|     DATASTORE_SCHEMA, PROXMOX_CONFIG_DIGEST_SCHEMA, | ||||
| }; | ||||
|  | ||||
| use crate::config::acl::{ | ||||
|     PRIV_DATASTORE_AUDIT, | ||||
| @ -12,7 +17,7 @@ use crate::config::acl::{ | ||||
| }; | ||||
|  | ||||
| use crate::config::cached_user_info::CachedUserInfo; | ||||
| use crate::config::verify::{self, VerificationJobConfig}; | ||||
| use crate::config::verify; | ||||
| use pbs_config::open_backup_lockfile; | ||||
|  | ||||
| #[api( | ||||
| @ -22,7 +27,7 @@ use pbs_config::open_backup_lockfile; | ||||
|     returns: { | ||||
|         description: "List configured jobs.", | ||||
|         type: Array, | ||||
|         items: { type: verify::VerificationJobConfig }, | ||||
|         items: { type: VerificationJobConfig }, | ||||
|     }, | ||||
|     access: { | ||||
|         permission: &Permission::Anybody, | ||||
| @ -97,7 +102,7 @@ pub fn create_verification_job( | ||||
|     let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?; | ||||
|     let user_info = CachedUserInfo::new()?; | ||||
|  | ||||
|     let verification_job: verify::VerificationJobConfig = serde_json::from_value(param)?; | ||||
|     let verification_job: VerificationJobConfig = serde_json::from_value(param)?; | ||||
|  | ||||
|     user_info.check_privs(&auth_id, &["datastore", &verification_job.store], PRIV_DATASTORE_VERIFY, false)?; | ||||
|  | ||||
| @ -126,7 +131,7 @@ pub fn create_verification_job( | ||||
|             }, | ||||
|         }, | ||||
|     }, | ||||
|     returns: { type: verify::VerificationJobConfig }, | ||||
|     returns: { type: VerificationJobConfig }, | ||||
|     access: { | ||||
|         permission: &Permission::Anybody, | ||||
|         description: "Requires Datastore.Audit or Datastore.Verify on job's datastore.", | ||||
| @ -142,7 +147,7 @@ pub fn read_verification_job( | ||||
|  | ||||
|     let (config, digest) = verify::config()?; | ||||
|  | ||||
|     let verification_job: verify::VerificationJobConfig = config.lookup("verification", &id)?; | ||||
|     let verification_job: VerificationJobConfig = config.lookup("verification", &id)?; | ||||
|  | ||||
|     let required_privs = PRIV_DATASTORE_AUDIT | PRIV_DATASTORE_VERIFY; | ||||
|     user_info.check_privs(&auth_id, &["datastore", &verification_job.store], required_privs, true)?; | ||||
| @ -239,7 +244,7 @@ pub fn update_verification_job( | ||||
|         crate::tools::detect_modified_configuration_file(&digest, &expected_digest)?; | ||||
|     } | ||||
|  | ||||
|     let mut data: verify::VerificationJobConfig = config.lookup("verification", &id)?; | ||||
|     let mut data: VerificationJobConfig = config.lookup("verification", &id)?; | ||||
|  | ||||
|     // check existing store | ||||
|     user_info.check_privs(&auth_id, &["datastore", &data.store], PRIV_DATASTORE_VERIFY, true)?; | ||||
| @ -318,7 +323,7 @@ pub fn delete_verification_job( | ||||
|  | ||||
|     let (mut config, expected_digest) = verify::config()?; | ||||
|  | ||||
|     let job: verify::VerificationJobConfig = config.lookup("verification", &id)?; | ||||
|     let job: VerificationJobConfig = config.lookup("verification", &id)?; | ||||
|     user_info.check_privs(&auth_id, &["datastore", &job.store], PRIV_DATASTORE_VERIFY, true)?; | ||||
|  | ||||
|     if let Some(ref digest) = digest { | ||||
|  | ||||
		Reference in New Issue
	
	Block a user