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 196611FF141 for ; Fri, 13 Feb 2026 12:10:36 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A2E033785C; Fri, 13 Feb 2026 12:11:20 +0100 (CET) Message-ID: <9d2d0ba7-af2b-4e34-94e0-0c4dc3ad9558@proxmox.com> Date: Fri, 13 Feb 2026 12:10:42 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Beta Subject: Re: [pve-devel] [PATCH guest-common v2 1/1] helpers: exec hookscript: add optional parameters To: =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= , 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> <1770980615.qmyhx86j1s.astroid@yuna.none> Content-Language: en-US From: Dominik Csapak In-Reply-To: <1770980615.qmyhx86j1s.astroid@yuna.none> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1770981039801 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.031 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: OG3CL6B6TG6FR4MIL4KRAWFVEFNNIUQF X-Message-ID-Hash: OG3CL6B6TG6FR4MIL4KRAWFVEFNNIUQF 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: On 2/13/26 12:04 PM, Fabian Grünbichler wrote: > On February 13, 2026 11:52 am, Dominik Csapak wrote: >> >> >> On 2/13/26 11:47 AM, Fabian Grünbichler 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 get >>>> 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, like >>>> 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 { >>>> } >>>> >>>> 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->%*) { >>>> + $ENV{ uc($key) } = $params->{$key}; >>> >>> 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. >>> >>> PVE_HOOKSCRIPT_PARAM_... >>> >>> or something similar would do the trick? >> >> >> yep make sense, but maybe something a bit shorter? >> >> PVE_PARAM_ >> >> PVE_HS_PARAM_ >> >> PVE_HS_ >> >> ? > > yeah, anything short but specific enough to avoid accidents should be > fine. maybe `PVE_HOOK_` ? yes, that sounds good to me, thx i'll send a v3, but i'll wait a bit if the other patches get reviewed