diff options
-rw-r--r-- | apps/rabbitmq_prelaunch/src/rabbit_prelaunch.erl | 2 | ||||
-rw-r--r-- | apps/rabbitmq_prelaunch/src/rabbit_prelaunch_plugins.erl | 40 | ||||
-rw-r--r-- | src/rabbit_plugins.erl | 40 | ||||
-rw-r--r-- | test/rabbit_prelaunch_plugins_SUITE.erl (renamed from test/rabbit_plugins_SUITE.erl) | 12 |
4 files changed, 48 insertions, 46 deletions
diff --git a/apps/rabbitmq_prelaunch/src/rabbit_prelaunch.erl b/apps/rabbitmq_prelaunch/src/rabbit_prelaunch.erl index b9c4e06258..7ac19237b3 100644 --- a/apps/rabbitmq_prelaunch/src/rabbit_prelaunch.erl +++ b/apps/rabbitmq_prelaunch/src/rabbit_prelaunch.erl @@ -93,7 +93,7 @@ do_run() -> Context2 = rabbit_env:get_context_after_reloading_env(Context1), %% Migrate the enabled_plugins file to the new location if necessary - Context3 = rabbit_plugins:maybe_migrate_enabled_plugins_file(Context2), + Context3 = rabbit_prelaunch_plugins:maybe_migrate_enabled_plugins_file(Context2), ?assertMatch(#{}, Context3), store_context(Context3), diff --git a/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_plugins.erl b/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_plugins.erl new file mode 100644 index 0000000000..efb849382b --- /dev/null +++ b/apps/rabbitmq_prelaunch/src/rabbit_prelaunch_plugins.erl @@ -0,0 +1,40 @@ +-module(rabbit_prelaunch_plugins). + +-include_lib("kernel/include/file.hrl"). + +-export([maybe_migrate_enabled_plugins_file/1]). + +-define(ENABLED_PLUGINS_FILENAME, "enabled_plugins"). + +-spec maybe_migrate_enabled_plugins_file(map()) -> map(). +maybe_migrate_enabled_plugins_file(#{enabled_plugins_file := EnabledPluginsFile} = Context) + when EnabledPluginsFile =/= undefined -> + Context; +maybe_migrate_enabled_plugins_file(#{os_type := {unix, _}, + config_base_dir := ConfigBaseDir, + data_dir := DataDir} = Context) -> + ModernLocation = filename:join(DataDir, ?ENABLED_PLUGINS_FILENAME), + LegacyLocation = filename:join(ConfigBaseDir, ?ENABLED_PLUGINS_FILENAME), + case {filelib:is_regular(ModernLocation), + file:read_file_info(LegacyLocation)} of + {false, {ok, #file_info{access = read_write}}} -> + rabbit_log_prelaunch:info("NOTICE: Using 'enabled_plugins' file" + " from ~p. Please migrate this file" + " to its new location, ~p, as the" + " previous location is deprecated.", + [LegacyLocation, ModernLocation]), + Context#{enabled_plugins_file := LegacyLocation}; + {false, {ok, #file_info{access = read}}} -> + {ok, _} = file:copy(LegacyLocation, ModernLocation), + rabbit_log_prelaunch:info("NOTICE: An 'enabled_plugins' file was" + " found at ~p but was not read and" + " writable. It has been copied to its" + " new location at ~p and any changes" + " to plugin status will be reflected" + " there.", [LegacyLocation, ModernLocation]), + Context#{enabled_plugins_file := ModernLocation}; + _ -> + Context#{enabled_plugins_file := ModernLocation} + end; +maybe_migrate_enabled_plugins_file(#{data_dir := DataDir} = Context) -> + Context#{enabled_plugins_file := filename:join(DataDir, ?ENABLED_PLUGINS_FILENAME)}. diff --git a/src/rabbit_plugins.erl b/src/rabbit_plugins.erl index 6d09f8c76a..17790c0f6c 100644 --- a/src/rabbit_plugins.erl +++ b/src/rabbit_plugins.erl @@ -23,18 +23,13 @@ -export([ensure/1]). -export([validate_plugins/1, format_invalid_plugins/1]). -export([is_strictly_plugin/1, strictly_plugins/2, strictly_plugins/1]). --export([plugins_dir/0, plugin_names/1, plugins_expand_dir/0, enabled_plugins_file/0, - maybe_migrate_enabled_plugins_file/1]). +-export([plugins_dir/0, plugin_names/1, plugins_expand_dir/0, enabled_plugins_file/0]). % Export for testing purpose. -export([is_version_supported/2, validate_plugins/2]). %%---------------------------------------------------------------------------- --define(ENABLED_PLUGINS_FILENAME, "enabled_plugins"). - -%%---------------------------------------------------------------------------- - -type plugin_name() :: atom(). %%---------------------------------------------------------------------------- @@ -113,39 +108,6 @@ enabled_plugins_file() -> filename:join([rabbit_mnesia:dir(), "enabled_plugins"]) end. --spec maybe_migrate_enabled_plugins_file(map()) -> map(). -maybe_migrate_enabled_plugins_file(#{enabled_plugins_file := EnabledPluginsFile} = Context) - when EnabledPluginsFile =/= undefined -> - Context; -maybe_migrate_enabled_plugins_file(#{os_type := {unix, _}, - config_base_dir := ConfigBaseDir, - data_dir := DataDir} = Context) -> - ModernLocation = filename:join(DataDir, ?ENABLED_PLUGINS_FILENAME), - LegacyLocation = filename:join(ConfigBaseDir, ?ENABLED_PLUGINS_FILENAME), - case {filelib:is_regular(ModernLocation), - file:read_file_info(LegacyLocation)} of - {false, {ok, #file_info{access = read_write}}} -> - rabbit_log_prelaunch:info("NOTICE: Using 'enabled_plugins' file" - " from ~p. Please migrate this file" - " to its new location, ~p, as the" - " previous location is deprecated.", - [LegacyLocation, ModernLocation]), - Context#{enabled_plugins_file := LegacyLocation}; - {false, {ok, #file_info{access = read}}} -> - {ok, _} = file:copy(LegacyLocation, ModernLocation), - rabbit_log_prelaunch:info("NOTICE: An 'enabled_plugins' file was" - " found at ~p but was not read and" - " writable. It has been copied to its" - " new location at ~p and any changes" - " to plugin status will be reflected" - " there.", [LegacyLocation, ModernLocation]), - Context#{enabled_plugins_file := ModernLocation}; - _ -> - Context#{enabled_plugins_file := ModernLocation} - end; -maybe_migrate_enabled_plugins_file(#{data_dir := DataDir} = Context) -> - Context#{enabled_plugins_file := filename:join(DataDir, ?ENABLED_PLUGINS_FILENAME)}. - -spec enabled_plugins() -> [atom()]. enabled_plugins() -> case application:get_env(rabbit, enabled_plugins_file) of diff --git a/test/rabbit_plugins_SUITE.erl b/test/rabbit_prelaunch_plugins_SUITE.erl index f362caf415..de9e02980f 100644 --- a/test/rabbit_plugins_SUITE.erl +++ b/test/rabbit_prelaunch_plugins_SUITE.erl @@ -14,7 +14,7 @@ %% Copyright (c) 2019-2020 VMware, Inc. or its affiliates. All rights reserved. %% --module(rabbit_plugins_SUITE). +-module(rabbit_prelaunch_plugins_SUITE). -include_lib("common_test/include/ct.hrl"). -include_lib("eunit/include/eunit.hrl"). @@ -100,7 +100,7 @@ end_per_testcase(_, Config) -> check_enabled_plugins_file_passthrough(_) -> Context = #{enabled_plugins_file => "/some/dir/enabled_plugins"}, ?assertMatch(#{enabled_plugins_file := "/some/dir/enabled_plugins"}, - rabbit_plugins:maybe_migrate_enabled_plugins_file(Context)). + rabbit_prelaunch_plugins:maybe_migrate_enabled_plugins_file(Context)). check_enabled_plugins_file_modern(Config) -> DataDir = proplists:get_value(rabbit_data_dir, Config), @@ -113,7 +113,7 @@ check_enabled_plugins_file_modern(Config) -> data_dir => DataDir, enabled_plugins_file => undefined}, ?assertMatch(#{enabled_plugins_file := ExpectedLocation}, - rabbit_plugins:maybe_migrate_enabled_plugins_file(Context)). + rabbit_prelaunch_plugins:maybe_migrate_enabled_plugins_file(Context)). check_enabled_plugins_file_default(Config) -> DataDir = proplists:get_value(rabbit_data_dir, Config), @@ -127,7 +127,7 @@ check_enabled_plugins_file_default(Config) -> data_dir => DataDir, enabled_plugins_file => undefined}, ?assertMatch(#{enabled_plugins_file := ExpectedLocation}, - rabbit_plugins:maybe_migrate_enabled_plugins_file(Context)). + rabbit_prelaunch_plugins:maybe_migrate_enabled_plugins_file(Context)). check_enabled_plugins_file_legacy(Config) -> DataDir = proplists:get_value(rabbit_data_dir, Config), @@ -141,7 +141,7 @@ check_enabled_plugins_file_legacy(Config) -> data_dir => DataDir, enabled_plugins_file => undefined}, ?assertMatch(#{enabled_plugins_file := ExpectedLocation}, - rabbit_plugins:maybe_migrate_enabled_plugins_file(Context)). + rabbit_prelaunch_plugins:maybe_migrate_enabled_plugins_file(Context)). check_enabled_plugins_file_copy(Config) -> DataDir = proplists:get_value(rabbit_data_dir, Config), @@ -157,7 +157,7 @@ check_enabled_plugins_file_copy(Config) -> data_dir => DataDir, enabled_plugins_file => undefined}, ?assertMatch(#{enabled_plugins_file := ExpectedLocation}, - rabbit_plugins:maybe_migrate_enabled_plugins_file(Context)), + rabbit_prelaunch_plugins:maybe_migrate_enabled_plugins_file(Context)), {ok, File} = file:read_file(ExpectedLocation), ?assertEqual("[rabbitmq_management].", unicode:characters_to_list(File)). |