this unifies the logic into a single place instead of all over this module and the plugins.
it also fixes tons of 'uninitialized value' warnings when backing up with --dumpdir but no --storage set, since the existing conditions for PBS targets are missing a definedness check. Signed-off-by: Fabian Grünbichler <f.gruenbich...@proxmox.com> --- Notes: this commit alone does not break anything, but since the plugins in qemu-server and pve-container can't have a versioned depends on pve-manager, we need to break the old versions of pve-manager in those two packages to ensure we get a version setting the now required option. PVE/VZDump.pm | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/PVE/VZDump.pm b/PVE/VZDump.pm index 6fd3aeed..623c6f8c 100644 --- a/PVE/VZDump.pm +++ b/PVE/VZDump.pm @@ -86,6 +86,7 @@ sub storage_info { return { scfg => $scfg, maxfiles => $scfg->{maxfiles}, + pbs => 1, }; } else { return { @@ -459,6 +460,7 @@ sub new { if ($@); $opts->{dumpdir} = $info->{dumpdir}; $opts->{scfg} = $info->{scfg}; + $opts->{pbs} = $info->{pbs}; $maxfiles //= $info->{maxfiles}; } elsif ($opts->{dumpdir}) { $errors .= "dumpdir '$opts->{dumpdir}' does not exist" @@ -651,7 +653,7 @@ sub exec_backup_task { my $pbs_group_name; my $pbs_snapshot_name; - if ($opts->{scfg}->{type} eq 'pbs') { + if ($self->{opts}->{pbs}) { if ($vmtype eq 'lxc') { $pbs_group_name = "ct/$vmid"; } elsif ($vmtype eq 'qemu') { @@ -697,7 +699,7 @@ sub exec_backup_task { if ($maxfiles && !$opts->{remove}) { my $count; - if ($opts->{scfg}->{type} eq 'pbs') { + if ($self->{opts}->{pbs}) { my $res = PVE::Storage::PBSPlugin::run_client_cmd($opts->{scfg}, $opts->{storage}, 'snapshots', $pbs_group_name); $count = scalar(@$res); } else { @@ -710,7 +712,7 @@ sub exec_backup_task { if $count >= $maxfiles; } - if ($opts->{scfg}->{type} ne 'pbs') { + if (!$self->{opts}->{pbs}) { $task->{logfile} = "$opts->{dumpdir}/$basename.log"; } @@ -720,7 +722,7 @@ sub exec_backup_task { $ext .= ".${comp_ext}"; } - if ($opts->{scfg}->{type} eq 'pbs') { + if ($self->{opts}->{pbs}) { die "unable to pipe backup to stdout\n" if $opts->{stdout}; } else { if ($opts->{stdout}) { @@ -735,7 +737,7 @@ sub exec_backup_task { $task->{vmtype} = $vmtype; - if ($opts->{scfg}->{type} eq 'pbs') { + if ($self->{opts}->{pbs}) { $task->{tmpdir} = "/var/tmp/vzdumptmp$$"; #fixme } elsif ($opts->{tmpdir}) { $task->{tmpdir} = "$opts->{tmpdir}/vzdumptmp$$"; @@ -898,14 +900,14 @@ sub exec_backup_task { } # fixme: ?? - if ($opts->{scfg}->{type} eq 'pbs') { + if ($self->{opts}->{pbs}) { debugmsg ('info', "creating pbs archive on storage '$opts->{storage}'", $logfd); } else { debugmsg ('info', "creating archive '$task->{tarfile}'", $logfd); } $plugin->archive($task, $vmid, $task->{tmptar}, $comp); - if ($opts->{scfg}->{type} eq 'pbs') { + if ($self->{opts}->{pbs}) { # fixme: log size ? debugmsg ('info', "pbs upload finished", $logfd); } else { @@ -921,7 +923,7 @@ sub exec_backup_task { # purge older backup if ($maxfiles && $opts->{remove}) { - if ($opts->{scfg}->{type} eq 'pbs') { + if ($self->{opts}->{pbs}) { my $args = [$pbs_group_name, '--keep-last', $maxfiles]; my $logfunc = sub { my $line = shift; debugmsg ('info', $line, $logfd); }; PVE::Storage::PBSPlugin::run_raw_client_cmd( @@ -1012,7 +1014,7 @@ sub exec_backup_task { close ($logfd) if $logfd; if ($task->{tmplog}) { - if ($opts->{scfg}->{type} eq 'pbs') { + if ($self->{opts}->{pbs}) { if ($task->{state} eq 'ok') { my $param = [$pbs_snapshot_name, $task->{tmplog}]; PVE::Storage::PBSPlugin::run_raw_client_cmd( -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel