move sync.rs to pbs_config workspace
This commit is contained in:
parent
58bfa3b19c
commit
a4e5a0fc9f
|
@ -3,6 +3,7 @@ pub mod drive;
|
||||||
pub mod key_config;
|
pub mod key_config;
|
||||||
pub mod media_pool;
|
pub mod media_pool;
|
||||||
pub mod remote;
|
pub mod remote;
|
||||||
|
pub mod sync;
|
||||||
pub mod tape_encryption_keys;
|
pub mod tape_encryption_keys;
|
||||||
pub mod tape_job;
|
pub mod tape_job;
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,8 @@ use proxmox::api::{
|
||||||
|
|
||||||
use pbs_api_types::{JOB_ID_SCHEMA, SyncJobConfig};
|
use pbs_api_types::{JOB_ID_SCHEMA, SyncJobConfig};
|
||||||
|
|
||||||
|
use crate::{open_backup_lockfile, replace_backup_config, BackupLockGuard};
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
pub static ref CONFIG: SectionConfig = init();
|
pub static ref CONFIG: SectionConfig = init();
|
||||||
}
|
}
|
||||||
|
@ -34,6 +36,11 @@ fn init() -> SectionConfig {
|
||||||
pub const SYNC_CFG_FILENAME: &str = "/etc/proxmox-backup/sync.cfg";
|
pub const SYNC_CFG_FILENAME: &str = "/etc/proxmox-backup/sync.cfg";
|
||||||
pub const SYNC_CFG_LOCKFILE: &str = "/etc/proxmox-backup/.sync.lck";
|
pub const SYNC_CFG_LOCKFILE: &str = "/etc/proxmox-backup/.sync.lck";
|
||||||
|
|
||||||
|
/// Get exclusive lock
|
||||||
|
pub fn lock_config() -> Result<BackupLockGuard, Error> {
|
||||||
|
open_backup_lockfile(SYNC_CFG_LOCKFILE, None, true)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn config() -> Result<(SectionConfigData, [u8;32]), Error> {
|
pub fn config() -> Result<(SectionConfigData, [u8;32]), Error> {
|
||||||
|
|
||||||
let content = proxmox::tools::fs::file_read_optional_string(SYNC_CFG_FILENAME)?
|
let content = proxmox::tools::fs::file_read_optional_string(SYNC_CFG_FILENAME)?
|
||||||
|
@ -46,7 +53,7 @@ pub fn config() -> Result<(SectionConfigData, [u8;32]), Error> {
|
||||||
|
|
||||||
pub fn save_config(config: &SectionConfigData) -> Result<(), Error> {
|
pub fn save_config(config: &SectionConfigData) -> Result<(), Error> {
|
||||||
let raw = CONFIG.write(SYNC_CFG_FILENAME, &config)?;
|
let raw = CONFIG.write(SYNC_CFG_FILENAME, &config)?;
|
||||||
pbs_config::replace_backup_config(SYNC_CFG_FILENAME, raw.as_bytes())
|
replace_backup_config(SYNC_CFG_FILENAME, raw.as_bytes())
|
||||||
}
|
}
|
||||||
|
|
||||||
// shell completion helper
|
// shell completion helper
|
|
@ -8,6 +8,7 @@ use proxmox::api::router::SubdirMap;
|
||||||
use proxmox::{list_subdirs_api_method, sortable};
|
use proxmox::{list_subdirs_api_method, sortable};
|
||||||
|
|
||||||
use pbs_api_types::{DATASTORE_SCHEMA, JOB_ID_SCHEMA, Authid, SyncJobConfig, SyncJobStatus};
|
use pbs_api_types::{DATASTORE_SCHEMA, JOB_ID_SCHEMA, Authid, SyncJobConfig, SyncJobStatus};
|
||||||
|
use pbs_config::sync;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
api2::{
|
api2::{
|
||||||
|
@ -19,7 +20,6 @@ use crate::{
|
||||||
},
|
},
|
||||||
config::{
|
config::{
|
||||||
cached_user_info::CachedUserInfo,
|
cached_user_info::CachedUserInfo,
|
||||||
sync,
|
|
||||||
},
|
},
|
||||||
server::{
|
server::{
|
||||||
jobstate::{
|
jobstate::{
|
||||||
|
|
|
@ -10,10 +10,10 @@ use pbs_api_types::{
|
||||||
REMOTE_ID_SCHEMA, REMOTE_PASSWORD_SCHEMA, Remote, RemoteConfig, RemoteConfigUpdater,
|
REMOTE_ID_SCHEMA, REMOTE_PASSWORD_SCHEMA, Remote, RemoteConfig, RemoteConfigUpdater,
|
||||||
Authid, PROXMOX_CONFIG_DIGEST_SCHEMA, DataStoreListItem, SyncJobConfig,
|
Authid, PROXMOX_CONFIG_DIGEST_SCHEMA, DataStoreListItem, SyncJobConfig,
|
||||||
};
|
};
|
||||||
|
use pbs_config::sync;
|
||||||
|
|
||||||
use crate::config::cached_user_info::CachedUserInfo;
|
use crate::config::cached_user_info::CachedUserInfo;
|
||||||
use crate::config::acl::{PRIV_REMOTE_AUDIT, PRIV_REMOTE_MODIFY};
|
use crate::config::acl::{PRIV_REMOTE_AUDIT, PRIV_REMOTE_MODIFY};
|
||||||
use crate::config::sync;
|
|
||||||
|
|
||||||
#[api(
|
#[api(
|
||||||
input: {
|
input: {
|
||||||
|
|
|
@ -9,6 +9,7 @@ use pbs_api_types::{
|
||||||
SINGLE_LINE_COMMENT_SCHEMA, JOB_ID_SCHEMA, REMOTE_ID_SCHEMA, DATASTORE_SCHEMA,
|
SINGLE_LINE_COMMENT_SCHEMA, JOB_ID_SCHEMA, REMOTE_ID_SCHEMA, DATASTORE_SCHEMA,
|
||||||
REMOVE_VANISHED_BACKUPS_SCHEMA, SYNC_SCHEDULE_SCHEMA, PROXMOX_CONFIG_DIGEST_SCHEMA,
|
REMOVE_VANISHED_BACKUPS_SCHEMA, SYNC_SCHEDULE_SCHEMA, PROXMOX_CONFIG_DIGEST_SCHEMA,
|
||||||
};
|
};
|
||||||
|
use pbs_config::sync;
|
||||||
|
|
||||||
use crate::config::acl::{
|
use crate::config::acl::{
|
||||||
PRIV_DATASTORE_AUDIT,
|
PRIV_DATASTORE_AUDIT,
|
||||||
|
@ -19,8 +20,7 @@ use crate::config::acl::{
|
||||||
PRIV_REMOTE_READ,
|
PRIV_REMOTE_READ,
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::config::{sync, cached_user_info::CachedUserInfo};
|
use crate::config::cached_user_info::CachedUserInfo;
|
||||||
use pbs_config::open_backup_lockfile;
|
|
||||||
|
|
||||||
pub fn check_sync_job_read_access(
|
pub fn check_sync_job_read_access(
|
||||||
user_info: &CachedUserInfo,
|
user_info: &CachedUserInfo,
|
||||||
|
@ -155,7 +155,7 @@ pub fn create_sync_job(
|
||||||
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
|
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
|
||||||
let user_info = CachedUserInfo::new()?;
|
let user_info = CachedUserInfo::new()?;
|
||||||
|
|
||||||
let _lock = open_backup_lockfile(sync::SYNC_CFG_LOCKFILE, None, true)?;
|
let _lock = sync::lock_config()?;
|
||||||
|
|
||||||
let sync_job: 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) {
|
if !check_sync_job_modify_access(&user_info, &auth_id, &sync_job) {
|
||||||
|
@ -299,7 +299,7 @@ pub fn update_sync_job(
|
||||||
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
|
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
|
||||||
let user_info = CachedUserInfo::new()?;
|
let user_info = CachedUserInfo::new()?;
|
||||||
|
|
||||||
let _lock = open_backup_lockfile(sync::SYNC_CFG_LOCKFILE, None, true)?;
|
let _lock = sync::lock_config()?;
|
||||||
|
|
||||||
// pass/compare digest
|
// pass/compare digest
|
||||||
let (mut config, expected_digest) = sync::config()?;
|
let (mut config, expected_digest) = sync::config()?;
|
||||||
|
@ -382,7 +382,7 @@ pub fn delete_sync_job(
|
||||||
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
|
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
|
||||||
let user_info = CachedUserInfo::new()?;
|
let user_info = CachedUserInfo::new()?;
|
||||||
|
|
||||||
let _lock = open_backup_lockfile(sync::SYNC_CFG_LOCKFILE, None, true)?;
|
let _lock = sync::lock_config()?;
|
||||||
|
|
||||||
let (mut config, expected_digest) = sync::config()?;
|
let (mut config, expected_digest) = sync::config()?;
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ fn main() -> Result<(), Error> {
|
||||||
"tape-job.cfg" => dump_section_config(&pbs_config::tape_job::CONFIG),
|
"tape-job.cfg" => dump_section_config(&pbs_config::tape_job::CONFIG),
|
||||||
"user.cfg" => dump_section_config(&config::user::CONFIG),
|
"user.cfg" => dump_section_config(&config::user::CONFIG),
|
||||||
"remote.cfg" => dump_section_config(&pbs_config::remote::CONFIG),
|
"remote.cfg" => dump_section_config(&pbs_config::remote::CONFIG),
|
||||||
"sync.cfg" => dump_section_config(&config::sync::CONFIG),
|
"sync.cfg" => dump_section_config(&pbs_config::sync::CONFIG),
|
||||||
"verification.cfg" => dump_section_config(&config::verify::CONFIG),
|
"verification.cfg" => dump_section_config(&config::verify::CONFIG),
|
||||||
"media-pool.cfg" => dump_section_config(&pbs_config::media_pool::CONFIG),
|
"media-pool.cfg" => dump_section_config(&pbs_config::media_pool::CONFIG),
|
||||||
"config::acl::Role" => dump_enum_properties(&config::acl::Role::API_SCHEMA)?,
|
"config::acl::Role" => dump_enum_properties(&config::acl::Role::API_SCHEMA)?,
|
||||||
|
|
|
@ -521,7 +521,7 @@ async fn schedule_datastore_prune() {
|
||||||
async fn schedule_datastore_sync_jobs() {
|
async fn schedule_datastore_sync_jobs() {
|
||||||
|
|
||||||
|
|
||||||
let config = match proxmox_backup::config::sync::config() {
|
let config = match pbs_config::sync::config() {
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
eprintln!("unable to read sync job config - {}", err);
|
eprintln!("unable to read sync job config - {}", err);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -77,12 +77,12 @@ pub fn sync_job_commands() -> CommandLineInterface {
|
||||||
.insert("show",
|
.insert("show",
|
||||||
CliCommand::new(&API_METHOD_SHOW_SYNC_JOB)
|
CliCommand::new(&API_METHOD_SHOW_SYNC_JOB)
|
||||||
.arg_param(&["id"])
|
.arg_param(&["id"])
|
||||||
.completion_cb("id", config::sync::complete_sync_job_id)
|
.completion_cb("id", pbs_config::sync::complete_sync_job_id)
|
||||||
)
|
)
|
||||||
.insert("create",
|
.insert("create",
|
||||||
CliCommand::new(&api2::config::sync::API_METHOD_CREATE_SYNC_JOB)
|
CliCommand::new(&api2::config::sync::API_METHOD_CREATE_SYNC_JOB)
|
||||||
.arg_param(&["id"])
|
.arg_param(&["id"])
|
||||||
.completion_cb("id", config::sync::complete_sync_job_id)
|
.completion_cb("id", pbs_config::sync::complete_sync_job_id)
|
||||||
.completion_cb("schedule", config::datastore::complete_calendar_event)
|
.completion_cb("schedule", config::datastore::complete_calendar_event)
|
||||||
.completion_cb("store", config::datastore::complete_datastore_name)
|
.completion_cb("store", config::datastore::complete_datastore_name)
|
||||||
.completion_cb("remote", pbs_config::remote::complete_remote_name)
|
.completion_cb("remote", pbs_config::remote::complete_remote_name)
|
||||||
|
@ -91,7 +91,7 @@ pub fn sync_job_commands() -> CommandLineInterface {
|
||||||
.insert("update",
|
.insert("update",
|
||||||
CliCommand::new(&api2::config::sync::API_METHOD_UPDATE_SYNC_JOB)
|
CliCommand::new(&api2::config::sync::API_METHOD_UPDATE_SYNC_JOB)
|
||||||
.arg_param(&["id"])
|
.arg_param(&["id"])
|
||||||
.completion_cb("id", config::sync::complete_sync_job_id)
|
.completion_cb("id", pbs_config::sync::complete_sync_job_id)
|
||||||
.completion_cb("schedule", config::datastore::complete_calendar_event)
|
.completion_cb("schedule", config::datastore::complete_calendar_event)
|
||||||
.completion_cb("store", config::datastore::complete_datastore_name)
|
.completion_cb("store", config::datastore::complete_datastore_name)
|
||||||
.completion_cb("remote-store", crate::complete_remote_datastore_name)
|
.completion_cb("remote-store", crate::complete_remote_datastore_name)
|
||||||
|
@ -99,7 +99,7 @@ pub fn sync_job_commands() -> CommandLineInterface {
|
||||||
.insert("remove",
|
.insert("remove",
|
||||||
CliCommand::new(&api2::config::sync::API_METHOD_DELETE_SYNC_JOB)
|
CliCommand::new(&api2::config::sync::API_METHOD_DELETE_SYNC_JOB)
|
||||||
.arg_param(&["id"])
|
.arg_param(&["id"])
|
||||||
.completion_cb("id", config::sync::complete_sync_job_id)
|
.completion_cb("id", pbs_config::sync::complete_sync_job_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
cmd_def.into()
|
cmd_def.into()
|
||||||
|
|
|
@ -20,7 +20,6 @@ pub mod cached_user_info;
|
||||||
pub mod datastore;
|
pub mod datastore;
|
||||||
pub mod network;
|
pub mod network;
|
||||||
pub mod node;
|
pub mod node;
|
||||||
pub mod sync;
|
|
||||||
pub mod tfa;
|
pub mod tfa;
|
||||||
pub mod token_shadow;
|
pub mod token_shadow;
|
||||||
pub mod user;
|
pub mod user;
|
||||||
|
|
Loading…
Reference in New Issue