On Thu Aug 21, 2025 at 4:35 PM CEST, Daniel Kral wrote: > diff --git a/src/PVE/HA/Rules/NodeAffinity.pm > b/src/PVE/HA/Rules/NodeAffinity.pm > index b7abf9a4..1af442ec 100644 > --- a/src/PVE/HA/Rules/NodeAffinity.pm > +++ b/src/PVE/HA/Rules/NodeAffinity.pm > @@ -251,31 +265,15 @@ If there are no available nodes at all, returns > C<undef>. > > =cut > > -sub get_node_affinity : prototype($$$) { > - my ($rules, $sid, $online_nodes) = @_; > +sub get_node_affinity { > + my ($node_affinity, $sid, $online_nodes) = @_; > > - my $node_affinity_rule = $get_resource_node_affinity_rule->($rules, > $sid); > - > - # default to a node affinity rule with all available nodes > - if (!$node_affinity_rule) { > - for my $node (keys %$online_nodes) { > - $node_affinity_rule->{nodes}->{$node} = { priority => 0 }; > - } > - } > - > - # add remaining nodes with low priority for non-strict node affinity > rules > - if (!$node_affinity_rule->{strict}) { > - for my $node (keys %$online_nodes) { > - next if defined($node_affinity_rule->{nodes}->{$node}); > - > - $node_affinity_rule->{nodes}->{$node} = { priority => -1 }; > - } > - } > + return ($online_nodes, $online_nodes) if > !defined($node_affinity->{$sid}->{nodes});
Just noticed that the `$node_affinity->{$sid}->{nodes}` could cause auto-vivification in the $node_affinity hash, so it should be something like return ($online_nodes, $online_nodes) if !defined($node_affinity->{$sid}); as the key $sid should only exist if there does actually exist a rule for that HA resource $sid and `nodes` cannot be empty as it's a required field in the section config, but a more auto-vivification-proof solution should be used here. I'll change that in a v2. > > my $allowed_nodes = {}; > my $prioritized_nodes = {}; > > - while (my ($node, $props) = each %{ $node_affinity_rule->{nodes} }) { > + while (my ($node, $props) = each $node_affinity->{$sid}->{nodes}->%*) { > next if !defined($online_nodes->{$node}); # node is offline > > $allowed_nodes->{$node} = 1; _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel