summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2020-10-01 22:16:40 +0300
committerMichael Klishin <michael@clojurewerkz.org>2020-10-05 17:12:28 +0300
commit32d7c7d702761158a343f0834c7bd89dbe5ac732 (patch)
treeed3ba9d14a511a20956b892a96fa741ee48bf3b3 /src
parent8ea09f53e6eb13203fc9c4e13a60670cdccae575 (diff)
downloadrabbitmq-server-git-32d7c7d702761158a343f0834c7bd89dbe5ac732.tar.gz
Introduce rabbit_alarm:format_as_map/1, format_as_maps/1
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_alarm.erl45
1 files changed, 41 insertions, 4 deletions
diff --git a/src/rabbit_alarm.erl b/src/rabbit_alarm.erl
index dbf9ae56da..6ced324e5f 100644
--- a/src/rabbit_alarm.erl
+++ b/src/rabbit_alarm.erl
@@ -21,7 +21,8 @@
-behaviour(gen_event).
-export([start_link/0, start/0, stop/0, register/2, set_alarm/1,
- clear_alarm/1, get_alarms/0, get_alarms/1, on_node_up/1, on_node_down/1]).
+ clear_alarm/1, get_alarms/0, get_alarms/1, on_node_up/1, on_node_down/1,
+ format_as_map/1, format_as_maps/1]).
-export([init/1, handle_call/2, handle_event/2, handle_info/2,
terminate/2, code_change/3]).
@@ -30,7 +31,9 @@
-define(SERVER, ?MODULE).
-
+-define(FILE_DESCRIPTOR_RESOURCE, <<"file descriptors">>).
+-define(MEMORY_RESOURCE, <<"memory">>).
+-define(DISK_SPACE_RESOURCE, <<"disk space">>).
%%----------------------------------------------------------------------------
@@ -97,12 +100,46 @@ get_alarms() -> gen_event:call(?SERVER, ?MODULE, get_alarms, infinity).
-spec get_alarms(timeout()) -> [{alarm(), []}].
get_alarms(Timeout) -> gen_event:call(?SERVER, ?MODULE, get_alarms, Timeout).
--spec on_node_up(node()) -> 'ok'.
+-spec format_as_map(alarm()) -> #{binary() => term()}.
+format_as_map(file_descriptor_limit) ->
+ #{
+ <<"resource">> => ?FILE_DESCRIPTOR_RESOURCE,
+ <<"node">> => node()
+ };
+format_as_map({resource_limit, disk, Node}) ->
+ #{
+ <<"resource">> => ?DISK_SPACE_RESOURCE,
+ <<"node">> => Node
+ };
+format_as_map({resource_limit, memory, Node}) ->
+ #{
+ <<"resource">> => ?MEMORY_RESOURCE,
+ <<"node">> => Node
+ };
+format_as_map({resource_limit, Limit, Node}) ->
+ #{
+ <<"resource">> => rabbit_data_coercion:to_binary(Limit),
+ <<"node">> => Node
+ }.
+
+-spec format_as_maps([{alarm(), []}]) -> [#{any() => term()}].
+format_as_maps(Alarms) when is_list(Alarms) ->
+ %% get_alarms/0 returns
+ %%
+ %% [
+ %% {file_descriptor_limit, []},
+ %% {{resource_limit, disk, rabbit@warp10}, []},
+ %% {{resource_limit, memory, rabbit@warp10}, []}
+ %% ]
+ lists:map(fun({Resource, _}) -> format_as_map(Resource);
+ (Resource) -> format_as_map(Resource)
+ end, Alarms).
+
+-spec on_node_up(node()) -> 'ok'.
on_node_up(Node) -> gen_event:notify(?SERVER, {node_up, Node}).
-spec on_node_down(node()) -> 'ok'.
-
on_node_down(Node) -> gen_event:notify(?SERVER, {node_down, Node}).
remote_conserve_resources(Pid, Source, {true, _, _}) ->