[pbs-devel] [RFC proxmox-backup 13/24] api: backup: add ignore-previous flag to backup endpoint
Christian Ebner
c.ebner at proxmox.com
Mon Jul 15 12:15:51 CEST 2024
By setting the optional `ignore-previous` endpoint, the previous
backup in the group is disregarded. This will be used when pushing
backups to a target, where monotonic increase of the backup time
cannot be guaranteed.
Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
---
examples/upload-speed.rs | 1 +
pbs-client/src/backup_writer.rs | 4 +++-
proxmox-backup-client/src/benchmark.rs | 1 +
proxmox-backup-client/src/main.rs | 1 +
src/api2/backup/mod.rs | 6 +++++-
5 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/examples/upload-speed.rs b/examples/upload-speed.rs
index e4b570ec5..8a6594a47 100644
--- a/examples/upload-speed.rs
+++ b/examples/upload-speed.rs
@@ -25,6 +25,7 @@ async fn upload_speed() -> Result<f64, Error> {
&(BackupType::Host, "speedtest".to_string(), backup_time).into(),
false,
true,
+ false,
)
.await?;
diff --git a/pbs-client/src/backup_writer.rs b/pbs-client/src/backup_writer.rs
index e5d217608..8a148cb07 100644
--- a/pbs-client/src/backup_writer.rs
+++ b/pbs-client/src/backup_writer.rs
@@ -102,6 +102,7 @@ impl BackupWriter {
backup: &BackupDir,
debug: bool,
benchmark: bool,
+ ignore_previous: bool,
) -> Result<Arc<BackupWriter>, Error> {
let mut param = json!({
"backup-type": backup.ty(),
@@ -109,7 +110,8 @@ impl BackupWriter {
"backup-time": backup.time,
"store": datastore,
"debug": debug,
- "benchmark": benchmark
+ "benchmark": benchmark,
+ "ignore-previous": ignore_previous,
});
if !ns.is_root() {
diff --git a/proxmox-backup-client/src/benchmark.rs b/proxmox-backup-client/src/benchmark.rs
index 1262fb46d..f4b084d8d 100644
--- a/proxmox-backup-client/src/benchmark.rs
+++ b/proxmox-backup-client/src/benchmark.rs
@@ -236,6 +236,7 @@ async fn test_upload_speed(
&(BackupType::Host, "benchmark".to_string(), backup_time).into(),
false,
true,
+ false,
)
.await?;
diff --git a/proxmox-backup-client/src/main.rs b/proxmox-backup-client/src/main.rs
index 6a7d09047..e9d00a223 100644
--- a/proxmox-backup-client/src/main.rs
+++ b/proxmox-backup-client/src/main.rs
@@ -963,6 +963,7 @@ async fn create_backup(
&snapshot,
true,
false,
+ false,
)
.await?;
diff --git a/src/api2/backup/mod.rs b/src/api2/backup/mod.rs
index ea0d0292e..c7d402ed0 100644
--- a/src/api2/backup/mod.rs
+++ b/src/api2/backup/mod.rs
@@ -52,6 +52,7 @@ pub const API_METHOD_UPGRADE_BACKUP: ApiMethod = ApiMethod::new(
("backup-time", false, &BACKUP_TIME_SCHEMA),
("debug", true, &BooleanSchema::new("Enable verbose debug logging.").schema()),
("benchmark", true, &BooleanSchema::new("Job is a benchmark (do not keep data).").schema()),
+ ("ignore-previous", true, &BooleanSchema::new("Do not lookup previous snapshot.").schema()),
]),
)
).access(
@@ -78,6 +79,7 @@ fn upgrade_to_backup_protocol(
async move {
let debug = param["debug"].as_bool().unwrap_or(false);
let benchmark = param["benchmark"].as_bool().unwrap_or(false);
+ let ignore_previous = param["ignore-previous"].as_bool().unwrap_or(false);
let auth_id: Authid = rpcenv.get_auth_id().unwrap().parse()?;
@@ -155,7 +157,7 @@ fn upgrade_to_backup_protocol(
bail!("backup owner check failed ({} != {})", auth_id, owner);
}
- let last_backup = {
+ let last_backup = if !ignore_previous {
let info = backup_group.last_backup(true).unwrap_or(None);
if let Some(info) = info {
let (manifest, _) = info.backup_dir.load_manifest()?;
@@ -173,6 +175,8 @@ fn upgrade_to_backup_protocol(
} else {
None
}
+ } else {
+ None
};
let backup_dir = backup_group.backup_dir(backup_dir_arg.time)?;
--
2.39.2
More information about the pbs-devel
mailing list