From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id B40281FF141 for ; Fri, 27 Feb 2026 13:07:02 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id EF91FFBC2; Fri, 27 Feb 2026 13:08:01 +0100 (CET) From: Dominik Csapak To: pve-devel@lists.proxmox.com Subject: [PATCH guest-common v3 1/1] helpers: exec hookscript: add optional parameters Date: Fri, 27 Feb 2026 13:06:51 +0100 Message-ID: <20260227120728.2152303-2-d.csapak@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260227120728.2152303-1-d.csapak@proxmox.com> References: <20260227120728.2152303-1-d.csapak@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -1.032 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 1.158 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.306 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.668 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: F2LY7EYKTK4NNK6WNBH4CBJUPSDCUZVR X-Message-ID-Hash: F2LY7EYKTK4NNK6WNBH4CBJUPSDCUZVR X-MailFrom: d.csapak@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: sometimes we may want to call the hookscript with additional parameters in some phases, e.g. we want to call it for each pci device that was prepared before starting with the correct uuid or pci id. Add these new parameters to the environment instead of the positional parameters of the hookscript, since that is more future proof and we get a key/value pair instead of just the position. Use the prefix 'PVE_HOOK_' so they're always in a separate namespace. Signed-off-by: Dominik Csapak --- src/PVE/GuestHelpers.pm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/PVE/GuestHelpers.pm b/src/PVE/GuestHelpers.pm index f8d112b..1536259 100644 --- a/src/PVE/GuestHelpers.pm +++ b/src/PVE/GuestHelpers.pm @@ -115,14 +115,23 @@ sub check_hookscript { } sub exec_hookscript { - my ($conf, $vmid, $phase, $stop_on_error) = @_; + my ($conf, $vmid, $phase, $stop_on_error, $params) = @_; return if !$conf->{hookscript}; + $params //= {}; + eval { my $hookscript = check_hookscript($conf->{hookscript}); die $@ if $@; + local %ENV; + + for my $key (keys $params->%*) { + my $new_key = "PVE_HOOK_" . uc($key); + $ENV{$new_key} = $params->{$key}; + } + PVE::Tools::run_command([$hookscript, $vmid, $phase]); }; if (my $err = $@) { -- 2.47.3