[pve-devel] [PATCH ha-manager v2 03/12] tree-wide: pass optional parameters as hash values for for_each_rule helper
Daniel Kral
d.kral at proxmox.com
Fri Aug 1 18:22:18 CEST 2025
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 at proxmox.com>
Signed-off-by: Daniel Kral <d.kral at 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
More information about the pve-devel
mailing list