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