diff options
| author | Michael Klishin <michael@clojurewerkz.org> | 2021-08-24 04:41:04 +0300 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2021-08-24 04:41:04 +0300 |
| commit | 6f97707dacf95d53f27ebe73c740e81cde0a5082 (patch) | |
| tree | 68506ebb7b1280c3035ae82933593e2db74c66d1 | |
| parent | 6bf4a99f58dcd22107da1a232ab98e86249b2066 (diff) | |
| download | rabbitmq-server-git-6f97707dacf95d53f27ebe73c740e81cde0a5082.tar.gz | |
Definition import: correctly import vhost metadata
| -rw-r--r-- | deps/rabbit/src/rabbit_definitions.erl | 12 | ||||
| -rw-r--r-- | deps/rabbit/test/definition_import_SUITE.erl | 28 |
2 files changed, 34 insertions, 6 deletions
diff --git a/deps/rabbit/src/rabbit_definitions.erl b/deps/rabbit/src/rabbit_definitions.erl index 2edc233d74..8faf2f808a 100644 --- a/deps/rabbit/src/rabbit_definitions.erl +++ b/deps/rabbit/src/rabbit_definitions.erl @@ -481,11 +481,13 @@ add_policy(VHost, Param, Username) -> -spec add_vhost(map(), rabbit_types:username()) -> ok. add_vhost(VHost, ActingUser) -> - VHostName = maps:get(name, VHost, undefined), - VHostTrace = maps:get(tracing, VHost, undefined), - VHostDefinition = maps:get(definition, VHost, undefined), - VHostTags = maps:get(tags, VHost, undefined), - rabbit_vhost:put_vhost(VHostName, VHostDefinition, VHostTags, VHostTrace, ActingUser). + Name = maps:get(name, VHost, undefined), + IsTracingEnabled = maps:get(tracing, VHost, undefined), + Metadata = rabbit_data_coercion:atomize_keys(maps:get(metadata, VHost, #{})), + Description = maps:get(description, VHost, maps:get(description, Metadata, <<"">>)), + Tags = maps:get(tags, VHost, maps:get(tags, Metadata, [])), + + rabbit_vhost:put_vhost(Name, Description, Tags, IsTracingEnabled, ActingUser). add_permission(Permission, ActingUser) -> rabbit_auth_backend_internal:set_permissions(maps:get(user, Permission, undefined), diff --git a/deps/rabbit/test/definition_import_SUITE.erl b/deps/rabbit/test/definition_import_SUITE.erl index eff4ba1707..216402ef1f 100644 --- a/deps/rabbit/test/definition_import_SUITE.erl +++ b/deps/rabbit/test/definition_import_SUITE.erl @@ -45,7 +45,8 @@ groups() -> import_case12, import_case13, import_case14, - import_case15 + import_case15, + import_case16 ]}, {boot_time_import_using_classic_source, [], [ @@ -206,6 +207,28 @@ import_case13(Config) -> import_case14(Config) -> import_file_case(Config, "case14"). %% contains a user with tags as a list import_case15(Config) -> import_file_case(Config, "case15"). +%% contains a virtual host with tags +import_case16(Config) -> + case rabbit_ct_broker_helpers:enable_feature_flag(Config, virtual_host_metadata) of + ok -> + import_file_case(Config, "case16"), + VHost = <<"tagged">>, + VHostIsImported = + fun () -> + case vhost_lookup(Config, VHost) of + {error, {no_such_vhosts, _}} -> false; + _ -> true + end + end, + rabbit_ct_helpers:await_condition(VHostIsImported, 20000), + VHostRec = vhost_lookup(Config, VHost), + ?assertEqual(<<"A case16 description">>, vhost:get_description(VHostRec)), + ?assertEqual([multi_dc_replication,ab,cde], vhost:get_tags(VHostRec)), + + ok; + Skip -> + Skip + end. export_import_round_trip_case1(Config) -> %% case 6 has runtime parameters that do not depend on any plugins @@ -338,3 +361,6 @@ run_invalid_import_case(Path) -> queue_lookup(Config, VHost, Name) -> rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_amqqueue, lookup, [rabbit_misc:r(VHost, queue, Name)]). + +vhost_lookup(Config, VHost) -> + rabbit_ct_broker_helpers:rpc(Config, 0, rabbit_vhost, lookup, [VHost]). |
