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

Reply via email to