summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniil Fedotov <dfedotov@pivotal.io>2016-04-04 14:48:42 +0100
committerDaniil Fedotov <dfedotov@pivotal.io>2016-04-04 14:48:42 +0100
commit47baba044ae832b9e3bb7c3862e54ffdcda48d28 (patch)
treef98aef5e029e36558c1e5e72252a7140975e877c /src
parent28826181bd2cef140fb8e9fe5b68da5a84835218 (diff)
downloadrabbitmq-server-git-47baba044ae832b9e3bb7c3862e54ffdcda48d28.tar.gz
Error messages in rabbitmq-plugins
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_plugins.erl19
-rw-r--r--src/rabbit_plugins_main.erl23
2 files changed, 31 insertions, 11 deletions
diff --git a/src/rabbit_plugins.erl b/src/rabbit_plugins.erl
index 701266cab3..bb09be3370 100644
--- a/src/rabbit_plugins.erl
+++ b/src/rabbit_plugins.erl
@@ -251,24 +251,27 @@ prepare_plugins(Enabled) ->
AllPlugins = list(PluginsDistDir),
Wanted = dependencies(false, Enabled, AllPlugins),
WantedPlugins = lookup_plugins(Wanted, AllPlugins),
- RabbitVersion = RabbitVersion = case application:get_key(rabbit, vsn) of
- undefined -> "0.0.0";
- {ok, Val} -> Val
- end,
- {ValidPlugins, Problems} = validate_plugins(WantedPlugins, RabbitVersion),
- rabbit_log:error("Valid ~p~n Invalid ~p", [ValidPlugins, Problems]),
+ {ValidPlugins, Problems} = validate_plugins(WantedPlugins),
+ %TODO: do not enable invalid plugins
case filelib:ensure_dir(ExpandDir ++ "/") of
ok -> ok;
{error, E2} -> throw({error, {cannot_create_plugins_expand_dir,
[ExpandDir, E2]}})
end,
-
[prepare_plugin(Plugin, ExpandDir) || Plugin <- WantedPlugins],
[prepare_dir_plugin(PluginAppDescPath) ||
PluginAppDescPath <- filelib:wildcard(ExpandDir ++ "/*/ebin/*.app")],
Wanted.
+validate_plugins(WantedPlugins) ->
+ application:load(rabbit),
+ RabbitVersion = RabbitVersion = case application:get_key(rabbit, vsn) of
+ undefined -> "0.0.0";
+ {ok, Val} -> Val
+ end,
+ validate_plugins(WantedPlugins, RabbitVersion).
+
validate_plugins(WantedPlugins, RabbitVersion) ->
lists:foldl(
fun(#plugin{name = Name,
@@ -276,7 +279,7 @@ validate_plugins(WantedPlugins, RabbitVersion) ->
plugins_versions = PluginsVersions} = Plugin,
{Plugins, Errors}) ->
case version_support(RabbitVersion, RabbitmqVersions) of
- {error, Err} -> {Plugins, [{Name, Err} | Errors]};
+ {error, Err} -> {Plugins, [{Name, [Err]} | Errors]};
ok ->
case check_plugins_versions(Plugins, PluginsVersions) of
ok -> {[Plugin | Plugins], Errors};
diff --git a/src/rabbit_plugins_main.erl b/src/rabbit_plugins_main.erl
index 6c4d35c58f..18cb9b8ce7 100644
--- a/src/rabbit_plugins_main.erl
+++ b/src/rabbit_plugins_main.erl
@@ -172,11 +172,28 @@ validate_plugins(Names, #cli{all = All}) ->
lists:keyfind(Name, #plugin.name, All)
end,
Deps),
- {_, Errors} = rabbit_plugins:validate_plugins(DepsPlugins, "0.0.0"),
+ {_, Errors} = rabbit_plugins:validate_plugins(DepsPlugins),
Errors.
-fmt_invalid(Errors) ->
- lists:flatten(io_lib:format("Problem reading some plugins: ~p~n", [Errors])).
+fmt_invalid(InvalidPlugins) ->
+ lists:flatten(["Failed to enable some plugins: \r\n"
+ | [fmt_invalid_plugin(Plugin) || Plugin <- InvalidPlugins]]).
+
+fmt_invalid_plugin({Name, Errors}) ->
+ [io_lib:format(" ~p:~n", [Name])
+ | [fmt_invalid_plugin_error(Err) || Err <- Errors]].
+
+fmt_invalid_plugin_error({missing_dependency, Dep}) ->
+ io_lib:format(" Dependency is missing or invalid: ~p~n", [Dep]);
+fmt_invalid_plugin_error({version_mismatch, {Version, Required}}) ->
+ io_lib:format(" Broker version is invalid."
+ " Current version: ~p Required: ~p~n", [Version, Required]);
+fmt_invalid_plugin_error({{version_mismatch, {Version, Required}}, Name}) ->
+ io_lib:format(" ~p plugin version is invalid."
+ " Current version: ~p Required: ~p~n",
+ [Name, Version, Required]);
+fmt_invalid_plugin_error(Err) ->
+ io_lib:format(" Unknown error ~p~n", [Err]).
%% Pretty print a list of plugins.
format_plugins(Node, Pattern, Opts, #cli{all = All,