From 802189f7f59bacd197aece67ee3f8bbab9bdc492 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Wed, 8 Sep 2021 08:01:07 +0200 Subject: [PATCH] move verify.rs to pbs_config workspace --- pbs-config/src/lib.rs | 1 + {src/config => pbs-config/src}/verify.rs | 9 ++++++++- src/api2/admin/verify.rs | 2 +- src/api2/config/verify.rs | 9 ++++----- src/bin/docgen.rs | 2 +- src/bin/proxmox-backup-proxy.rs | 2 +- src/bin/proxmox_backup_manager/verify.rs | 8 ++++---- src/config/mod.rs | 1 - 8 files changed, 20 insertions(+), 14 deletions(-) rename {src/config => pbs-config/src}/verify.rs (85%) diff --git a/pbs-config/src/lib.rs b/pbs-config/src/lib.rs index 301f4b59..827b2820 100644 --- a/pbs-config/src/lib.rs +++ b/pbs-config/src/lib.rs @@ -6,6 +6,7 @@ pub mod remote; pub mod sync; pub mod tape_encryption_keys; pub mod tape_job; +pub mod verify; use anyhow::{format_err, Error}; diff --git a/src/config/verify.rs b/pbs-config/src/verify.rs similarity index 85% rename from src/config/verify.rs rename to pbs-config/src/verify.rs index 06449482..310cf4bf 100644 --- a/src/config/verify.rs +++ b/pbs-config/src/verify.rs @@ -13,6 +13,8 @@ use proxmox::api::{ use pbs_api_types::{JOB_ID_SCHEMA, VerificationJobConfig}; +use crate::{open_backup_lockfile, replace_backup_config, BackupLockGuard}; + lazy_static! { pub static ref CONFIG: SectionConfig = init(); } @@ -33,6 +35,11 @@ fn init() -> SectionConfig { pub const VERIFICATION_CFG_FILENAME: &str = "/etc/proxmox-backup/verification.cfg"; pub const VERIFICATION_CFG_LOCKFILE: &str = "/etc/proxmox-backup/.verification.lck"; +/// Get exclusive lock +pub fn lock_config() -> Result { + open_backup_lockfile(VERIFICATION_CFG_LOCKFILE, None, true) +} + pub fn config() -> Result<(SectionConfigData, [u8;32]), Error> { let content = proxmox::tools::fs::file_read_optional_string(VERIFICATION_CFG_FILENAME)?; @@ -45,7 +52,7 @@ pub fn config() -> Result<(SectionConfigData, [u8;32]), Error> { pub fn save_config(config: &SectionConfigData) -> Result<(), Error> { let raw = CONFIG.write(VERIFICATION_CFG_FILENAME, &config)?; - pbs_config::replace_backup_config(VERIFICATION_CFG_FILENAME, raw.as_bytes()) + replace_backup_config(VERIFICATION_CFG_FILENAME, raw.as_bytes()) } // shell completion helper diff --git a/src/api2/admin/verify.rs b/src/api2/admin/verify.rs index ee19e2ea..a01208a2 100644 --- a/src/api2/admin/verify.rs +++ b/src/api2/admin/verify.rs @@ -8,6 +8,7 @@ use proxmox::{list_subdirs_api_method, sortable}; use proxmox::api::{api, ApiMethod, Permission, Router, RpcEnvironment}; use pbs_api_types::{VerificationJobConfig, VerificationJobStatus, JOB_ID_SCHEMA, Authid}; +use pbs_config::verify; use crate::{ api2::types::{ @@ -22,7 +23,6 @@ use crate::{ }, }, config::{ - verify, acl::{ PRIV_DATASTORE_AUDIT, PRIV_DATASTORE_VERIFY, diff --git a/src/api2/config/verify.rs b/src/api2/config/verify.rs index 178edc12..0ae8bf6a 100644 --- a/src/api2/config/verify.rs +++ b/src/api2/config/verify.rs @@ -10,6 +10,7 @@ use pbs_api_types::{ VERIFICATION_OUTDATED_AFTER_SCHEMA, VERIFICATION_SCHEDULE_SCHEMA, DATASTORE_SCHEMA, PROXMOX_CONFIG_DIGEST_SCHEMA, }; +use pbs_config::verify; use crate::config::acl::{ PRIV_DATASTORE_AUDIT, @@ -17,8 +18,6 @@ use crate::config::acl::{ }; use crate::config::cached_user_info::CachedUserInfo; -use crate::config::verify; -use pbs_config::open_backup_lockfile; #[api( input: { @@ -106,7 +105,7 @@ pub fn create_verification_job( user_info.check_privs(&auth_id, &["datastore", &verification_job.store], PRIV_DATASTORE_VERIFY, false)?; - let _lock = open_backup_lockfile(verify::VERIFICATION_CFG_LOCKFILE, None, true)?; + let _lock = verify::lock_config()?; let (mut config, _digest) = verify::config()?; @@ -234,7 +233,7 @@ pub fn update_verification_job( let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?; let user_info = CachedUserInfo::new()?; - let _lock = open_backup_lockfile(verify::VERIFICATION_CFG_LOCKFILE, None, true)?; + let _lock = verify::lock_config()?; // pass/compare digest let (mut config, expected_digest) = verify::config()?; @@ -319,7 +318,7 @@ pub fn delete_verification_job( let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?; let user_info = CachedUserInfo::new()?; - let _lock = open_backup_lockfile(verify::VERIFICATION_CFG_LOCKFILE, None, true)?; + let _lock = verify::lock_config()?; let (mut config, expected_digest) = verify::config()?; diff --git a/src/bin/docgen.rs b/src/bin/docgen.rs index 2767c570..6eb92a42 100644 --- a/src/bin/docgen.rs +++ b/src/bin/docgen.rs @@ -60,7 +60,7 @@ fn main() -> Result<(), Error> { "user.cfg" => dump_section_config(&config::user::CONFIG), "remote.cfg" => dump_section_config(&pbs_config::remote::CONFIG), "sync.cfg" => dump_section_config(&pbs_config::sync::CONFIG), - "verification.cfg" => dump_section_config(&config::verify::CONFIG), + "verification.cfg" => dump_section_config(&pbs_config::verify::CONFIG), "media-pool.cfg" => dump_section_config(&pbs_config::media_pool::CONFIG), "config::acl::Role" => dump_enum_properties(&config::acl::Role::API_SCHEMA)?, _ => bail!("docgen: got unknown type"), diff --git a/src/bin/proxmox-backup-proxy.rs b/src/bin/proxmox-backup-proxy.rs index f34008cf..6d393a73 100644 --- a/src/bin/proxmox-backup-proxy.rs +++ b/src/bin/proxmox-backup-proxy.rs @@ -560,7 +560,7 @@ async fn schedule_datastore_sync_jobs() { async fn schedule_datastore_verify_jobs() { - let config = match proxmox_backup::config::verify::config() { + let config = match pbs_config::verify::config() { Err(err) => { eprintln!("unable to read verification job config - {}", err); return; diff --git a/src/bin/proxmox_backup_manager/verify.rs b/src/bin/proxmox_backup_manager/verify.rs index c220ccbc..2e9b40b0 100644 --- a/src/bin/proxmox_backup_manager/verify.rs +++ b/src/bin/proxmox_backup_manager/verify.rs @@ -77,19 +77,19 @@ pub fn verify_job_commands() -> CommandLineInterface { .insert("show", CliCommand::new(&API_METHOD_SHOW_VERIFICATION_JOB) .arg_param(&["id"]) - .completion_cb("id", config::verify::complete_verification_job_id) + .completion_cb("id", pbs_config::verify::complete_verification_job_id) ) .insert("create", CliCommand::new(&api2::config::verify::API_METHOD_CREATE_VERIFICATION_JOB) .arg_param(&["id"]) - .completion_cb("id", config::verify::complete_verification_job_id) + .completion_cb("id", pbs_config::verify::complete_verification_job_id) .completion_cb("schedule", config::datastore::complete_calendar_event) .completion_cb("store", config::datastore::complete_datastore_name) ) .insert("update", CliCommand::new(&api2::config::verify::API_METHOD_UPDATE_VERIFICATION_JOB) .arg_param(&["id"]) - .completion_cb("id", config::verify::complete_verification_job_id) + .completion_cb("id", pbs_config::verify::complete_verification_job_id) .completion_cb("schedule", config::datastore::complete_calendar_event) .completion_cb("store", config::datastore::complete_datastore_name) .completion_cb("remote-store", crate::complete_remote_datastore_name) @@ -97,7 +97,7 @@ pub fn verify_job_commands() -> CommandLineInterface { .insert("remove", CliCommand::new(&api2::config::verify::API_METHOD_DELETE_VERIFICATION_JOB) .arg_param(&["id"]) - .completion_cb("id", config::verify::complete_verification_job_id) + .completion_cb("id", pbs_config::verify::complete_verification_job_id) ); cmd_def.into() diff --git a/src/config/mod.rs b/src/config/mod.rs index 036b61e8..b7c8e762 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -23,7 +23,6 @@ pub mod node; pub mod tfa; pub mod token_shadow; pub mod user; -pub mod verify; /// Check configuration directory permissions ///