Skip to content

Commit 859fd03

Browse files
Merge pull request #12702 from rabbitmq/su_aws/node_tags
Make it possible to set some node-specific metadata using tags
2 parents 38bc831 + 94c8f01 commit 859fd03

File tree

5 files changed

+53
-7
lines changed

5 files changed

+53
-7
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: 19 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,17 @@ defmodule RabbitMQ.CLI.Ctl.Commands.StatusCommand do
142141
xs -> alarm_lines(xs, node_name)
143142
end
144143

144+
IO.inspect(m[:tags])
145+
tags_section =
146+
[
147+
"\n#{bright("Tags")}\n"
148+
] ++
149+
case m[:tags] do
150+
nil -> ["(none)"]
151+
[] -> ["(none)"]
152+
xs -> tag_lines(xs)
153+
end
154+
145155
breakdown = compute_relative_values(m[:memory])
146156
memory_calculation_strategy = to_atom(m[:vm_memory_calculation_strategy])
147157
total_memory = get_in(m[:memory], [:total, memory_calculation_strategy])
@@ -198,6 +208,7 @@ defmodule RabbitMQ.CLI.Ctl.Commands.StatusCommand do
198208
config_section ++
199209
log_section ++
200210
alarms_section ++
211+
tags_section ++
201212
memory_section ++
202213
file_descriptors ++ disk_space_section ++ totals_section ++ listeners_section
203214

@@ -265,6 +276,7 @@ defmodule RabbitMQ.CLI.Ctl.Commands.StatusCommand do
265276
disk_free: Keyword.get(result, :disk_free),
266277
file_descriptors: Enum.into(Keyword.get(result, :file_descriptors), %{}),
267278
alarms: Keyword.get(result, :alarms),
279+
tags: Keyword.get(result, :tags, []),
268280
listeners: listener_maps(Keyword.get(result, :listeners, [])),
269281
memory: Keyword.get(result, :memory) |> Enum.into(%{}),
270282
data_directory: Keyword.get(result, :data_directory) |> to_string,
@@ -285,6 +297,12 @@ defmodule RabbitMQ.CLI.Ctl.Commands.StatusCommand do
285297
end
286298
end
287299

300+
defp tag_lines(mapping) do
301+
Enum.map(mapping, fn {key, value} ->
302+
"#{key}: #{value}"
303+
end)
304+
end
305+
288306
def space_as_iu_or_unknown(value, unit) do
289307
case value do
290308
: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: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ all_tests() -> [
205205
amqp_sessions,
206206
amqpl_sessions,
207207
enable_plugin_amqp,
208-
cluster_tags_test
208+
cluster_and_node_tags_test
209209
].
210210

211211
%% -------------------------------------------------------------------
@@ -286,8 +286,10 @@ init_per_testcase(Testcase = disabled_qq_replica_opers_test, Config) ->
286286
rabbit_ct_broker_helpers:rpc_all(Config,
287287
application, set_env, [rabbitmq_management, restrictions, Restrictions]),
288288
rabbit_ct_helpers:testcase_started(Config, Testcase);
289-
init_per_testcase(Testcase = cluster_tags_test, Config) ->
289+
init_per_testcase(Testcase = cluster_and_node_tags_test, Config) ->
290290
Tags = [{<<"az">>, <<"us-east-3">>}, {<<"region">>,<<"us-east">>}, {<<"environment">>,<<"production">>}],
291+
rpc(Config,
292+
application, set_env, [rabbit, node_tags, Tags]),
291293
rpc(
292294
Config, rabbit_runtime_parameters, set_global,
293295
[cluster_tags, Tags, none]),
@@ -358,7 +360,9 @@ end_per_testcase0(disabled_operator_policy_test, Config) ->
358360
end_per_testcase0(disabled_qq_replica_opers_test, Config) ->
359361
rpc(Config, application, unset_env, [rabbitmq_management, restrictions]),
360362
Config;
361-
end_per_testcase0(cluster_tags_test, Config) ->
363+
end_per_testcase0(cluster_and_node_tags_test, Config) ->
364+
rpc(
365+
Config, application, unset_env, [rabbit, node_tags]),
362366
rpc(
363367
Config, rabbit_runtime_parameters, clear_global,
364368
[cluster_tags, none]),
@@ -4095,12 +4099,14 @@ list_used_deprecated_features_test(Config) ->
40954099
?assertEqual(list_to_binary(Desc), maps:get(desc, Feature)),
40964100
?assertEqual(list_to_binary(DocUrl), maps:get(doc_url, Feature)).
40974101

4098-
cluster_tags_test(Config) ->
4102+
cluster_and_node_tags_test(Config) ->
40994103
Overview = http_get(Config, "/overview"),
4100-
Tags = maps:get(cluster_tags, Overview),
4104+
ClusterTags = maps:get(cluster_tags, Overview),
4105+
NodeTags = maps:get(node_tags, Overview),
41014106
ExpectedTags = #{az => <<"us-east-3">>,environment => <<"production">>,
41024107
region => <<"us-east">>},
4103-
?assertEqual(ExpectedTags, Tags),
4108+
?assertEqual(ExpectedTags, ClusterTags),
4109+
?assertEqual(ExpectedTags, NodeTags),
41044110
passed.
41054111

41064112
%% -------------------------------------------------------------------

0 commit comments

Comments
 (0)