[pbs-devel] [PATCH vma-to-pbs v5 2/4] add option to skip vmids whose backups failed to upload
Shannon Sterz
s.sterz at proxmox.com
Wed Nov 13 12:41:15 CET 2024
comments in-line:
On Mon Nov 11, 2024 at 2:08 PM CET, Filip Schauer wrote:
> Signed-off-by: Filip Schauer <f.schauer at proxmox.com>
> ---
> src/main.rs | 6 ++++++
> src/vma2pbs.rs | 13 ++++++++++---
> 2 files changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/src/main.rs b/src/main.rs
> index a394078..d4b36fa 100644
> --- a/src/main.rs
> +++ b/src/main.rs
> @@ -50,6 +50,9 @@ Options:
> File containing a comment/notes
> [--log-file <LOG_FILE>]
> Log file
> + --skip-failed
> + Skip VMIDs that failed to be uploaded and continue onto the next VMID if a dump directory
> + is specified.
> -y, --yes
> Automatic yes to prompts
> -h, --help
> @@ -70,6 +73,7 @@ fn parse_args() -> Result<BackupVmaToPbsArgs, Error> {
> "--compress",
> "-e",
> "--encrypt",
> + "--skip-failed",
> "-y",
> "--yes",
> ];
> @@ -119,6 +123,7 @@ fn parse_args() -> Result<BackupVmaToPbsArgs, Error> {
> let key_password_file: Option<OsString> = args.opt_value_from_str("--key-password-file")?;
> let notes_file: Option<OsString> = args.opt_value_from_str("--notes-file")?;
> let log_file_path: Option<OsString> = args.opt_value_from_str("--log-file")?;
> + let skip_failed = args.contains("--skip-failed");
> let yes = args.contains(["-y", "--yes"]);
>
> match (encrypt, keyfile.is_some()) {
> @@ -347,6 +352,7 @@ fn parse_args() -> Result<BackupVmaToPbsArgs, Error> {
> let options = BackupVmaToPbsArgs {
> pbs_args,
> grouped_vmas,
> + skip_failed,
> };
>
> Ok(options)
> diff --git a/src/vma2pbs.rs b/src/vma2pbs.rs
> index 95ede9b..a5b4027 100644
> --- a/src/vma2pbs.rs
> +++ b/src/vma2pbs.rs
> @@ -32,6 +32,7 @@ const VMA_CLUSTER_SIZE: usize = 65536;
> pub struct BackupVmaToPbsArgs {
> pub pbs_args: PbsArgs,
> pub grouped_vmas: HashMap<String, Vec<VmaBackupArgs>>,
> + pub skip_failed: bool,
> }
>
> pub struct PbsArgs {
> @@ -478,13 +479,19 @@ pub fn vma2pbs(args: BackupVmaToPbsArgs) -> Result<(), Error> {
> for (_, vma_group) in args.grouped_vmas {
> for backup_args in vma_group {
> if let Err(e) = upload_vma_file(pbs_args, &backup_args) {
> - eprintln!(
> + let err_msg = format!(
> "Failed to upload vma file at {:?} - {}",
> backup_args.vma_file_path.unwrap_or("(stdin)".into()),
> e
nit: i'd move `e` into the format string, since you are basically
already touching these lines :)
> );
> - println!("Skipping VMID {}", backup_args.backup_id);
> - break;
> +
> + if args.skip_failed {
> + eprintln!("{}", err_msg);
> + println!("Skipping VMID {}", backup_args.backup_id);
> + break;
> + } else {
> + bail!(err_msg);
> + }
> }
> }
> }
More information about the pbs-devel
mailing list