diff options
| author | Daniil Fedotov <dfedotov@pivotal.io> | 2016-04-04 14:48:42 +0100 |
|---|---|---|
| committer | Daniil Fedotov <dfedotov@pivotal.io> | 2016-04-04 14:48:42 +0100 |
| commit | 47baba044ae832b9e3bb7c3862e54ffdcda48d28 (patch) | |
| tree | f98aef5e029e36558c1e5e72252a7140975e877c /src | |
| parent | 28826181bd2cef140fb8e9fe5b68da5a84835218 (diff) | |
| download | rabbitmq-server-git-47baba044ae832b9e3bb7c3862e54ffdcda48d28.tar.gz | |
Error messages in rabbitmq-plugins
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_plugins.erl | 19 | ||||
| -rw-r--r-- | src/rabbit_plugins_main.erl | 23 |
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, |
