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

Reply via email to