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 7A7F71FF0B0 for ; Fri, 09 Oct 2026 15:04:14 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id C230421CE1; Fri, 09 Oct 2026 14:58:18 +0200 (CEST) From: Lukas Wagner To: pbs-devel@lists.proxmox.com, pve-devel@lists.proxmox.com Subject: [PATCH manager v3 34/39] api: notification: pass config/updater directly to rust bindings Date: Fri, 9 Oct 2026 14:56:41 +0200 Message-ID: <20261009125646.284673-35-l.wagner@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261009125646.284673-1-l.wagner@proxmox.com> References: <20261009125646.284673-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: 1791550613722 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.318 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: ERS6GHSUINGTDH7XOPWYE2T6KDYXQPJ7 X-Message-ID-Hash: ERS6GHSUINGTDH7XOPWYE2T6KDYXQPJ7 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