public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Daniel Kral <d.kral@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH ha-manager v2 03/12] tree-wide: pass optional parameters as hash values for for_each_rule helper
Date: Fri,  1 Aug 2025 18:22:18 +0200	[thread overview]
Message-ID: <20250801162230.296214-4-d.kral@proxmox.com> (raw)
In-Reply-To: <20250801162230.296214-1-d.kral@proxmox.com>

Make call sites to the for_each_rule more readable and while at remove
unnecessary variables in the helper body as well.

Suggested-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
 src/PVE/API2/HA/Rules.pm             |  6 ++----
 src/PVE/HA/Rules.pm                  | 16 +++++++---------
 src/PVE/HA/Rules/NodeAffinity.pm     | 14 +++++---------
 src/PVE/HA/Rules/ResourceAffinity.pm | 22 ++++++++--------------
 4 files changed, 22 insertions(+), 36 deletions(-)

diff --git a/src/PVE/API2/HA/Rules.pm b/src/PVE/API2/HA/Rules.pm
index 1591df28..b180d2ed 100644
--- a/src/PVE/API2/HA/Rules.pm
+++ b/src/PVE/API2/HA/Rules.pm
@@ -192,10 +192,8 @@ __PACKAGE__->register_method({
 
                 push @$res, $cfg;
             },
-            {
-                type => $type,
-                sid => $resource,
-            },
+            type => $type,
+            sid => $resource,
         );
 
         return $res;
diff --git a/src/PVE/HA/Rules.pm b/src/PVE/HA/Rules.pm
index e5d12571..e2b77215 100644
--- a/src/PVE/HA/Rules.pm
+++ b/src/PVE/HA/Rules.pm
@@ -419,13 +419,13 @@ sub canonicalize : prototype($$$) {
 
 =head3 foreach_rule(...)
 
-=head3 foreach_rule($rules, $func [, $opts])
+=head3 foreach_rule($rules, $func [, %opts])
 
 Filters the given C<$rules> according to the C<$opts> and loops over the
 resulting rules in the order as defined in the section config and executes
 C<$func> with the parameters C<L<< ($rule, $ruleid) >>>.
 
-The filter properties for C<$opts> are:
+The following key-value pairs for C<$opts> as filter properties are:
 
 =over
 
@@ -439,12 +439,10 @@ The filter properties for C<$opts> are:
 
 =cut
 
-sub foreach_rule : prototype($$;$) {
-    my ($rules, $func, $opts) = @_;
+sub foreach_rule : prototype($$;%) {
+    my ($rules, $func, %opts) = @_;
 
-    my $sid = $opts->{sid};
-    my $type = $opts->{type};
-    my $exclude_disabled_rules = $opts->{exclude_disabled_rules};
+    my $sid = $opts{sid};
 
     my @ruleids = sort {
         $rules->{order}->{$a} <=> $rules->{order}->{$b}
@@ -455,8 +453,8 @@ sub foreach_rule : prototype($$;$) {
 
         next if !$rule; # skip invalid rules
         next if defined($sid) && !defined($rule->{resources}->{$sid});
-        next if defined($type) && $rule->{type} ne $type;
-        next if $exclude_disabled_rules && exists($rule->{disable});
+        next if defined($opts{type}) && $rule->{type} ne $opts{type};
+        next if $opts{exclude_disabled_rules} && exists($rule->{disable});
 
         $func->($rule, $ruleid);
     }
diff --git a/src/PVE/HA/Rules/NodeAffinity.pm b/src/PVE/HA/Rules/NodeAffinity.pm
index ee3ef985..09a8e67c 100644
--- a/src/PVE/HA/Rules/NodeAffinity.pm
+++ b/src/PVE/HA/Rules/NodeAffinity.pm
@@ -148,10 +148,8 @@ sub get_plugin_check_arguments {
 
             $result->{node_affinity_rules}->{$ruleid} = $rule;
         },
-        {
-            type => 'node-affinity',
-            exclude_disabled_rules => 1,
-        },
+        type => 'node-affinity',
+        exclude_disabled_rules => 1,
     );
 
     return $result;
@@ -231,11 +229,9 @@ my $get_resource_node_affinity_rule = sub {
 
             $node_affinity_rule = dclone($rule) if !$node_affinity_rule;
         },
-        {
-            sid => $sid,
-            type => 'node-affinity',
-            exclude_disabled_rules => 1,
-        },
+        sid => $sid,
+        type => 'node-affinity',
+        exclude_disabled_rules => 1,
     );
 
     return $node_affinity_rule;
diff --git a/src/PVE/HA/Rules/ResourceAffinity.pm b/src/PVE/HA/Rules/ResourceAffinity.pm
index 6b5670ac..1d2ed1ed 100644
--- a/src/PVE/HA/Rules/ResourceAffinity.pm
+++ b/src/PVE/HA/Rules/ResourceAffinity.pm
@@ -92,10 +92,8 @@ sub get_plugin_check_arguments {
             $result->{positive_rules}->{$ruleid} = $rule if $rule->{affinity} eq 'positive';
             $result->{negative_rules}->{$ruleid} = $rule if $rule->{affinity} eq 'negative';
         },
-        {
-            type => 'resource-affinity',
-            exclude_disabled_rules => 1,
-        },
+        type => 'resource-affinity',
+        exclude_disabled_rules => 1,
     );
 
     return $result;
@@ -490,11 +488,9 @@ sub get_affinitive_resources : prototype($$) {
                 $affinity_set->{$csid} = 1 if $csid ne $sid;
             }
         },
