diff options
author | Emmanuel Vasilakis <mrzammler@mm.st> | 2023-02-20 15:07:54 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-20 15:07:54 +0200 |
commit | 922ebd48beb78beedf0fca771cb38d12879ee5b4 (patch) | |
tree | 93e80d21448d021dda44f83d54a5063804b66467 /web | |
parent | 618123f6be91956434827c497f620a7f7fc76f67 (diff) |
Re-index when machine guid changes (#14535)
* sort per reachable in v0/info. re-index per hostname
* remove whitespace
* keep the new host if the old is archived or orphan
Diffstat (limited to 'web')
-rw-r--r-- | web/api/web_api_v1.c | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/web/api/web_api_v1.c b/web/api/web_api_v1.c index c67a0cffd0..a594bd77a4 100644 --- a/web/api/web_api_v1.c +++ b/web/api/web_api_v1.c @@ -1042,6 +1042,22 @@ static inline void web_client_api_request_v1_info_summary_alarm_statuses(RRDHOST buffer_json_object_close(wb); } +static inline void web_client_api_request_v1_info_mirrored_hosts_status(BUFFER *wb, RRDHOST *host) { + buffer_json_add_array_item_object(wb); + + buffer_json_member_add_string(wb, "hostname", rrdhost_hostname(host)); + buffer_json_member_add_uint64(wb, "hops", host->system_info ? host->system_info->hops : (host == localhost) ? 0 : 1); + buffer_json_member_add_boolean(wb, "reachable", (host == localhost || !rrdhost_flag_check(host, RRDHOST_FLAG_ORPHAN))); + + buffer_json_member_add_string(wb, "guid", host->machine_guid); + buffer_json_member_add_uuid(wb, "node_id", host->node_id); + rrdhost_aclk_state_lock(host); + buffer_json_member_add_string(wb, "claim_id", host->aclk_state.claimed_id); + rrdhost_aclk_state_unlock(host); + + buffer_json_object_close(wb); +} + static inline void web_client_api_request_v1_info_mirrored_hosts(BUFFER *wb) { RRDHOST *host; @@ -1054,19 +1070,14 @@ static inline void web_client_api_request_v1_info_mirrored_hosts(BUFFER *wb) { buffer_json_member_add_array(wb, "mirrored_hosts_status"); rrdhost_foreach_read(host) { - buffer_json_add_array_item_object(wb); - - buffer_json_member_add_string(wb, "hostname", rrdhost_hostname(host)); - buffer_json_member_add_uint64(wb, "hops", host->system_info ? host->system_info->hops : (host == localhost) ? 0 : 1); - buffer_json_member_add_boolean(wb, "reachable", (host == localhost || !rrdhost_flag_check(host, RRDHOST_FLAG_ORPHAN))); - - buffer_json_member_add_string(wb, "guid", host->machine_guid); - buffer_json_member_add_uuid(wb, "node_id", host->node_id); - rrdhost_aclk_state_lock(host); - buffer_json_member_add_string(wb, "claim_id", host->aclk_state.claimed_id); - rrdhost_aclk_state_unlock(host); - - buffer_json_object_close(wb); + if ((host == localhost || !rrdhost_flag_check(host, RRDHOST_FLAG_ORPHAN))) { + web_client_api_request_v1_info_mirrored_hosts_status(wb, host); + } + } + rrdhost_foreach_read(host) { + if ((host != localhost && rrdhost_flag_check(host, RRDHOST_FLAG_ORPHAN))) { + web_client_api_request_v1_info_mirrored_hosts_status(wb, host); + } } buffer_json_array_close(wb); |