Skip to content

Commit

Permalink
Merge pull request #10418 from rabbitmq/mergify/bp/v3.12.x/pr-10417
Browse files Browse the repository at this point in the history
An alternative to #10415, closes #10330 (backport #10417)
  • Loading branch information
michaelklishin authored Jan 26, 2024
2 parents 0e69c41 + 73188f4 commit 824d028
Show file tree
Hide file tree
Showing 8 changed files with 46 additions and 18 deletions.
3 changes: 3 additions & 0 deletions deps/rabbitmq_management/app.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ def all_beam_files(name = "all_beam_files"):
"src/rabbit_mgmt_hsts.erl",
"src/rabbit_mgmt_load_definitions.erl",
"src/rabbit_mgmt_login.erl",
"src/rabbit_mgmt_nodes.erl",
"src/rabbit_mgmt_oauth_bootstrap.erl",
"src/rabbit_mgmt_reset_handler.erl",
"src/rabbit_mgmt_stats.erl",
Expand Down Expand Up @@ -159,6 +160,7 @@ def all_test_beam_files(name = "all_test_beam_files"):
"src/rabbit_mgmt_hsts.erl",
"src/rabbit_mgmt_load_definitions.erl",
"src/rabbit_mgmt_login.erl",
"src/rabbit_mgmt_nodes.erl",
"src/rabbit_mgmt_oauth_bootstrap.erl",
"src/rabbit_mgmt_reset_handler.erl",
"src/rabbit_mgmt_stats.erl",
Expand Down Expand Up @@ -378,6 +380,7 @@ def all_srcs(name = "all_srcs"):
"src/rabbit_mgmt_hsts.erl",
"src/rabbit_mgmt_load_definitions.erl",
"src/rabbit_mgmt_login.erl",
"src/rabbit_mgmt_nodes.erl",
"src/rabbit_mgmt_oauth_bootstrap.erl",
"src/rabbit_mgmt_reset_handler.erl",
"src/rabbit_mgmt_stats.erl",
Expand Down
15 changes: 11 additions & 4 deletions deps/rabbitmq_management/priv/www/api/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -216,10 +216,17 @@ <h2>Reference</h2>
<td></td>
<td class="path">/api/nodes/<i>name</i></td>
<td>
An individual node in the RabbitMQ cluster. Add
"?memory=true" to get memory statistics, and "?binary=true"
to get a breakdown of binary memory use (may be expensive if
there are many small binaries in the system).
Returns information about an individual node in the RabbitMQ cluster.
</td>
</tr>
<tr>
<td>X</td>
<td></td>
<td></td>
<td></td>
<td class="path">/api/nodes/<i>name</i>/memory</td>
<td>
Returns a <a href="https://rabbitmq.com/memory-use.html">memory usage breakdown</a> of an individual node in the RabbitMQ cluster.
</td>
</tr>
<tr>
Expand Down
26 changes: 26 additions & 0 deletions deps/rabbitmq_management/src/rabbit_mgmt_nodes.erl
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
%% This Source Code Form is subject to the terms of the Mozilla Public
%% License, v. 2.0. If a copy of the MPL was not distributed with this
%% file, You can obtain one at https://mozilla.org/MPL/2.0/.
%%
%% Copyright (c) 2007-2024 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. All rights reserved.
%%

-module(rabbit_mgmt_nodes).

-export([
node_name_from_req/1,
node_exists/1
]).

%%
%% API
%%

node_name_from_req(ReqData) ->
list_to_atom(binary_to_list(rabbit_mgmt_util:id(node, ReqData))).

%% To be used in resource_exists/2
node_exists(ReqData) ->
Node = node_name_from_req(ReqData),
AllNodes = rabbit_nodes:list_members(),
lists:member(Node, AllNodes).
5 changes: 1 addition & 4 deletions deps/rabbitmq_management/src/rabbit_mgmt_wm_node.erl
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,7 @@ content_types_provided(ReqData, Context) ->
{rabbit_mgmt_util:responder_map(to_json), ReqData, Context}.

resource_exists(ReqData, Context) ->
{case node0(ReqData) of
not_found -> false;
_ -> true
end, ReqData, Context}.
{rabbit_mgmt_nodes:node_exists(ReqData), ReqData, Context}.

to_json(ReqData, Context) ->
rabbit_mgmt_util:reply(node0(ReqData), ReqData, Context).
Expand Down
11 changes: 2 additions & 9 deletions deps/rabbitmq_management/src/rabbit_mgmt_wm_node_memory.erl
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ content_types_provided(ReqData, Context) ->
{rabbit_mgmt_util:responder_map(to_json), ReqData, Context}.

resource_exists(ReqData, Context) ->
{node_exists(ReqData, get_node(ReqData)), ReqData, Context}.
{rabbit_mgmt_nodes:node_exists(ReqData), ReqData, Context}.

to_json(ReqData, {Mode, Context}) ->
rabbit_mgmt_util:reply(augment(Mode, ReqData), ReqData, {Mode, Context}).
Expand All @@ -39,16 +39,9 @@ is_authorized(ReqData, {Mode, Context}) ->
get_node(ReqData) ->
list_to_atom(binary_to_list(rabbit_mgmt_util:id(node, ReqData))).

node_exists(ReqData, Node) ->
case [N || N <- rabbit_mgmt_wm_nodes:all_nodes(ReqData),
proplists:get_value(name, N) == Node] of
[] -> false;
[_] -> true
end.

augment(Mode, ReqData) ->
Node = get_node(ReqData),
case node_exists(ReqData, Node) of
case rabbit_mgmt_nodes:node_exists(ReqData) of
false ->
not_found;
true ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ content_types_provided(ReqData, Context) ->
{rabbit_mgmt_util:responder_map(to_json), ReqData, Context}.

resource_exists(ReqData, Context) ->
{node_exists(ReqData, get_node(ReqData)), ReqData, Context}.
{rabbit_mgmt_nodes:node_exists(ReqData), ReqData, Context}.

to_json(ReqData, {Mode, Context}) ->
rabbit_mgmt_util:reply(augment(Mode, ReqData), ReqData, {Mode, Context}).
Expand Down
1 change: 1 addition & 0 deletions deps/rabbitmq_management/test/rabbit_mgmt_http_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,7 @@ nodes_test(Config) ->
assert_list([DiscNode], http_get(Config, "/nodes")),
assert_list([DiscNode], http_get(Config, "/nodes", "monitor", "monitor", ?OK)),
http_get(Config, "/nodes", "user", "user", ?NOT_AUTHORISED),
http_get(Config, "/nodes/does-not-exist", ?NOT_FOUND),
[Node] = http_get(Config, "/nodes"),
Path = "/nodes/" ++ binary_to_list(maps:get(name, Node)),
assert_item(DiscNode, http_get(Config, Path, ?OK)),
Expand Down
1 change: 1 addition & 0 deletions moduleindex.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -848,6 +848,7 @@ rabbitmq_management:
- rabbit_mgmt_hsts
- rabbit_mgmt_load_definitions
- rabbit_mgmt_login
- rabbit_mgmt_nodes
- rabbit_mgmt_oauth_bootstrap
- rabbit_mgmt_reset_handler
- rabbit_mgmt_stats
Expand Down

0 comments on commit 824d028

Please sign in to comment.