fix(emqx_bridge_api): fix aggregate_metrics

This commit is contained in:
EMQ-YangM 2022-03-07 14:43:13 +08:00
parent 90ca08a34e
commit 015027d44a
1 changed files with 7 additions and 8 deletions

View File

@ -401,12 +401,12 @@ collect_status(Bridges) ->
[maps:with([node, status], B) || B <- Bridges].
aggregate_status(AllStatus) ->
AllConnected = lists:all(fun (#{status := connected}) -> true;
(_) -> false
end, AllStatus),
case AllConnected of
true -> connected;
false -> disconnected
Head = fun ([A | _]) -> A end,
HeadVal = maps:get(status, Head(AllStatus), connecting),
AllRes = lists:all(fun (#{status := Val}) -> Val == HeadVal end, AllStatus),
case AllRes of
true -> HeadVal;
false -> inconsistent
end.
collect_metrics(Bridges) ->
@ -423,13 +423,12 @@ aggregate_metrics(AllMetrics) ->
format_resp(#{id := Id, raw_config := RawConf,
resource_data := #{status := Status, metrics := Metrics}}) ->
{Type, BridgeName} = emqx_bridge:parse_bridge_id(Id),
IsConnected = fun(connected) -> connected; (_) -> disconnected end,
RawConf#{
id => Id,
type => Type,
name => maps:get(<<"name">>, RawConf, BridgeName),
node => node(),
status => IsConnected(Status),
status => Status,
metrics => format_metrics(Metrics)
}.