tape job cleanup: user Updater
This commit is contained in:
parent
ffa403b5fd
commit
cdc83c4eb2
|
@ -250,7 +250,7 @@ pub struct VerificationJobStatus {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
)]
|
)]
|
||||||
#[derive(Serialize,Deserialize,Clone)]
|
#[derive(Serialize,Deserialize,Clone,Updater)]
|
||||||
#[serde(rename_all="kebab-case")]
|
#[serde(rename_all="kebab-case")]
|
||||||
/// Tape Backup Job Setup
|
/// Tape Backup Job Setup
|
||||||
pub struct TapeBackupJobSetup {
|
pub struct TapeBackupJobSetup {
|
||||||
|
@ -286,10 +286,11 @@ pub struct TapeBackupJobSetup {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
)]
|
)]
|
||||||
#[derive(Serialize,Deserialize,Clone)]
|
#[derive(Serialize,Deserialize,Clone,Updater)]
|
||||||
#[serde(rename_all="kebab-case")]
|
#[serde(rename_all="kebab-case")]
|
||||||
/// Tape Backup Job
|
/// Tape Backup Job
|
||||||
pub struct TapeBackupJobConfig {
|
pub struct TapeBackupJobConfig {
|
||||||
|
#[updater(skip)]
|
||||||
pub id: String,
|
pub id: String,
|
||||||
#[serde(flatten)]
|
#[serde(flatten)]
|
||||||
pub setup: TapeBackupJobSetup,
|
pub setup: TapeBackupJobSetup,
|
||||||
|
|
|
@ -5,16 +5,8 @@ use ::serde::{Deserialize, Serialize};
|
||||||
use proxmox::api::{api, Router, RpcEnvironment, Permission};
|
use proxmox::api::{api, Router, RpcEnvironment, Permission};
|
||||||
|
|
||||||
use pbs_api_types::{
|
use pbs_api_types::{
|
||||||
Authid,
|
Authid, TapeBackupJobConfig, TapeBackupJobConfigUpdater,
|
||||||
Userid,
|
JOB_ID_SCHEMA, PROXMOX_CONFIG_DIGEST_SCHEMA,
|
||||||
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::{
|
use crate::{
|
||||||
|
@ -156,44 +148,9 @@ pub enum DeletableProperty {
|
||||||
id: {
|
id: {
|
||||||
schema: JOB_ID_SCHEMA,
|
schema: JOB_ID_SCHEMA,
|
||||||
},
|
},
|
||||||
store: {
|
update: {
|
||||||
schema: DATASTORE_SCHEMA,
|
type: TapeBackupJobConfigUpdater,
|
||||||
optional: true,
|
flatten: true,
|
||||||
},
|
|
||||||
pool: {
|
|
||||||
schema: MEDIA_POOL_NAME_SCHEMA,
|
|
||||||
optional: true,
|
|
||||||
},
|
|
||||||
drive: {
|
|
||||||
schema: DRIVE_NAME_SCHEMA,
|
|
||||||
optional: true,
|
|
||||||
},
|
|
||||||
"eject-media": {
|
|
||||||
description: "Eject media upon job completion.",
|
|
||||||
type: bool,
|
|
||||||
optional: true,
|
|
||||||
},
|
|
||||||
"export-media-set": {
|
|
||||||
description: "Export media set upon job completion.",
|
|
||||||
type: bool,
|
|
||||||
optional: true,
|
|
||||||
},
|
|
||||||
"latest-only": {
|
|
||||||
description: "Backup latest snapshots only.",
|
|
||||||
type: bool,
|
|
||||||
optional: true,
|
|
||||||
},
|
|
||||||
"notify-user": {
|
|
||||||
optional: true,
|
|
||||||
type: Userid,
|
|
||||||
},
|
|
||||||
comment: {
|
|
||||||
optional: true,
|
|
||||||
schema: SINGLE_LINE_COMMENT_SCHEMA,
|
|
||||||
},
|
|
||||||
schedule: {
|
|
||||||
optional: true,
|
|
||||||
schema: SYNC_SCHEDULE_SCHEMA,
|
|
||||||
},
|
},
|
||||||
delete: {
|
delete: {
|
||||||
description: "List of properties to delete.",
|
description: "List of properties to delete.",
|
||||||
|
@ -216,15 +173,7 @@ pub enum DeletableProperty {
|
||||||
/// Update the tape backup job
|
/// Update the tape backup job
|
||||||
pub fn update_tape_backup_job(
|
pub fn update_tape_backup_job(
|
||||||
id: String,
|
id: String,
|
||||||
store: Option<String>,
|
update: TapeBackupJobConfigUpdater,
|
||||||
pool: Option<String>,
|
|
||||||
drive: Option<String>,
|
|
||||||
eject_media: Option<bool>,
|
|
||||||
export_media_set: Option<bool>,
|
|
||||||
latest_only: Option<bool>,
|
|
||||||
notify_user: Option<Userid>,
|
|
||||||
comment: Option<String>,
|
|
||||||
schedule: Option<String>,
|
|
||||||
delete: Option<Vec<DeletableProperty>>,
|
delete: Option<Vec<DeletableProperty>>,
|
||||||
digest: Option<String>,
|
digest: Option<String>,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
|
@ -252,19 +201,19 @@ pub fn update_tape_backup_job(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(store) = store { data.setup.store = store; }
|
if let Some(store) = update.setup.store { data.setup.store = store; }
|
||||||
if let Some(pool) = pool { data.setup.pool = pool; }
|
if let Some(pool) = update.setup.pool { data.setup.pool = pool; }
|
||||||
if let Some(drive) = drive { data.setup.drive = drive; }
|
if let Some(drive) = update.setup.drive { data.setup.drive = drive; }
|
||||||
|
|
||||||
if eject_media.is_some() { data.setup.eject_media = eject_media; };
|
if update.setup.eject_media.is_some() { data.setup.eject_media = update.setup.eject_media; };
|
||||||
if export_media_set.is_some() { data.setup.export_media_set = export_media_set; }
|
if update.setup.export_media_set.is_some() { data.setup.export_media_set = update.setup.export_media_set; }
|
||||||
if latest_only.is_some() { data.setup.latest_only = latest_only; }
|
if update.setup.latest_only.is_some() { data.setup.latest_only = update.setup.latest_only; }
|
||||||
if notify_user.is_some() { data.setup.notify_user = notify_user; }
|
if update.setup.notify_user.is_some() { data.setup.notify_user = update.setup.notify_user; }
|
||||||
|
|
||||||
let schedule_changed = data.schedule != schedule;
|
let schedule_changed = data.schedule != update.schedule;
|
||||||
if schedule.is_some() { data.schedule = schedule; }
|
if update.schedule.is_some() { data.schedule = update.schedule; }
|
||||||
|
|
||||||
if let Some(comment) = comment {
|
if let Some(comment) = update.comment {
|
||||||
let comment = comment.trim();
|
let comment = comment.trim();
|
||||||
if comment.is_empty() {
|
if comment.is_empty() {
|
||||||
data.comment = None;
|
data.comment = None;
|
||||||
|
|
Loading…
Reference in New Issue