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
next prev 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.