diff options
| author | Michael Klishin <michael@clojurewerkz.org> | 2020-10-01 22:16:40 +0300 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2020-10-05 17:12:28 +0300 |
| commit | 32d7c7d702761158a343f0834c7bd89dbe5ac732 (patch) | |
| tree | ed3ba9d14a511a20956b892a96fa741ee48bf3b3 /src | |
| parent | 8ea09f53e6eb13203fc9c4e13a60670cdccae575 (diff) | |
| download | rabbitmq-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.erl | 45 |
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, _, _}) -> |
