Skip to content

Commit e6f28cb

Browse files
SimonUngemergify[bot]
authored andcommitted
Node tags local to broker, add to /api/overview output and ctl status command
(cherry picked from commit 3d35416) # Conflicts: # deps/rabbitmq_management/test/rabbit_mgmt_http_SUITE.erl
1 parent 5b27204 commit e6f28cb

File tree

5 files changed

+59
-6
lines changed

5 files changed

+59
-6
lines changed

deps/rabbit/priv/schema/rabbit.schema

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2702,6 +2702,20 @@ fun(Conf) ->
27022702
end
27032703
end}.
27042704

2705+
{mapping, "node_tags.$tag", "rabbit.node_tags", [
2706+
{datatype, [binary]}
2707+
]}.
2708+
2709+
{translation, "rabbit.node_tags",
2710+
fun(Conf) ->
2711+
case cuttlefish:conf_get("node_tags", Conf, undefined) of
2712+
none -> [];
2713+
_ ->
2714+
Settings = cuttlefish_variable:filter_by_prefix("node_tags", Conf),
2715+
[ {list_to_binary(K), V} || {[_, K], V} <- Settings]
2716+
end
2717+
end}.
2718+
27052719
% ===============================
27062720
% Validators
27072721
% ===============================

deps/rabbit/src/rabbit.erl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,7 @@ status() ->
741741
{erlang_version, erlang:system_info(system_version)},
742742
{memory, rabbit_vm:memory()},
743743
{alarms, alarms()},
744+
{tags, tags()},
744745
{is_under_maintenance, rabbit_maintenance:is_being_drained_local_read(node())},
745746
{listeners, listeners()},
746747
{vm_memory_calculation_strategy, vm_memory_monitor:get_memory_calculation_strategy()}],
@@ -800,6 +801,9 @@ alarms() ->
800801
%% [{{resource_limit,memory,rabbit@mercurio},[]}]
801802
[{resource_limit, Limit, Node} || {{resource_limit, Limit, Node}, _} <- Alarms, Node =:= N].
802803

804+
tags() ->
805+
application:get_env(rabbit, node_tags, []).
806+
803807
listeners() ->
804808
Listeners = try
805809
rabbit_networking:active_listeners()

deps/rabbitmq_cli/lib/rabbitmq/cli/ctl/commands/status_command.ex

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ defmodule RabbitMQ.CLI.Ctl.Commands.StatusCommand do
6969

7070
def output(result, %{node: node_name, unit: unit}) when is_list(result) do
7171
m = result_map(result)
72-
7372
product_name_section =
7473
case m do
7574
%{:product_name => product_name} when product_name != "" ->
@@ -142,6 +141,15 @@ defmodule RabbitMQ.CLI.Ctl.Commands.StatusCommand do
142141
xs -> alarm_lines(xs, node_name)
143142
end
144143

144+
tags_section =
145+
[
146+
"\n#{bright("Tags")}\n"
147+
] ++
148+
case m[:tags] do
149+
[] -> ["(none)"]
150+
xs -> tag_lines(xs)
151+
end
152+
145153
breakdown = compute_relative_values(m[:memory])
146154
memory_calculation_strategy = to_atom(m[:vm_memory_calculation_strategy])
147155
total_memory = get_in(m[:memory], [:total, memory_calculation_strategy])
@@ -198,6 +206,7 @@ defmodule RabbitMQ.CLI.Ctl.Commands.StatusCommand do
198206
config_section ++
199207
log_section ++
200208
alarms_section ++
209+
tags_section ++
201210
memory_section ++
202211
file_descriptors ++ disk_space_section ++ totals_section ++ listeners_section
203212

@@ -265,6 +274,7 @@ defmodule RabbitMQ.CLI.Ctl.Commands.StatusCommand do
265274
disk_free: Keyword.get(result, :disk_free),
266275
file_descriptors: Enum.into(Keyword.get(result, :file_descriptors), %{}),
267276
alarms: Keyword.get(result, :alarms),
277+
tags: Keyword.get(result, :tags),
268278
listeners: listener_maps(Keyword.get(result, :listeners, [])),
269279
memory: Keyword.get(result, :memory) |> Enum.into(%{}),
270280
data_directory: Keyword.get(result, :data_directory) |> to_string,
@@ -285,6 +295,12 @@ defmodule RabbitMQ.CLI.Ctl.Commands.StatusCommand do
285295
end
286296
end
287297

