From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 339247D175; Wed, 20 Jul 2022 12:59:55 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 2E3D1334E3; Wed, 20 Jul 2022 12:59:55 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS; Wed, 20 Jul 2022 12:59:53 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id A7D3A43664; Wed, 20 Jul 2022 12:59:52 +0200 (CEST) From: Fabian Ebner To: pve-devel@lists.proxmox.com, pmg-devel@lists.proxmox.com Date: Wed, 20 Jul 2022 12:59:43 +0200 Message-Id: <20220720105948.291740-4-f.ebner@proxmox.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220720105948.291740-1-f.ebner@proxmox.com> References: <20220720105948.291740-1-f.ebner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.109 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH pve-common 3/5] pbs client: default to configured namespace for non-namespaced parameters X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Jul 2022 10:59:55 -0000 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 --- 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