From 9e3f008804dec9c2c687fe02edb7c912e13bc691 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Fri, 6 Dec 2019 12:28:31 +0100 Subject: [PATCH] src/backup/prune.rs: add new helper keeps_something() --- src/api2/admin/datastore.rs | 25 ++++++++----------------- src/backup/prune.rs | 10 ++++++++++ 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/api2/admin/datastore.rs b/src/api2/admin/datastore.rs index 3484ae84..4264339b 100644 --- a/src/api2/admin/datastore.rs +++ b/src/api2/admin/datastore.rs @@ -294,18 +294,17 @@ fn prune( let datastore = DataStore::lookup_datastore(store)?; - let mut keep_all = true; - - for opt in &["keep-last", "keep-daily", "keep-weekly", "keep-weekly", "keep-yearly"] { - if !param[opt].is_null() { - keep_all = false; - break; - } - } + let prune_options = PruneOptions { + keep_last: param["keep-last"].as_u64(), + keep_daily: param["keep-daily"].as_u64(), + keep_weekly: param["keep-weekly"].as_u64(), + keep_monthly: param["keep-monthly"].as_u64(), + keep_yearly: param["keep-yearly"].as_u64(), + }; let worker = WorkerTask::new("prune", Some(store.to_owned()), "root@pam", true)?; let result = try_block! { - if keep_all { + if !prune_options.keeps_something() { worker.log("No prune selection - keeping all files."); return Ok(()); } else { @@ -314,14 +313,6 @@ fn prune( let list = group.list_backups(&datastore.base_path())?; - let prune_options = PruneOptions { - keep_last: param["keep-last"].as_u64(), - keep_daily: param["keep-daily"].as_u64(), - keep_weekly: param["keep-weekly"].as_u64(), - keep_monthly: param["keep-monthly"].as_u64(), - keep_yearly: param["keep-yearly"].as_u64(), - }; - let mut prune_info = compute_prune_info(list, &prune_options)?; prune_info.reverse(); // delete older snapshots first diff --git a/src/backup/prune.rs b/src/backup/prune.rs index 18d1774f..387a78c1 100644 --- a/src/backup/prune.rs +++ b/src/backup/prune.rs @@ -113,6 +113,16 @@ impl PruneOptions { self.keep_yearly = value; self } + + pub fn keeps_something(&self) -> bool { + let mut keep_something = false; + if let Some(count) = self.keep_last { if count > 0 { keep_something = true; } } + if let Some(count) = self.keep_daily { if count > 0 { keep_something = true; } } + if let Some(count) = self.keep_weekly { if count > 0 { keep_something = true; } } + if let Some(count) = self.keep_monthly { if count > 0 { keep_something = true; } } + if let Some(count) = self.keep_yearly { if count > 0 { keep_something = true; } } + keep_something + } } pub fn compute_prune_info( -- 2.39.2