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 5A44D1FF09B for ; Mon, 12 Oct 2026 15:21:38 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 9FE8C21C9F; Mon, 12 Oct 2026 15:16:17 +0200 (CEST) From: Lukas Wagner To: pbs-devel@lists.proxmox.com, pve-devel@lists.proxmox.com Subject: [PATCH manager v4 34/39] api: notification: pass config/updater directly to rust bindings Date: Mon, 12 Oct 2026 15:14:08 +0200 Message-ID: <20261012131413.314088-35-l.wagner@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261012131413.314088-1-l.wagner@proxmox.com> References: <20261012131413.314088-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: 1791810865139 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.281 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: GBW7YDXF7UDLK3OLVGQDBSZOR6QHJPBR X-Message-ID-Hash: GBW7YDXF7UDLK3OLVGQDBSZOR6QHJPBR 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 VE 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