fix(alarms): add duration field for alarms

This commit is contained in:
zhouzb 2021-01-13 09:18:16 +08:00 committed by JianBo He
parent 67bfb4f10a
commit 42f95bba09
1 changed files with 12 additions and 1 deletions

View File

@ -568,7 +568,7 @@ get_alarms(Type) ->
[{Node, get_alarms(Node, Type)} || Node <- ekka_mnesia:running_nodes()]. [{Node, get_alarms(Node, Type)} || Node <- ekka_mnesia:running_nodes()].
get_alarms(Node, Type) when Node =:= node() -> get_alarms(Node, Type) when Node =:= node() ->
emqx_alarm:get_alarms(Type); add_duration_field(emqx_alarm:get_alarms(Type));
get_alarms(Node, Type) -> get_alarms(Node, Type) ->
rpc_call(Node, get_alarms, [Node, Type]). rpc_call(Node, get_alarms, [Node, Type]).
@ -585,6 +585,17 @@ delete_all_deactivated_alarms(Node) when Node =:= node() ->
delete_all_deactivated_alarms(Node) -> delete_all_deactivated_alarms(Node) ->
rpc_call(Node, delete_deactivated_alarms, [Node]). rpc_call(Node, delete_deactivated_alarms, [Node]).
add_duration_field(Alarms) ->
Now = erlang:system_time(microsecond),
add_duration_field(Alarms, Now, []).
add_duration_field([], _Now, Acc) ->
Acc;
add_duration_field([Alarm = #{activated := true, activate_at := ActivateAt}| Rest], Now, Acc) ->
add_duration_field(Rest, Now, [Alarm#{duration => Now - ActivateAt} | Acc]);
add_duration_field([Alarm = #{activated := false, activate_at := ActivateAt, deactivate_at := DeactivateAt}| Rest], Now, Acc) ->
add_duration_field(Rest, Now, [Alarm#{duration => DeactivateAt - ActivateAt} | Acc]).
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% Banned API %% Banned API
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------