Skip to content

Commit 824d028

Browse files
Merge pull request #10418 from rabbitmq/mergify/bp/v3.12.x/pr-10417
An alternative to #10415, closes #10330 (backport #10417)
2 parents 0e69c41 + 73188f4 commit 824d028

File tree

8 files changed

+46
-18
lines changed

8 files changed

+46
-18
lines changed

deps/rabbitmq_management/app.bzl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ def all_beam_files(name = "all_beam_files"):
2929
"src/rabbit_mgmt_hsts.erl",
3030
"src/rabbit_mgmt_load_definitions.erl",
3131
"src/rabbit_mgmt_login.erl",
32+
"src/rabbit_mgmt_nodes.erl",
3233
"src/rabbit_mgmt_oauth_bootstrap.erl",
3334
"src/rabbit_mgmt_reset_handler.erl",
3435
"src/rabbit_mgmt_stats.erl",
@@ -159,6 +160,7 @@ def all_test_beam_files(name = "all_test_beam_files"):
159160
"src/rabbit_mgmt_hsts.erl",
160161
"src/rabbit_mgmt_load_definitions.erl",
161162
"src/rabbit_mgmt_login.erl",
163+
"src/rabbit_mgmt_nodes.erl",
162164
"src/rabbit_mgmt_oauth_bootstrap.erl",
163165
"src/rabbit_mgmt_reset_handler.erl",
164166
"src/rabbit_mgmt_stats.erl",
@@ -378,6 +380,7 @@ def all_srcs(name = "all_srcs"):
378380
"src/rabbit_mgmt_hsts.erl",
379381
"src/rabbit_mgmt_load_definitions.erl",
380382
"src/rabbit_mgmt_login.erl",
383+
"src/rabbit_mgmt_nodes.erl",
381384
"src/rabbit_mgmt_oauth_bootstrap.erl",
382385
"src/rabbit_mgmt_reset_handler.erl",
383386
"src/rabbit_mgmt_stats.erl",

deps/rabbitmq_management/priv/www/api/index.html

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,17 @@ <h2>Reference</h2>
216216
<td></td>
217217
<td class="path">/api/nodes/<i>name</i></td>
218218
<td>
219-
An individual node in the RabbitMQ cluster. Add
220-
"?memory=true" to get memory statistics, and "?binary=true"
221-
to get a breakdown of binary memory use (may be expensive if
222-
there are many small binaries in the system).
219+
Returns information about an individual node in the RabbitMQ cluster.
220+
</td>
221+
</tr>
222+
<tr>
223+
<td>X</td>
224+
<td></td>
225+
<td></td>
226+
<td></td>
227+
<td class="path">/api/nodes/<i>name</i>/memory</td>
228+
<td>
229+
Returns a <a href="https://rabbitmq.com/memory-use.html">memory usage breakdown</a> of an individual node in the RabbitMQ cluster.
223230
</td>
224231
</tr>
225232
<tr>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
%% This Source Code Form is subject to the terms of the Mozilla Public
2+
%% License, v. 2.0. If a copy of the MPL was not distributed with this
3+
%% file, You can obtain one at https://mozilla.org/MPL/2.0/.
4+
%%
5+
%% Copyright (c) 2007-2024 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. All rights reserved.
6+
%%
7+
8+
-module(rabbit_mgmt_nodes).
9+
10+
-export([
11+
node_name_from_req/1,
12+
node_exists/1
13+
]).
14+
15+
%%
16+
%% API
17+
%%
18+
19+
node_name_from_req(ReqData) ->
20+
list_to_atom(binary_to_list(rabbit_mgmt_util:id(node, ReqData))).
21+
22+
%% To be used in resource_exists/2
23+
node_exists(ReqData) ->
24+
Node = node_name_from_req(ReqData),
25+
AllNodes = rabbit_nodes:list_members(),
26+
lists:member(Node, AllNodes).

