use std::sync::Arc;
use anyhow::Error;
+use pbs_api_types::Authid;
+use proxmox_rest_server::WorkerTask;
+
use crate::{
- server::WorkerTask,
- api2::types::*,
server::jobstate::Job,
backup::DataStore,
};
datastore: Arc<DataStore>,
auth_id: &Authid,
schedule: Option<String>,
+ to_stdout: bool,
) -> Result<String, Error> {
- let email = crate::server::lookup_user_email(auth_id.user());
-
let store = datastore.name().to_string();
+ let (email, notify) = crate::server::lookup_datastore_notify_settings(&store);
+
let worker_type = job.jobtype().to_string();
let upid_str = WorkerTask::new_thread(
&worker_type,
Some(store.clone()),
- auth_id.clone(),
- false,
+ auth_id.to_string(),
+ to_stdout,
move |worker| {
job.start(&worker.upid().to_string())?;
let status = worker.create_state(&result);
- match job.finish(status) {
- Err(err) => eprintln!(
+ if let Err(err) = job.finish(status) {
+ eprintln!(
"could not finish job state for {}: {}",
job.jobtype().to_string(),
err
- ),
- Ok(_) => (),
+ );
}
if let Some(email) = email {
let gc_status = datastore.last_gc_status();
- if let Err(err) = crate::server::send_gc_status(&email, &store, &gc_status, &result) {
+ if let Err(err) = crate::server::send_gc_status(&email, notify, &store, &gc_status, &result) {
eprintln!("send gc notification failed: {}", err);
}
}