summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Lebedeff <alebedev@mirantis.com>2017-03-03 13:54:17 +0300
committerMichael Klishin <michael@clojurewerkz.org>2017-03-23 00:42:22 +0300
commit7fc24e63ccba2348d15b129223b63a17bf1f034f (patch)
treeb499c411089adb97d0d22cdb41fb05266ff6513a
parentf3798d4b86a5b7edd6d9c30e20b169d666c7e511 (diff)
downloadrabbitmq-server-git-7fc24e63ccba2348d15b129223b63a17bf1f034f.tar.gz
Provide some defaults for embedding
This commit provides defaults for some paths (similar to the thing the mnesia does with its `dir` parameter) that will allow us to start broker in embedded mode without any additional configuration. The minimal test-case is to issue the following commands from `rabbitmq-server` checkout: make shell "SHELL_OPTS=-sname embed-friendly@localhost" > rabbit:start().
-rw-r--r--src/rabbit_mnesia.erl3
-rw-r--r--src/rabbit_plugins.erl41
2 files changed, 33 insertions, 11 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index c420838312..08e4e2e2d5 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -840,12 +840,11 @@ with_running_or_clean_mnesia(Fun) ->
case IsMnesiaRunning of
true -> Fun();
false ->
- {ok, MnesiaDir} = application:get_env(mnesia, dir),
application:unset_env(mnesia, dir),
mnesia:start(),
Result = Fun(),
application:stop(mnesia),
- application:set_env(mnesia, dir, MnesiaDir),
+ application:set_env(mnesia, dir, dir()),
Result
end.
diff --git a/src/rabbit_plugins.erl b/src/rabbit_plugins.erl
index b408b7e613..f176d3abe0 100644
--- a/src/rabbit_plugins.erl
+++ b/src/rabbit_plugins.erl
@@ -61,10 +61,36 @@ ensure(FileJustChanged0) ->
{error, {enabled_plugins_mismatch, FileJustChanged, OurFile}}
end.
+-spec plugins_expand_dir() -> file:filename().
+plugins_expand_dir() ->
+ case application:get_env(rabbit, plugins_expand_dir) of
+ {ok, ExpandDir} ->
+ ExpandDir;
+ _ ->
+ filename:join([rabbit_mnesia:dir(), "plugins_expand_dir"])
+ end.
+
+-spec plugins_dist_dir() -> file:filename().
+plugins_dist_dir() ->
+ case application:get_env(rabbit, plugins_dir) of
+ {ok, PluginsDistDir} ->
+ PluginsDistDir;
+ _ ->
+ filename:join([rabbit_mnesia:dir(), "fake_plugins_dir"])
+ end.
+
+-spec enabled_plugins() -> [atom()].
+enabled_plugins() ->
+ case application:get_env(rabbit, enabled_plugins_file) of
+ {ok, EnabledFile} ->
+ read_enabled(EnabledFile);
+ _ ->
+ []
+ end.
+
%% @doc Prepares the file system and installs all enabled plugins.
setup() ->
- {ok, ExpandDir} = application:get_env(rabbit, plugins_expand_dir),
-
+ ExpandDir = plugins_expand_dir(),
%% Eliminate the contents of the destination directory
case delete_recursively(ExpandDir) of
ok -> ok;
@@ -72,14 +98,12 @@ setup() ->
[ExpandDir, E1]}})
end,
- {ok, EnabledFile} = application:get_env(rabbit, enabled_plugins_file),
- Enabled = read_enabled(EnabledFile),
+ Enabled = enabled_plugins(),
prepare_plugins(Enabled).
%% @doc Lists the plugins which are currently running.
active() ->
- {ok, ExpandDir} = application:get_env(rabbit, plugins_expand_dir),
- InstalledPlugins = plugin_names(list(ExpandDir)),
+ InstalledPlugins = plugin_names(list(plugins_expand_dir())),
[App || {App, _, _} <- rabbit_misc:which_applications(),
lists:member(App, InstalledPlugins)].
@@ -163,10 +187,9 @@ is_loadable(App) ->
%%----------------------------------------------------------------------------
prepare_plugins(Enabled) ->
- {ok, PluginsDistDir} = application:get_env(rabbit, plugins_dir),
- {ok, ExpandDir} = application:get_env(rabbit, plugins_expand_dir),
+ ExpandDir = plugins_expand_dir(),
- AllPlugins = list(PluginsDistDir),
+ AllPlugins = list(plugins_dist_dir()),
Wanted = dependencies(false, Enabled, AllPlugins),
WantedPlugins = lookup_plugins(Wanted, AllPlugins),