tape: implement API to run tape backup jobs

This commit is contained in:
Dietmar Maurer
2021-02-15 11:09:30 +01:00
parent fe291ab794
commit 41a8db3576
2 changed files with 68 additions and 4 deletions

View File

@ -31,6 +31,7 @@ use crate::{
MEDIA_POOL_NAME_SCHEMA,
DRIVE_NAME_SCHEMA,
UPID_SCHEMA,
JOB_ID_SCHEMA,
MediaPoolConfig,
},
server::WorkerTask,
@ -49,6 +50,13 @@ use crate::{
},
};
const TAPE_BACKUP_JOB_ROUTER: Router = Router::new()
.post(&API_METHOD_RUN_TAPE_BACKUP_JOB);
pub const ROUTER: Router = Router::new()
.post(&API_METHOD_BACKUP)
.match_all("id", &TAPE_BACKUP_JOB_ROUTER);
pub fn do_tape_backup_job(
mut job: Job,
tape_job: TapeBackupJobConfig,
@ -118,6 +126,32 @@ pub fn do_tape_backup_job(
Ok(upid_str)
}
#[api(
input: {
properties: {
id: {
schema: JOB_ID_SCHEMA,
},
},
},
)]
/// Runs a tape backup job manually.
pub fn run_tape_backup_job(
id: String,
rpcenv: &mut dyn RpcEnvironment,
) -> Result<String, Error> {
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
let (config, _digest) = config::tape_job::config()?;
let backup_job: TapeBackupJobConfig = config.lookup("backup", &id)?;
let job = Job::new("tape-backup-job", &id)?;
let upid_str = do_tape_backup_job(job, backup_job, &auth_id, None)?;
Ok(upid_str)
}
#[api(
input: {
properties: {
@ -190,10 +224,6 @@ pub fn backup(
Ok(upid_str.into())
}
pub const ROUTER: Router = Router::new()
.post(&API_METHOD_BACKUP);
fn backup_worker(
worker: &WorkerTask,
datastore: Arc<DataStore>,