]> git.proxmox.com Git - pve-common.git/commitdiff
pbs client: default to configured namespace for non-namespaced parameters
authorFabian Ebner <f.ebner@proxmox.com>
Wed, 20 Jul 2022 10:59:43 +0000 (12:59 +0200)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Fri, 4 Nov 2022 13:01:34 +0000 (14:01 +0100)
For get_snapshots(), also set the default when no namespaced parameter
is present at all.

This would break any callers that have a namespace in the initial
config and explicitly don't set it for a later call, but the only
such caller is restore_pxar() in PMG, which /should/ be using the
namespace!

In other words, this implicitly fixes the restore_pxar() call in PMG
and avoids the need to extract the namespace from the configuration
(which already is present in the client) on the call site for all
functions that currently take a namespaced parameter.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
src/PVE/PBSClient.pm

index 4b5b485255e7a0836f19017606b456d0decf11ca..dfb8d76ea0ee03baedeee33c732a802962ace9cb 100644 (file)
@@ -242,11 +242,11 @@ sub autogen_encryption_key {
     return file_get_contents($encfile);
 };
 
-# Snapshot or group parameters can be either just a string and will then refer to the root
-# namespace, or a tuple of `[namespace, snapshot]`.
-my sub split_namespaced_parameter : prototype($) {
-    my ($snapshot) = @_;
-    return (undef, $snapshot) if !ref($snapshot);
+# Snapshot or group parameters can be either just a string and will then default to the namespace
+# that's part of the initial configuration in new(), or a tuple of `[namespace, snapshot]`.
+my sub split_namespaced_parameter : prototype($$) {
+    my ($self, $snapshot) = @_;
+    return ($self->{scfg}->{namespace}, $snapshot) if !ref($snapshot);
 
     (my $namespace, $snapshot) = @$snapshot;
     return ($namespace, $snapshot);
@@ -258,7 +258,9 @@ sub get_snapshots {
 
     my $namespace;
     if (defined($group)) {
-       ($namespace, $group) = split_namespaced_parameter($group);
+       ($namespace, $group) = split_namespaced_parameter($self, $group);
+    } else {
+       $namespace = $self->{scfg}->{namespace};
     }
 
     my $param = [];
@@ -296,7 +298,7 @@ sub restore_pxar {
     die "archive name not provided\n" if !defined($pxarname);
     die "restore-target not provided\n" if !defined($target);
 
-    (my $namespace, $snapshot) = split_namespaced_parameter($snapshot);
+    (my $namespace, $snapshot) = split_namespaced_parameter($self, $snapshot);
 
     my $param = [
        "$snapshot",
@@ -316,7 +318,7 @@ sub forget_snapshot {
 
     die "snapshot not provided\n" if !defined($snapshot);
 
-    (my $namespace, $snapshot) = split_namespaced_parameter($snapshot);
+    (my $namespace, $snapshot) = split_namespaced_parameter($self, $snapshot);
 
     return run_client_cmd($self, 'forget', ["$snapshot"], 1, undef, $namespace)
 };
@@ -326,7 +328,7 @@ sub prune_group {
 
     die "group not provided\n" if !defined($group);
 
-    (my $namespace, $group) = split_namespaced_parameter($group);
+    (my $namespace, $group) = split_namespaced_parameter($self, $group);
 
     # do nothing if no keep options specified for remote
     return [] if scalar(keys %$prune_opts) == 0;
@@ -373,7 +375,7 @@ sub status {
 sub file_restore_list {
     my ($self, $snapshot, $filepath, $base64) = @_;
 
-    (my $namespace, $snapshot) = split_namespaced_parameter($snapshot);
+    (my $namespace, $snapshot) = split_namespaced_parameter($self, $snapshot);
 
     return run_client_cmd(
        $self,
@@ -409,7 +411,7 @@ sub file_restore_extract_prepare {
 sub file_restore_extract {
     my ($self, $output_file, $snapshot, $filepath, $base64) = @_;
 
-    (my $namespace, $snapshot) = split_namespaced_parameter($snapshot);
+    (my $namespace, $snapshot) = split_namespaced_parameter($self, $snapshot);
 
     my $ret = eval {
        local $SIG{ALRM} = sub { die "got timeout\n" };