Skip to content

Commit 6f97707

Browse files
Definition import: correctly import vhost metadata
1 parent 6bf4a99 commit 6f97707

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

deps/rabbit/src/rabbit_definitions.erl

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -481,11 +481,13 @@ add_policy(VHost, Param, Username) ->
481481
-spec add_vhost(map(), rabbit_types:username()) -> ok.
482482

483483
add_vhost(VHost, ActingUser) ->
484-
VHostName = maps:get(name, VHost, undefined),
485-
VHostTrace = maps:get(tracing, VHost, undefined),
486-
VHostDefinition = maps:get(definition, VHost, undefined),
487-
VHostTags = maps:get(tags, VHost, undefined),
488-
rabbit_vhost:put_vhost(VHostName, VHostDefinition, VHostTags, VHostTrace, ActingUser).
484+
Name = maps:get(name, VHost, undefined),
485+
IsTracingEnabled = maps:get(tracing, VHost, undefined),
486+
Metadata = rabbit_data_coercion:atomize_keys(maps:get(metadata, VHost, #{})),
487+
Description = maps:get(description, VHost, maps:get(description, Metadata, <<"">>)),
488+
Tags = maps:get(tags, VHost, maps:get(tags, Metadata, [])),
489+
490+
rabbit_vhost:put_vhost(Name, Description, Tags, IsTracingEnabled, ActingUser).
489491

490492
add_permission(Permission, ActingUser) ->
491493
rabbit_auth_backend_internal:set_permissions(maps:get(user, Permission, undefined),

deps/rabbit/test/definition_import_SUITE.erl

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ groups() ->
4545
import_case12,
4646
import_case13,
4747
import_case14,
48-
import_case15
48+
import_case15,
49+
import_case16
4950
]},
5051

5152
{boot_time_import_using_classic_source, [], [
@@ -206,6 +207,28 @@ import_case13(Config) ->
206207
import_case14(Config) -> import_file_case(Config, "case14").
207208
%% contains a user with tags as a list
208209
import_case15(Config) -> import_file_case(Config, "case15").
210+
%% contains a virtual host with tags
211+
import_case16(Config) ->
212+
case rabbit_ct_broker_helpers:enable_feature_flag(Config, virtual_host_metadata) of
213+
ok ->
214+
import_file_case(Config, "case16"),
215+
VHost = <<"tagged">>,
216+
VHostIsImported =
217+
fun () ->
218+
case vhost_lookup(Config, VHost) of
219+
{error, {no_such_vhosts, _}} -> false;
220+
_ -> true
221+
end
222+
end,
223+
rabbit_ct_helpers:await_condition(VHostIsImported, 20000),
224+
VHostRec = vhost_lookup(Config, VHost),
225+
?assertEqual(<<"A case16 description">>, vhost:get_description(VHostRec)),
226+
?assertEqual([multi_dc_replication,ab,cde], vhost:get_tags(VHostRec)),
227+
228+
ok;
229+
Skip ->
230+
Skip
231+
end.
209232

210233
export_import_round_trip_case1(Config) ->
211234
%% case 6 has runtime parameters that do not depend on any plugins
@@ -338,3 +361,6 @@ run_invalid_import_case(Path) ->
338361

339362
queue_lookup(Config, VHost, Name) ->
340363
rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_amqqueue, lookup, [rabbit_misc:r(VHost, queue, Name)]).
364+
365+
vhost_lookup(Config, VHost) ->
366+
rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_vhost, lookup, [VHost]).

0 commit comments

Comments
 (0)