From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 56FE81FF141 for ; Fri, 13 Feb 2026 12:04:13 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 7B20B372F3; Fri, 13 Feb 2026 12:04:57 +0100 (CET) Date: Fri, 13 Feb 2026 12:04:49 +0100 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= Subject: Re: [pve-devel] [PATCH guest-common v2 1/1] helpers: exec hookscript: add optional parameters To: Dominik Csapak , Proxmox VE development discussion References: <20260123132611.974310-1-d.csapak@proxmox.com> <20260123132611.974310-2-d.csapak@proxmox.com> <1770979568.hk0p54ucxy.astroid@yuna.none> <5296fd4d-e207-4e0f-9e3f-af5be4e2453a@proxmox.com> In-Reply-To: <5296fd4d-e207-4e0f-9e3f-af5be4e2453a@proxmox.com> MIME-Version: 1.0 User-Agent: astroid/0.17.0 (https://github.com/astroidmail/astroid) Message-Id: <1770980615.qmyhx86j1s.astroid@yuna.none> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1770980689584 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.046 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 0.001 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.001 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.001 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: RM7DO2TRQ76W2A7EVIHNMYZB5MA46GIZ X-Message-ID-Hash: RM7DO2TRQ76W2A7EVIHNMYZB5MA46GIZ X-MailFrom: f.gruenbichler@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: On February 13, 2026 11:52 am, Dominik Csapak wrote: >=20 >=20 > On 2/13/26 11:47 AM, Fabian Gr=C3=BCnbichler wrote: >> On January 23, 2026 2:25 pm, Dominik Csapak wrote: >>> 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 ge= t >>> a key/value pair instead of just the position. >>> >>> Signed-off-by: Dominik Csapak >>> --- >>> changes from v1: >>> * use a hash instead of a list for the parameters, and give them to the >>> hookscript via the environment instead of positional parameters, lik= e >>> we do for the vzdump hookscript >>> >>> src/PVE/GuestHelpers.pm | 10 +++++++++- >>> 1 file changed, 9 insertions(+), 1 deletion(-) >>> >>> diff --git a/src/PVE/GuestHelpers.pm b/src/PVE/GuestHelpers.pm >>> index f8d112b..b4122e6 100644 >>> --- a/src/PVE/GuestHelpers.pm >>> +++ b/src/PVE/GuestHelpers.pm >>> @@ -115,14 +115,22 @@ sub check_hookscript { >>> } >>> =20 >>> sub exec_hookscript { >>> - my ($conf, $vmid, $phase, $stop_on_error) =3D @_; >>> + my ($conf, $vmid, $phase, $stop_on_error, $params) =3D @_; >>> =20 >>> return if !$conf->{hookscript}; >>> =20 >>> + $params //=3D {}; >>> + >>> eval { >>> my $hookscript =3D check_hookscript($conf->{hookscript}); >>> die $@ if $@; >>> =20 >>> + local %ENV; >>> + >>> + for my $key (keys $params->%*) { >>> + $ENV{ uc($key) } =3D $params->{$key}; >>=20 >> this should really have some sort of static prefix, both to avoid >> clashes, and to allow the hookscript to find all such parameters (e.g. >> for logging purposes) by filtering all set env variables. >>=20 >> PVE_HOOKSCRIPT_PARAM_... >>=20 >> or something similar would do the trick? >=20 >=20 > yep make sense, but maybe something a bit shorter? >=20 > PVE_PARAM_ >=20 > PVE_HS_PARAM_ >=20 > PVE_HS_ >=20 > ? yeah, anything short but specific enough to avoid accidents should be fine. maybe `PVE_HOOK_` ?