public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Fabian Ebner <f.ebner@proxmox.com>
To: pve-devel@lists.proxmox.com, pmg-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH pve-common 3/5] pbs client: default to configured namespace for non-namespaced parameters
Date: Wed, 20 Jul 2022 12:59:43 +0200	[thread overview]
Message-ID: <20220720105948.291740-4-f.ebner@proxmox.com> (raw)
In-Reply-To: <20220720105948.291740-1-f.ebner@proxmox.com>

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 | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/src/PVE/PBSClient.pm b/src/PVE/PBSClient.pm
index 4b5b485..dfb8d76 100644
--- a/src/PVE/PBSClient.pm
+++ b/src/PVE/PBSClient.pm
@@ -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" };
-- 
2.30.2





  parent reply	other threads:[~2022-07-20 10:59 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-20 10:59 [pve-devel] [PATCH-SERIES pve-common/pmg-api/pve-storage] pbs client: rework namespace usage and minor fixes Fabian Ebner
2022-07-20 10:59 ` [pve-devel] [PATCH pve-common 1/5] pbs client: delete password: return success for non-existent file Fabian Ebner
2022-07-20 10:59 ` [pve-devel] [PATCH pve-common 2/5] pbs client: forget snapshot: suppress output Fabian Ebner
2022-07-20 10:59 ` Fabian Ebner [this message]
2022-11-04  8:44   ` [pve-devel] [pmg-devel] [PATCH pve-common 3/5] pbs client: default to configured namespace for non-namespaced parameters Fiona Ebner
2022-07-20 10:59 ` [pve-devel] [RFC/PATCH pve-common 4/5] pbs client: deprecate namespaced parameters Fabian Ebner
2022-07-20 10:59 ` [pve-devel] [RFC/PATCH pve-common 5/5] pbs client: backup fs tree: drop namespace parameter Fabian Ebner
2022-07-22 10:53   ` Wolfgang Bumiller
2022-07-25  8:04     ` Fiona Ebner
2022-11-04 13:16   ` [pve-devel] applied-series: " Wolfgang Bumiller
2022-07-20 10:59 ` [pve-devel] [PATCH pmg-api 1/2] api: get group snapshots: take backup-id into account Fabian Ebner
2022-11-04 13:28   ` [pve-devel] applied-series: " Wolfgang Bumiller
2022-07-20 10:59 ` [pve-devel] [RFC/PATCH pmg-api 2/2] api: pbs: don't use namespaced parameters Fabian Ebner
2022-07-20 10:59 ` [pve-devel] [RFC/PATCH pve-storage 1/1] api: pbs: file restore: " Fabian Ebner
2022-11-04 13:17   ` [pve-devel] applied: " Wolfgang Bumiller
2022-10-04  8:08 ` [pve-devel] [pmg-devel] [PATCH-SERIES pve-common/pmg-api/pve-storage] pbs client: rework namespace usage and minor fixes Fiona Ebner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220720105948.291740-4-f.ebner@proxmox.com \
    --to=f.ebner@proxmox.com \
    --cc=pmg-devel@lists.proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal