diff options
| author | Emile Joubert <emile@rabbitmq.com> | 2011-05-31 13:36:23 +0100 |
|---|---|---|
| committer | Emile Joubert <emile@rabbitmq.com> | 2011-05-31 13:36:23 +0100 |
| commit | 61556c2e11c617e0f0067d1aba064cbbd5c16489 (patch) | |
| tree | 01888fc112f06102aa472992f6a9de8a63018873 | |
| parent | 7f4bd7efc40349e99cd3f3f0906dd3d9f921b07e (diff) | |
| download | rabbitmq-server-git-61556c2e11c617e0f0067d1aba064cbbd5c16489.tar.gz | |
List permissions differently
| -rw-r--r-- | src/rabbit_auth_backend_internal.erl | 10 | ||||
| -rw-r--r-- | src/rabbit_control.erl | 50 |
2 files changed, 33 insertions, 27 deletions
diff --git a/src/rabbit_auth_backend_internal.erl b/src/rabbit_auth_backend_internal.erl index f70813d1e7..7cbd5dca0c 100644 --- a/src/rabbit_auth_backend_internal.erl +++ b/src/rabbit_auth_backend_internal.erl @@ -28,7 +28,7 @@ hash_password/1]). -export([set_permissions/5, clear_permissions/2, list_permissions/0, list_vhost_permissions/1, list_user_permissions/1, - list_user_vhost_permissions/2]). + list_user_vhost_permissions/2, vhost_perms_info_keys/0]). -include("rabbit_auth_backend_spec.hrl"). @@ -70,11 +70,14 @@ -spec(list_user_vhost_permissions/2 :: (rabbit_types:username(), rabbit_types:vhost()) -> [{regexp(), regexp(), regexp()}]). +-spec(vhost_perms_info_keys/0 :: () -> rabbit_types:info_keys()). -endif. %%---------------------------------------------------------------------------- +-define(PERMS_INFO_KEYS, [configure_perms, write_perms, read_perms]). + %% Implementation of rabbit_auth_backend description() -> @@ -283,13 +286,16 @@ clear_permissions(Username, VHostPath) -> virtual_host = VHostPath}}) end)). +vhost_perms_info_keys() -> [username] ++ ?PERMS_INFO_KEYS. + list_permissions() -> [{Username, VHostPath, ConfigurePerm, WritePerm, ReadPerm} || {Username, VHostPath, ConfigurePerm, WritePerm, ReadPerm} <- list_permissions(match_user_vhost('_', '_'))]. list_vhost_permissions(VHostPath) -> - [{Username, ConfigurePerm, WritePerm, ReadPerm} || + InfoKeys = vhost_perms_info_keys(), + [lists:zip(InfoKeys, [Username, ConfigurePerm, WritePerm, ReadPerm]) || {Username, _, ConfigurePerm, WritePerm, ReadPerm} <- list_permissions(rabbit_vhost:with( VHostPath, match_user_vhost('_', VHostPath)))]. diff --git a/src/rabbit_control.erl b/src/rabbit_control.erl index a2a054b46c..7d3f79076b 100644 --- a/src/rabbit_control.erl +++ b/src/rabbit_control.erl @@ -96,6 +96,18 @@ start() -> fmt_stderr(Format, Args) -> rabbit_misc:format_stderr(Format ++ "~n", Args). +print_report(Node, {Descr, Module, InfoFun, KeysFun}) -> + print_report(Node, {Descr, Module, InfoFun, KeysFun}, []). + +print_report(Node, {Descr, Module, InfoFun, KeysFun}, VHostArg) -> + io:format("%% ~p~n", [[Descr] ++ VHostArg]), + case Results = rpc_call(Node, Module, InfoFun, VHostArg) of + [_|_] -> InfoItems = rpc_call(Node, Module, KeysFun, []), + display_row([atom_to_list(I) || I <- InfoItems]), + display_info_list(Results, InfoItems); + _ -> ok + end. + print_error(Format, Args) -> fmt_stderr("Error: " ++ Format, Args). print_badrpc_diagnostics(Node) -> @@ -302,39 +314,27 @@ action(clear_permissions, Node, [Username], Opts, Inform) -> action(list_permissions, Node, [], Opts, Inform) -> VHost = proplists:get_value(?VHOST_OPT, Opts), Inform("Listing permissions in vhost ~p", [VHost]), - display_list(call(Node, {rabbit_auth_backend_internal, - list_vhost_permissions, [VHost]})); + display_info_list(call(Node, {rabbit_auth_backend_internal, + list_vhost_permissions, [VHost]}), + rabbit_auth_backend_internal:vhost_perms_info_keys()); action(report, Node, _Args, _Opts, Inform) -> io:format("Reporting server status on ~p~n", [erlang:universaltime()]), [action(status, ClusterNode, [], [], Inform) || ClusterNode <- rpc_call(Node, rabbit_mnesia, running_clustered_nodes, [])], - Report = fun ({Descr, Module, InfoFun, KeysFun, VHostArg}) -> - io:format("%% ~p~n", [[Descr] ++ VHostArg]), - case Results = rpc_call(Node, Module, InfoFun, VHostArg) of - [_|_] -> InfoItems = rpc_call(Node, Module, KeysFun, []), - display_row([atom_to_list(I) || I <- InfoItems]), - display_info_list(Results, InfoItems); - _ -> ok - end - end, GlobalQueries = [{"connections", rabbit_networking, connection_info_all, - connection_info_keys, []}, - {"channels", rabbit_channel, info_all, info_keys, []}], - VHostQueries = [{"queues", rabbit_amqqueue, info_all, info_keys, []}, - {"exchanges", rabbit_exchange, info_all, info_keys, []}, - {"bindings", rabbit_binding, info_all, info_keys, []}, + connection_info_keys}, + {"channels", rabbit_channel, info_all, info_keys}], + VHostQueries = [{"queues", rabbit_amqqueue, info_all, info_keys}, + {"exchanges", rabbit_exchange, info_all, info_keys}, + {"bindings", rabbit_binding, info_all, info_keys}, {"consumers", rabbit_amqqueue, consumers_all, - consumer_info_keys, []}], + consumer_info_keys}, + {"permissions", rabbit_auth_backend_internal, + list_vhost_permissions, vhost_perms_info_keys}], VHosts = rpc_call(Node, rabbit_vhost, list, []), - [Report(Q) || Q <- GlobalQueries], - [Report(setelement(5, Q, [V])) || Q <- VHostQueries, V <- VHosts], - [begin - io:format("%% ~p~n", [["permissions" | [VHost]]]), - display_list(call(Node, - {rabbit_auth_backend_internal, list_vhost_permissions, - [binary_to_list(VHost)]})) - end || VHost <- VHosts], + [print_report(Node, Q) || Q <- GlobalQueries], + [print_report(Node, Q, [V]) || Q <- VHostQueries, V <- VHosts], io:format("End of server status report~n"), ok. |
