summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_definitions.erl12
-rw-r--r--test/definition_import_SUITE.erl5
-rw-r--r--test/definition_import_SUITE_data/case11.json24
3 files changed, 40 insertions, 1 deletions
diff --git a/src/rabbit_definitions.erl b/src/rabbit_definitions.erl
index 260284d19c..e4ee369bc9 100644
--- a/src/rabbit_definitions.erl
+++ b/src/rabbit_definitions.erl
@@ -397,6 +397,11 @@ add_queue(Queue, ActingUser) ->
add_queue(VHost, Queue, ActingUser) ->
add_queue_int(Queue, rv(VHost, queue, Queue), ActingUser).
+add_queue_int(_Queue, R = #resource{kind = queue,
+ name = <<"amq.", _/binary>>}, ActingUser) ->
+ Name = R#resource.name,
+ rabbit_log:warning("Skipping import of a queue whose name begins with 'amq.', "
+ "name: ~s, acting user: ~s", [Name, ActingUser]);
add_queue_int(Queue, Name, ActingUser) ->
rabbit_amqqueue:declare(Name,
maps:get(durable, Queue, undefined),
@@ -411,6 +416,13 @@ add_exchange(Exchange, ActingUser) ->
add_exchange(VHost, Exchange, ActingUser) ->
add_exchange_int(Exchange, rv(VHost, exchange, Exchange), ActingUser).
+add_exchange_int(_Exchange, #resource{kind = exchange, name = <<"">>}, ActingUser) ->
+ rabbit_log:warning("Not importing the default exchange, acting user: ~s", [ActingUser]);
+add_exchange_int(_Exchange, R = #resource{kind = exchange,
+ name = <<"amq.", _/binary>>}, ActingUser) ->
+ Name = R#resource.name,
+ rabbit_log:warning("Skipping import of an exchange whose name begins with 'amq.', "
+ "name: ~s, acting user: ~s", [Name, ActingUser]);
add_exchange_int(Exchange, Name, ActingUser) ->
Internal = case maps:get(internal, Exchange, undefined) of
undefined -> false; %% =< 2.2.0
diff --git a/test/definition_import_SUITE.erl b/test/definition_import_SUITE.erl
index fc49535f92..fbbfc95fb5 100644
--- a/test/definition_import_SUITE.erl
+++ b/test/definition_import_SUITE.erl
@@ -44,7 +44,8 @@ groups() ->
import_case7,
import_case8,
import_case9,
- import_case10
+ import_case10,
+ import_case11
]}
].
@@ -103,6 +104,8 @@ import_case5(Config) ->
[{<<"1883">>,<<"/">>},
{<<"1884">>,<<"vhost2">>}]).
+import_case11(Config) -> import_file_case(Config, "case11").
+
import_file_case(Config, CaseName) ->
CasePath = filename:join(?config(data_dir, Config), CaseName ++ ".json"),
rabbit_ct_broker_helpers:rpc(Config, 0, ?MODULE, run_import_case, [CasePath]),
diff --git a/test/definition_import_SUITE_data/case11.json b/test/definition_import_SUITE_data/case11.json
new file mode 100644
index 0000000000..13afdf5cb5
--- /dev/null
+++ b/test/definition_import_SUITE_data/case11.json
@@ -0,0 +1,24 @@
+{
+ "rabbit_version": "3.8.0+rc.1.5.g9148053",
+ "rabbitmq_version": "3.8.0+rc.1.5.g9148053",
+ "queues": [
+ {
+ "name": "amq.queuebar",
+ "vhost": "/",
+ "durable": true,
+ "auto_delete": false,
+ "arguments": {}
+ }
+ ],
+ "exchanges": [
+ {
+ "name": "amq.foobar",
+ "vhost": "/",
+ "type": "direct",
+ "durable": true,
+ "auto_delete": false,
+ "internal": false,
+ "arguments": {}
+ }
+ ]
+}