There are some inconsistencies between the status API endpoint's and the LRM's active_service_count(...) helper's counting of active services. Sync these by:
- Counting a migrating service as active on both the source and target node's LRM as has been introduced in commit a94a38f9 ("LRM: count incoming migrations towards a nodes active resources"). - Not counting services as active if these are in error or request_start state as has been introduced in commit 38545741 ("LRM: do not count erroneous service as active") and commit 4931b586 ("manager: add new intermediate state for stop->start transitions") respectively. Signed-off-by: Daniel Kral <d.k...@proxmox.com> --- src/PVE/API2/HA/Status.pm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/PVE/API2/HA/Status.pm b/src/PVE/API2/HA/Status.pm index 6e13c2c8..3d9aabaa 100644 --- a/src/PVE/API2/HA/Status.pm +++ b/src/PVE/API2/HA/Status.pm @@ -197,13 +197,21 @@ __PACKAGE__->register_method({ my $active_count = {}; foreach my $sid (sort keys %{ $status->{service_status} }) { my $sd = $status->{service_status}->{$sid}; + my $target = $sd->{target}; # count as active if we are the target. next if !$sd->{node}; $active_count->{ $sd->{node} } = 0 if !defined($active_count->{ $sd->{node} }); my $req_state = $sd->{state}; next if !defined($req_state); next if $req_state eq 'stopped'; next if $req_state eq 'freeze'; + next if $req_state eq 'error'; + next if $req_state eq 'request_start'; $active_count->{ $sd->{node} }++; + + if ($target && $target ne $sd->{node}) { + $active_count->{$target} = 0 if !defined($active_count->{$target}); + $active_count->{$target}++; + } } foreach my $node (sort keys %{ $status->{node_status} }) { -- 2.47.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel