On Mon Jan 19, 2026 at 4:00 PM CET, Fiona Ebner wrote:
> Am 15.12.25 um 4:55 PM schrieb Daniel Kral:
>> diff --git a/src/PVE/HA/Config.pm b/src/PVE/HA/Config.pm
>> index f8c5965e..fa14816c 100644
>> --- a/src/PVE/HA/Config.pm
>> +++ b/src/PVE/HA/Config.pm
>> @@ -382,22 +382,27 @@ sub service_is_configured {
>>  sub get_resource_motion_info {
>>      my ($sid) = @_;
>>  
>> -    my $resources = read_resources_config();
>> +    my $conf = read_resources_config();
>
> Nit: maybe it's slightly nicer to use read_and_compile_rules_config()
> already here and avoid a second read call below?

I guess you meant read_and_check_resources_config() here ;)

The service_check_ha_state(...) helper below assumes a parsed section
config (and is used in a bunch of places), while
read_and_check_resources_config() will return a modified version of the
resource config (defaults set, etc.).

What isn't nice at all here is that read_and_compile_rules_config()
reads the manager status and resource config a second and third time and
since it's only used here at the moment I'll make it a private helper
instead of reading on its own.

For read_and_check_resources_config() I'd move out the inner logic into
a separate private helper, so that all of get_resource_motion_info(...)
does work with the same single read from the resource config.

>
>>  
>>      my $dependent_resources = [];
>>      my $blocking_resources_by_node = {};
>>  
>> -    if (&$service_check_ha_state($resources, $sid)) {
>> +    if (&$service_check_ha_state($conf, $sid)) {
>>          my $manager_status = read_manager_status();
>>          my $ss = $manager_status->{service_status};
>>          my $ns = $manager_status->{node_status};
>>          # get_resource_motion_info expects a hashset of all nodes with 
>> status 'online'
>>          my $online_nodes = { map { $ns->{$_} eq 'online' ? ($_ => 1) : () } 
>> keys %$ns };
>> +        # get_resource_motion_info expects a resource config with defaults 
>> set
>> +        my $resources = read_and_check_resources_config();
>>  
>>          my $compiled_rules = read_and_compile_rules_config();
>>  
>> +        my $cd = $resources->{$sid} // {};
>>          ($dependent_resources, $blocking_resources_by_node) =
>> -            PVE::HA::Helpers::get_resource_motion_info($ss, $sid, 
>> $online_nodes, $compiled_rules);
>> +            PVE::HA::Helpers::get_resource_motion_info(
>> +                $ss, $sid, $cd, $online_nodes, $compiled_rules,
>> +            );
>>      }
>>  
>>      return ($dependent_resources, $blocking_resources_by_node);


_______________________________________________
pve-devel mailing list
[email protected]
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to