deps/rabbitmq_management/src/rabbit_mgmt_wm_node.erl

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,7 @@ content_types_provided(ReqData, Context) ->
2626
{rabbit_mgmt_util:responder_map(to_json), ReqData, Context}.
2727

2828
resource_exists(ReqData, Context) ->
29-
{case node0(ReqData) of
30-
not_found -> false;
31-
_ -> true
32-
end, ReqData, Context}.
29+
{rabbit_mgmt_nodes:node_exists(ReqData), ReqData, Context}.
3330

3431
to_json(ReqData, Context) ->
3532
rabbit_mgmt_util:reply(node0(ReqData), ReqData, Context).

deps/rabbitmq_management/src/rabbit_mgmt_wm_node_memory.erl

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ content_types_provided(ReqData, Context) ->
2626
{rabbit_mgmt_util:responder_map(to_json), ReqData, Context}.
2727

2828
resource_exists(ReqData, Context) ->
29-
{node_exists(ReqData, get_node(ReqData)), ReqData, Context}.
29+
{rabbit_mgmt_nodes:node_exists(ReqData), ReqData, Context}.
3030

3131
to_json(ReqData, {Mode, Context}) ->
3232
rabbit_mgmt_util:reply(augment(Mode, ReqData), ReqData, {Mode, Context}).
@@ -39,16 +39,9 @@ is_authorized(ReqData, {Mode, Context}) ->
3939
get_node(ReqData) ->
4040
list_to_atom(binary_to_list(rabbit_mgmt_util:id(node, ReqData))).
4141

42-
node_exists(ReqData, Node) ->
43-
case [N || N <- rabbit_mgmt_wm_nodes:all_nodes(ReqData),
44-
proplists:get_value(name, N) == Node] of
45-
[] -> false;
46-
[_] -> true
47-
end.
48-
4942
augment(Mode, ReqData) ->
5043
Node = get_node(ReqData),
51-
case node_exists(ReqData, Node) of
44+
case rabbit_mgmt_nodes:node_exists(ReqData) of
5245
false ->
5346
not_found;
5447
true ->

deps/rabbitmq_management/src/rabbit_mgmt_wm_node_memory_ets.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ content_types_provided(ReqData, Context) ->
2626
{rabbit_mgmt_util:responder_map(to_json), ReqData, Context}.
2727

2828
resource_exists(ReqData, Context) ->
29-
{node_exists(ReqData, get_node(ReqData)), ReqData, Context}.
29+
{rabbit_mgmt_nodes:node_exists(ReqData), ReqData, Context}.
3030

3131
to_json(ReqData, {Mode, Context}) ->
3232
rabbit_mgmt_util:reply(augment(Mode, ReqData), ReqData, {Mode, Context}).

deps/rabbitmq_management/test/rabbit_mgmt_http_SUITE.erl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ nodes_test(Config) ->
322322
assert_list([DiscNode], http_get(Config, "/nodes")),
323323
assert_list([DiscNode], http_get(Config, "/nodes", "monitor", "monitor", ?OK)),
324324
http_get(Config, "/nodes", "user", "user", ?NOT_AUTHORISED),
325+
http_get(Config, "/nodes/does-not-exist", ?NOT_FOUND),
325326
[Node] = http_get(Config, "/nodes"),
326327
Path = "/nodes/" ++ binary_to_list(maps:get(name, Node)),
327328
assert_item(DiscNode, http_get(Config, Path, ?OK)),

moduleindex.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -848,6 +848,7 @@ rabbitmq_management:
848848
- rabbit_mgmt_hsts
849849
- rabbit_mgmt_load_definitions
850850
- rabbit_mgmt_login
851+
- rabbit_mgmt_nodes
851852
- rabbit_mgmt_oauth_bootstrap
852853
- rabbit_mgmt_reset_handler
853854
- rabbit_mgmt_stats

0 commit comments

Comments
 (0)