[pbs-devel] [PATCH proxmox-backup 02/11] pbs-datastore/prune: make PruneOptions an api type
Dominik Csapak
d.csapak at proxmox.com
Fri Jul 16 10:53:19 CEST 2021
so that we can reuse it from here
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
pbs-datastore/src/prune.rs | 50 +++++++++++++++++++++++++++++++++++++-
1 file changed, 49 insertions(+), 1 deletion(-)
diff --git a/pbs-datastore/src/prune.rs b/pbs-datastore/src/prune.rs
index d0d8ca16..4605e26f 100644
--- a/pbs-datastore/src/prune.rs
+++ b/pbs-datastore/src/prune.rs
@@ -2,6 +2,18 @@ use std::collections::{HashMap, HashSet};
use std::path::PathBuf;
use anyhow::{Error};
+use serde::{Deserialize, Serialize};
+
+use proxmox::api::api;
+
+use pbs_api_types::{
+ PRUNE_SCHEMA_KEEP_LAST,
+ PRUNE_SCHEMA_KEEP_HOURLY,
+ PRUNE_SCHEMA_KEEP_DAILY,
+ PRUNE_SCHEMA_KEEP_WEEKLY,
+ PRUNE_SCHEMA_KEEP_MONTHLY,
+ PRUNE_SCHEMA_KEEP_YEARLY,
+};
use super::BackupInfo;
@@ -68,13 +80,49 @@ fn remove_incomplete_snapshots(
}
}
-#[derive(Default)]
+#[api(
+ properties: {
+ "keep-last": {
+ schema: PRUNE_SCHEMA_KEEP_LAST,
+ optional: true,
+ },
+ "keep-hourly": {
+ schema: PRUNE_SCHEMA_KEEP_HOURLY,
+ optional: true,
+ },
+ "keep-daily": {
+ schema: PRUNE_SCHEMA_KEEP_DAILY,
+ optional: true,
+ },
+ "keep-weekly": {
+ schema: PRUNE_SCHEMA_KEEP_WEEKLY,
+ optional: true,
+ },
+ "keep-monthly": {
+ schema: PRUNE_SCHEMA_KEEP_MONTHLY,
+ optional: true,
+ },
+ "keep-yearly": {
+ schema: PRUNE_SCHEMA_KEEP_YEARLY,
+ optional: true,
+ },
+ }
+)]
+#[derive(Serialize, Deserialize, Default)]
+#[serde(rename_all = "kebab-case")]
+/// Common pruning options
pub struct PruneOptions {
+ #[serde(skip_serializing_if="Option::is_none")]
pub keep_last: Option<u64>,
+ #[serde(skip_serializing_if="Option::is_none")]
pub keep_hourly: Option<u64>,
+ #[serde(skip_serializing_if="Option::is_none")]
pub keep_daily: Option<u64>,
+ #[serde(skip_serializing_if="Option::is_none")]
pub keep_weekly: Option<u64>,
+ #[serde(skip_serializing_if="Option::is_none")]
pub keep_monthly: Option<u64>,
+ #[serde(skip_serializing_if="Option::is_none")]
pub keep_yearly: Option<u64>,
}
--
2.30.2
More information about the pbs-devel
mailing list