-        {
-            sid => $sid,
-            type => 'resource-affinity',
-            exclude_disabled_rules => 1,
-        },
+        sid => $sid,
+        type => 'resource-affinity',
+        exclude_disabled_rules => 1,
     );
 
     return ($together, $separate);
@@ -560,11 +556,9 @@ sub get_resource_affinity : prototype($$$) {
                 }
             }
         },
-        {
-            sid => $sid,
-            type => 'resource-affinity',
-            exclude_disabled_rules => 1,
-        },
+        sid => $sid,
+        type => 'resource-affinity',
+        exclude_disabled_rules => 1,
     );
 
     return ($together, $separate);
-- 
2.47.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


  parent reply	other threads:[~2025-08-01 16:22 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-01 16:22 [pve-devel] [PATCH ha-manager v2 00/12] HA rules follow up (part 1) Daniel Kral
2025-08-01 16:22 ` [pve-devel] [PATCH ha-manager v2 01/12] manager: fix ~revision version check for ha groups migration Daniel Kral
2025-08-01 16:22 ` [pve-devel] [PATCH ha-manager v2 02/12] test: ha tester: add ha groups migration tests with runtime upgrades Daniel Kral
2025-08-01 16:22 ` Daniel Kral [this message]
2025-08-01 16:22 ` [pve-devel] [PATCH ha-manager v2 04/12] api: rules: add missing return schema for the read_rule api endpoint Daniel Kral
2025-08-01 16:22 ` [pve-devel] [PATCH ha-manager v2 05/12] api: rules: ignore disable parameter if it is set to a falsy value Daniel Kral
2025-08-01 16:22 ` [pve-devel] [PATCH ha-manager v2 06/12] rules: resource affinity: make message in inter-consistency check clearer Daniel Kral
2025-08-01 16:22 ` [pve-devel] [PATCH ha-manager v2 07/12] config, manager: do not check ignored resources with affinity when migrating Daniel Kral
2025-08-01 16:22 ` [pve-devel] [PATCH ha-manager v2 08/12] rules: make positive affinity resources migrate on single resource fail Daniel Kral
2025-08-01 16:22 ` [pve-devel] [PATCH ha-manager v2 09/12] rules: allow same resources in node and resource affinity rules Daniel Kral
2025-08-01 16:22 ` [pve-devel] [PATCH ha-manager v2 10/12] rules: restrict inter-plugin resource references to simple cases Daniel Kral
2025-08-01 16:22 ` [pve-devel] [PATCH ha-manager v2 11/12] test: rules: add test cases for inter-plugin checks allowing simple use cases Daniel Kral
2025-08-01 16:22 ` [pve-devel] [PATCH ha-manager v2 12/12] test: ha tester: add resource affinity test cases mixed with node affinity rules Daniel Kral
2025-08-01 17:36 ` [pve-devel] applied: [PATCH ha-manager v2 00/12] HA rules follow up (part 1) Thomas Lamprecht

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250801162230.296214-4-d.kral@proxmox.com \
    --to=d.kral@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal