From: Hannes Laimer Date: Tue, 20 Oct 2020 09:10:11 +0000 (+0200) Subject: api proxy: remove old verification scheduling X-Git-Tag: v0.9.2~57 X-Git-Url: https://git.proxmox.com/?p=proxmox-backup.git;a=commitdiff_plain;h=2ef1b6290fffcf2854e707311312ad87093ac519 api proxy: remove old verification scheduling Signed-off-by: Hannes Laimer --- diff --git a/src/api2/config/datastore.rs b/src/api2/config/datastore.rs index ad5c03a6..4f9cb7c7 100644 --- a/src/api2/config/datastore.rs +++ b/src/api2/config/datastore.rs @@ -75,10 +75,6 @@ pub fn list_datastores( optional: true, schema: PRUNE_SCHEDULE_SCHEMA, }, - "verify-schedule": { - optional: true, - schema: VERIFICATION_SCHEDULE_SCHEMA, - }, "keep-last": { optional: true, schema: PRUNE_SCHEMA_KEEP_LAST, @@ -133,7 +129,6 @@ pub fn create_datastore(param: Value) -> Result<(), Error> { crate::config::jobstate::create_state_file("prune", &datastore.name)?; crate::config::jobstate::create_state_file("garbage_collection", &datastore.name)?; - crate::config::jobstate::create_state_file("verify", &datastore.name)?; Ok(()) } @@ -179,8 +174,6 @@ pub enum DeletableProperty { gc_schedule, /// Delete the prune job schedule. prune_schedule, - /// Delete the verify schedule property - verify_schedule, /// Delete the keep-last property keep_last, /// Delete the keep-hourly property @@ -214,10 +207,6 @@ pub enum DeletableProperty { optional: true, schema: PRUNE_SCHEDULE_SCHEMA, }, - "verify-schedule": { - optional: true, - schema: VERIFICATION_SCHEDULE_SCHEMA, - }, "keep-last": { optional: true, schema: PRUNE_SCHEMA_KEEP_LAST, @@ -266,7 +255,6 @@ pub fn update_datastore( comment: Option, gc_schedule: Option, prune_schedule: Option, - verify_schedule: Option, keep_last: Option, keep_hourly: Option, keep_daily: Option, @@ -295,7 +283,6 @@ pub fn update_datastore( DeletableProperty::comment => { data.comment = None; }, DeletableProperty::gc_schedule => { data.gc_schedule = None; }, DeletableProperty::prune_schedule => { data.prune_schedule = None; }, - DeletableProperty::verify_schedule => { data.verify_schedule = None; }, DeletableProperty::keep_last => { data.keep_last = None; }, DeletableProperty::keep_hourly => { data.keep_hourly = None; }, DeletableProperty::keep_daily => { data.keep_daily = None; }, @@ -327,12 +314,6 @@ pub fn update_datastore( data.prune_schedule = prune_schedule; } - let mut verify_schedule_changed = false; - if verify_schedule.is_some() { - verify_schedule_changed = data.verify_schedule != verify_schedule; - data.verify_schedule = verify_schedule; - } - if keep_last.is_some() { data.keep_last = keep_last; } if keep_hourly.is_some() { data.keep_hourly = keep_hourly; } if keep_daily.is_some() { data.keep_daily = keep_daily; } @@ -354,10 +335,6 @@ pub fn update_datastore( crate::config::jobstate::create_state_file("prune", &name)?; } - if verify_schedule_changed { - crate::config::jobstate::create_state_file("verify", &name)?; - } - Ok(()) } @@ -400,7 +377,6 @@ pub fn delete_datastore(name: String, digest: Option) -> Result<(), Erro // ignore errors let _ = crate::config::jobstate::remove_state_file("prune", &name); let _ = crate::config::jobstate::remove_state_file("garbage_collection", &name); - let _ = crate::config::jobstate::remove_state_file("verify", &name); Ok(()) } diff --git a/src/bin/proxmox-backup-proxy.rs b/src/bin/proxmox-backup-proxy.rs index 398488fa..375ce078 100644 --- a/src/bin/proxmox-backup-proxy.rs +++ b/src/bin/proxmox-backup-proxy.rs @@ -212,7 +212,6 @@ async fn schedule_tasks() -> Result<(), Error> { schedule_datastore_garbage_collection().await; schedule_datastore_prune().await; - schedule_datastore_verification().await; schedule_datastore_sync_jobs().await; schedule_datastore_verify_jobs().await; schedule_task_log_rotate().await; @@ -486,121 +485,6 @@ async fn schedule_datastore_prune() { } } -async fn schedule_datastore_verification() { - use proxmox_backup::backup::{DataStore, verify_all_backups}; - use proxmox_backup::server::{WorkerTask}; - use proxmox_backup::config::{ - jobstate::{self, Job}, - datastore::{self, DataStoreConfig} - }; - use proxmox_backup::tools::systemd::time::{ - parse_calendar_event, compute_next_event}; - - let config = match datastore::config() { - Err(err) => { - eprintln!("unable to read datastore config - {}", err); - return; - } - Ok((config, _digest)) => config, - }; - - for (store, (_, store_config)) in config.sections { - let datastore = match DataStore::lookup_datastore(&store) { - Ok(datastore) => datastore, - Err(err) => { - eprintln!("lookup_datastore failed - {}", err); - continue; - } - }; - - let store_config: DataStoreConfig = match serde_json::from_value(store_config) { - Ok(c) => c, - Err(err) => { - eprintln!("datastore config from_value failed - {}", err); - continue; - } - }; - - let event_str = match store_config.verify_schedule { - Some(event_str) => event_str, - None => continue, - }; - - let event = match parse_calendar_event(&event_str) { - Ok(event) => event, - Err(err) => { - eprintln!("unable to parse schedule '{}' - {}", event_str, err); - continue; - } - }; - - let worker_type = "verify"; - - let last = match jobstate::last_run_time(worker_type, &store) { - Ok(time) => time, - Err(err) => { - eprintln!("could not get last run time of {} {}: {}", worker_type, store, err); - continue; - } - }; - - let next = match compute_next_event(&event, last, false) { - Ok(Some(next)) => next, - Ok(None) => continue, - Err(err) => { - eprintln!("compute_next_event for '{}' failed - {}", event_str, err); - continue; - } - }; - - let now = proxmox::tools::time::epoch_i64(); - - if next > now { continue; } - - let mut job = match Job::new(worker_type, &store) { - Ok(job) => job, - Err(_) => continue, // could not get lock - }; - - let worker_id = store.clone(); - let store2 = store.clone(); - if let Err(err) = WorkerTask::new_thread( - worker_type, - Some(worker_id), - Userid::backup_userid().clone(), - false, - move |worker| { - job.start(&worker.upid().to_string())?; - worker.log(format!("starting verification on store {}", store2)); - worker.log(format!("task triggered by schedule '{}'", event_str)); - let result = try_block!({ - let failed_dirs = - verify_all_backups(datastore, worker.clone(), worker.upid())?; - if failed_dirs.len() > 0 { - worker.log("Failed to verify following snapshots:"); - for dir in failed_dirs { - worker.log(format!("\t{}", dir)); - } - Err(format_err!("verification failed - please check the log for details")) - } else { - Ok(()) - } - }); - - let status = worker.create_state(&result); - - if let Err(err) = job.finish(status) { - eprintln!("could not finish job state for {}: {}", worker_type, err); - } - - result - }, - ) { - eprintln!("unable to start verification on store {} - {}", store, err); - } - } -} - async fn schedule_datastore_sync_jobs() { use proxmox_backup::{ diff --git a/src/config/datastore.rs b/src/config/datastore.rs index 6dfc25b6..ffc81276 100644 --- a/src/config/datastore.rs +++ b/src/config/datastore.rs @@ -44,10 +44,6 @@ pub const DIR_NAME_SCHEMA: Schema = StringSchema::new("Directory name").schema() optional: true, schema: PRUNE_SCHEDULE_SCHEMA, }, - "verify-schedule": { - optional: true, - schema: VERIFICATION_SCHEDULE_SCHEMA, - }, "keep-last": { optional: true, schema: PRUNE_SCHEMA_KEEP_LAST, @@ -91,8 +87,6 @@ pub struct DataStoreConfig { #[serde(skip_serializing_if="Option::is_none")] pub prune_schedule: Option, #[serde(skip_serializing_if="Option::is_none")] - pub verify_schedule: Option, - #[serde(skip_serializing_if="Option::is_none")] pub keep_last: Option, #[serde(skip_serializing_if="Option::is_none")] pub keep_hourly: Option, diff --git a/www/config/DataStoreConfig.js b/www/config/DataStoreConfig.js index b7e78e2f..440feea5 100644 --- a/www/config/DataStoreConfig.js +++ b/www/config/DataStoreConfig.js @@ -12,7 +12,7 @@ Ext.define('pbs-data-store-config', { extend: 'Ext.data.Model', fields: [ 'name', 'path', 'comment', 'gc-schedule', 'prune-schedule', - 'verify-schedule', 'keep-last', 'keep-hourly', 'keep-daily', + 'keep-last', 'keep-hourly', 'keep-daily', 'keep-weekly', 'keep-monthly', 'keep-yearly', ], proxy: { diff --git a/www/window/DataStoreEdit.js b/www/window/DataStoreEdit.js index 5e7ccb78..ab2f3175 100644 --- a/www/window/DataStoreEdit.js +++ b/www/window/DataStoreEdit.js @@ -77,15 +77,6 @@ Ext.define('PBS.DataStoreEdit', { deleteEmpty: '{!isCreate}', }, }, - { - xtype: 'pbsCalendarEvent', - name: 'verify-schedule', - fieldLabel: gettext("Verify Schedule"), - emptyText: gettext('none'), - cbind: { - deleteEmpty: '{!isCreate}', - }, - }, ], columnB: [ {