diff options
| author | Alexey Lebedeff <alebedev@mirantis.com> | 2017-03-03 13:54:17 +0300 |
|---|---|---|
| committer | Alexey Lebedeff <alebedev@mirantis.com> | 2017-03-03 15:31:51 +0300 |
| commit | ce498703295d584f27ff683bbc2ab953aa44279a (patch) | |
| tree | d6166d0085bdd638062fc0d4aaa113fd2160e8b4 | |
| parent | 697113decf7c174561e87eee99ce4649ad8701a7 (diff) | |
| download | rabbitmq-server-git-ce498703295d584f27ff683bbc2ab953aa44279a.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.erl | 3 | ||||
| -rw-r--r-- | src/rabbit_plugins.erl | 41 |
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), |