298+
defp tag_lines(mapping) do
299+
Enum.map(mapping, fn {key, value} ->
300+
"#{key}: #{value}"
301+
end)
302+
end
303+
288304
def space_as_iu_or_unknown(value, unit) do
289305
case value do
290306
:NaN ->

deps/rabbitmq_management/src/rabbit_mgmt_wm_overview.erl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ to_json(ReqData, Context = #context{user = User = #user{tags = Tags}}) ->
4848
{rabbitmq_version, list_to_binary(rabbit:base_product_version())},
4949
{cluster_name, rabbit_nodes:cluster_name()},
5050
{cluster_tags, cluster_tags()},
51+
{node_tags, node_tags()},
5152
{erlang_version, erlang_version()},
5253
{erlang_full_version, erlang_full_version()},
5354
{release_series_support_status, rabbit_release_series:readable_support_status()},
@@ -190,3 +191,6 @@ cluster_tags() ->
190191
[];
191192
Tags -> Tags
192193
end.
194+
195+
node_tags() ->
196+
application:get_env(rabbit, node_tags, []).

deps/rabbitmq_management/test/rabbit_mgmt_http_SUITE.erl

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,16 @@ all_tests() -> [
202202
qq_status_test,
203203
list_deprecated_features_test,
204204
list_used_deprecated_features_test,
205+
<<<<<<< HEAD
205206
cluster_tags_test
207+
=======
208+
connections_amqpl,
209+
connections_amqp,
210+
amqp_sessions,
211+
amqpl_sessions,
212+
enable_plugin_amqp,
213+
cluster_and_node_tags_test
214+
>>>>>>> 3d35416635 (Node tags local to broker, add to /api/overview output and ctl status command)
206215
].
207216

208217
%% -------------------------------------------------------------------
@@ -283,8 +292,10 @@ init_per_testcase(Testcase = disabled_qq_replica_opers_test, Config) ->
283292
rabbit_ct_broker_helpers:rpc_all(Config,
284293
application, set_env, [rabbitmq_management, restrictions, Restrictions]),
285294
rabbit_ct_helpers:testcase_started(Config, Testcase);
286-
init_per_testcase(Testcase = cluster_tags_test, Config) ->
295+
init_per_testcase(Testcase = cluster_and_node_tags_test, Config) ->
287296
Tags = [{<<"az">>, <<"us-east-3">>}, {<<"region">>,<<"us-east">>}, {<<"environment">>,<<"production">>}],
297+
rpc(Config,
298+
application, set_env, [rabbit, node_tags, Tags]),
288299
rpc(
289300
Config, rabbit_runtime_parameters, set_global,
290301
[cluster_tags, Tags, none]),
@@ -355,7 +366,9 @@ end_per_testcase0(disabled_operator_policy_test, Config) ->
355366
end_per_testcase0(disabled_qq_replica_opers_test, Config) ->
356367
rpc(Config, application, unset_env, [rabbitmq_management, restrictions]),
357368
Config;
358-
end_per_testcase0(cluster_tags_test, Config) ->
369+
end_per_testcase0(cluster_and_node_tags_test, Config) ->
370+
rpc(
371+
Config, application, unset_env, [rabbit, node_tags]),
359372
rpc(
360373
Config, rabbit_runtime_parameters, clear_global,
361374
[cluster_tags, none]),
@@ -3948,12 +3961,14 @@ list_used_deprecated_features_test(Config) ->
39483961
?assertEqual(list_to_binary(Desc), maps:get(desc, Feature)),
39493962
?assertEqual(list_to_binary(DocUrl), maps:get(doc_url, Feature)).
39503963

3951-
cluster_tags_test(Config) ->
3964+
cluster_and_node_tags_test(Config) ->
39523965
Overview = http_get(Config, "/overview"),
3953-
Tags = maps:get(cluster_tags, Overview),
3966+
ClusterTags = maps:get(cluster_tags, Overview),
3967+
NodeTags = maps:get(node_tags, Overview),
39543968
ExpectedTags = #{az => <<"us-east-3">>,environment => <<"production">>,
39553969
region => <<"us-east">>},
3956-
?assertEqual(ExpectedTags, Tags),
3970+
?assertEqual(ExpectedTags, ClusterTags),
3971+
?assertEqual(ExpectedTags, NodeTags),
39573972
passed.
39583973

39593974
%% -------------------------------------------------------------------

0 commit comments

Comments
 (0)