From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id 41DB11FF0A3 for ; Thu, 01 Oct 2026 10:44:08 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 041B921C84; Thu, 01 Oct 2026 10:39:44 +0200 (CEST) From: Lukas Wagner To: pbs-devel@lists.proxmox.com, pve-devel@lists.proxmox.com Subject: [PATCH manager v2 31/34] api: notification: pass config/updater directly to rust bindings Date: Thu, 1 Oct 2026 10:37:03 +0200 Message-ID: <20261001083706.144246-32-l.wagner@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261001083706.144246-1-l.wagner@proxmox.com> References: <20261001083706.144246-1-l.wagner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1790843858234 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.406 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust 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: 3LPFNSWG622OQ3RR3KX5VE3DOCSMMJW6 X-Message-ID-Hash: 3LPFNSWG622OQ3RR3KX5VE3DOCSMMJW6 X-MailFrom: l.wagner@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 Backup Server development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Instead of having to enumerate function parameters individually, pass the entire parameter hash to the rust bindings. This reduces potential for future errors and reduces churn when adding new parameters. Signed-off-by: Lukas Wagner --- PVE/API2/Cluster/Notifications.pm | 147 +++++------------------------- PVE/VZDump.pm | 19 ++-- 2 files changed, 33 insertions(+), 133 deletions(-) diff --git a/PVE/API2/Cluster/Notifications.pm b/PVE/API2/Cluster/Notifications.pm index 8b455227..3f99de08 100644 --- a/PVE/API2/Cluster/Notifications.pm +++ b/PVE/API2/Cluster/Notifications.pm @@ -518,21 +518,11 @@ __PACKAGE__->register_method({ code => sub { my ($param) = @_; - my $name = extract_param($param, 'name'); - my $mailto = extract_param($param, 'mailto'); - my $mailto_user = extract_param($param, 'mailto-user'); - my $from_address = extract_param($param, 'from-address'); - my $author = extract_param($param, 'author'); - my $comment = extract_param($param, 'comment'); - my $disable = extract_param($param, 'disable'); - eval { PVE::Notify::lock_config(sub { my $config = PVE::Notify::read_config(); - $config->add_sendmail_endpoint( - $name, $mailto, $mailto_user, $from_address, $author, $comment, $disable, - ); + $config->add_sendmail_endpoint($param); PVE::Notify::write_config($config); }); @@ -582,13 +572,6 @@ __PACKAGE__->register_method({ my ($param) = @_; my $name = extract_param($param, 'name'); - my $mailto = extract_param($param, 'mailto'); - my $mailto_user = extract_param($param, 'mailto-user'); - my $from_address = extract_param($param, 'from-address'); - my $author = extract_param($param, 'author'); - my $comment = extract_param($param, 'comment'); - my $disable = extract_param($param, 'disable'); - my $delete = extract_param($param, 'delete'); my $digest = extract_param($param, 'digest'); @@ -597,15 +580,7 @@ __PACKAGE__->register_method({ my $config = PVE::Notify::read_config(); $config->update_sendmail_endpoint( - $name, - $mailto, - $mailto_user, - $from_address, - $author, - $comment, - $disable, - $delete, - $digest, + $name, $param, $delete, $digest, ); PVE::Notify::write_config($config); @@ -789,18 +764,19 @@ __PACKAGE__->register_method({ code => sub { my ($param) = @_; - my $name = extract_param($param, 'name'); - my $server = extract_param($param, 'server'); my $token = extract_param($param, 'token'); - my $comment = extract_param($param, 'comment'); - my $disable = extract_param($param, 'disable'); + my $name = $param->{name}; eval { PVE::Notify::lock_config(sub { my $config = PVE::Notify::read_config(); $config->add_gotify_endpoint( - $name, $server, $token, $comment, $disable, + $param, + { + 'name' => $name, + 'token' => $token, + }, ); PVE::Notify::write_config($config); @@ -850,10 +826,7 @@ __PACKAGE__->register_method({ my ($param) = @_; my $name = extract_param($param, 'name'); - my $server = extract_param($param, 'server'); my $token = extract_param($param, 'token'); - my $comment = extract_param($param, 'comment'); - my $disable = extract_param($param, 'disable'); my $delete = extract_param($param, 'delete'); my $digest = extract_param($param, 'digest'); @@ -864,10 +837,10 @@ __PACKAGE__->register_method({ $config->update_gotify_endpoint( $name, - $server, - $token, - $comment, - $disable, + $param, + { + token => $token, + }, $delete, $digest, ); @@ -1102,36 +1075,19 @@ __PACKAGE__->register_method({ code => sub { my ($param) = @_; - my $name = extract_param($param, 'name'); - my $server = extract_param($param, 'server'); - my $port = extract_param($param, 'port'); - my $mode = extract_param($param, 'mode'); - my $username = extract_param($param, 'username'); + my $name = $param->{name}; my $password = extract_param($param, 'password'); - my $mailto = extract_param($param, 'mailto'); - my $mailto_user = extract_param($param, 'mailto-user'); - my $from_address = extract_param($param, 'from-address'); - my $author = extract_param($param, 'author'); - my $comment = extract_param($param, 'comment'); - my $disable = extract_param($param, 'disable'); eval { PVE::Notify::lock_config(sub { my $config = PVE::Notify::read_config(); $config->add_smtp_endpoint( - $name, - $server, - $port, - $mode, - $username, - $password, - $mailto, - $mailto_user, - $from_address, - $author, - $comment, - $disable, + $param, + { + name => $name, + password => $password, + }, ); PVE::Notify::write_config($config); @@ -1182,17 +1138,7 @@ __PACKAGE__->register_method({ my ($param) = @_; my $name = extract_param($param, 'name'); - my $server = extract_param($param, 'server'); - my $port = extract_param($param, 'port'); - my $mode = extract_param($param, 'mode'); - my $username = extract_param($param, 'username'); my $password = extract_param($param, 'password'); - my $mailto = extract_param($param, 'mailto'); - my $mailto_user = extract_param($param, 'mailto-user'); - my $from_address = extract_param($param, 'from-address'); - my $author = extract_param($param, 'author'); - my $comment = extract_param($param, 'comment'); - my $disable = extract_param($param, 'disable'); my $delete = extract_param($param, 'delete'); my $digest = extract_param($param, 'digest'); @@ -1203,17 +1149,10 @@ __PACKAGE__->register_method({ $config->update_smtp_endpoint( $name, - $server, - $port, - $mode, - $username, - $password, - $mailto, - $mailto_user, - $from_address, - $author, - $comment, - $disable, + $param, + { + password => $password, + }, $delete, $digest, ); @@ -1705,31 +1644,11 @@ __PACKAGE__->register_method({ code => sub { my ($param) = @_; - my $name = extract_param($param, 'name'); - my $match_severity = extract_param($param, 'match-severity'); - my $match_field = extract_param($param, 'match-field'); - my $match_calendar = extract_param($param, 'match-calendar'); - my $target = extract_param($param, 'target'); - my $mode = extract_param($param, 'mode'); - my $invert_match = extract_param($param, 'invert-match'); - my $comment = extract_param($param, 'comment'); - my $disable = extract_param($param, 'disable'); - eval { PVE::Notify::lock_config(sub { my $config = PVE::Notify::read_config(); - $config->add_matcher( - $name, - $target, - $match_severity, - $match_field, - $match_calendar, - $mode, - $invert_match, - $comment, - $disable, - ); + $config->add_matcher($param); PVE::Notify::write_config($config); }); @@ -1770,14 +1689,6 @@ __PACKAGE__->register_method({ my ($param) = @_; my $name = extract_param($param, 'name'); - my $match_severity = extract_param($param, 'match-severity'); - my $match_field = extract_param($param, 'match-field'); - my $match_calendar = extract_param($param, 'match-calendar'); - my $target = extract_param($param, 'target'); - my $mode = extract_param($param, 'mode'); - my $invert_match = extract_param($param, 'invert-match'); - my $comment = extract_param($param, 'comment'); - my $disable = extract_param($param, 'disable'); my $digest = extract_param($param, 'digest'); my $delete = extract_param($param, 'delete'); @@ -1786,17 +1697,7 @@ __PACKAGE__->register_method({ my $config = PVE::Notify::read_config(); $config->update_matcher( - $name, - $target, - $match_severity, - $match_field, - $match_calendar, - $mode, - $invert_match, - $comment, - $disable, - $delete, - $digest, + $name, $param, $delete, $digest, ); PVE::Notify::write_config($config); diff --git a/PVE/VZDump.pm b/PVE/VZDump.pm index 11c5089f..01c8064d 100644 --- a/PVE/VZDump.pm +++ b/PVE/VZDump.pm @@ -557,21 +557,20 @@ sub send_notification { # verified once the config is serialized. That means that # we can rely on that fact that no other endpoint with this name exists. my $endpoint_name = "<" . join(",", @$mailto) . ">"; - $notification_config->add_sendmail_endpoint( - $endpoint_name, - $mailto, - undef, - undef, - "vzdump backup tool", - ); + $notification_config->add_sendmail_endpoint({ + name => $endpoint_name, + mailto => $mailto, + author => "vzdump backup tool", + }); my $endpoints = [$endpoint_name]; # Add a matcher that matches all notifications, set our # newly created target as a target. - $notification_config->add_matcher( - "", $endpoints, - ); + $notification_config->add_matcher({ + name => "", + target => $endpoints, + }); PVE::Notify::notify( $severity, "vzdump", $template_data, $fields, $notification_config, -- 2.47.3