diff options
| author | Michael Klishin <michael@rabbitmq.com> | 2014-06-25 21:07:01 +0400 |
|---|---|---|
| committer | Michael Klishin <michael@rabbitmq.com> | 2014-06-25 21:07:01 +0400 |
| commit | 400c1a9a5e269bbe03510517242ff1a46315bece (patch) | |
| tree | f90826f6c7369bc3c577a2ae5977bfee52f3d29a /src | |
| parent | ce96592fb98a7967d01efb6e9b5963a9ac0da621 (diff) | |
| download | rabbitmq-server-git-400c1a9a5e269bbe03510517242ff1a46315bece.tar.gz | |
Refactor
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_control_main.erl | 53 |
1 files changed, 18 insertions, 35 deletions
diff --git a/src/rabbit_control_main.erl b/src/rabbit_control_main.erl index 1f2e91ca11..23d019d81c 100644 --- a/src/rabbit_control_main.erl +++ b/src/rabbit_control_main.erl @@ -114,6 +114,17 @@ {"Policies", rabbit_policy, list_formatted, info_keys}, {"Parameters", rabbit_runtime_parameters, list_formatted, info_keys}]). +-define(COMMANDS_THAT_REQUIRE_RABBIT_APP_TO_BE_RUNNING, + [status, cluster_status, environment, rotate_logs, + close_connection, add_user, delete_user, change_password, + clear_password, set_user_tags, list_users, add_vhost, + delete_vhost, list_vhosts, list_user_permissions, list_queues, + list_exchanges, list_bindings, list_connections, + list_channels, list_consumers, trace_on, trace_off, + set_vm_memory_high_watermark, set_permissions, clear_permissions, + list_permissions, set_parameter, clear_parameter, list_parameters, + set_policy, clear_policy, list_policies, report, eval]). + %%---------------------------------------------------------------------------- -ifdef(use_specs). @@ -140,6 +151,13 @@ start() -> end, Quiet = proplists:get_bool(?QUIET_OPT, Opts), Node = proplists:get_value(?NODE_OPT, Opts), + case lists:member(Command, ?COMMANDS_THAT_REQUIRE_RABBIT_APP_TO_BE_RUNNING) of + true -> + quit_if_rabbit_app_is_not_running(Node), + ok; + false -> + ok + end, Inform = case Quiet of true -> fun (_Format, _Args1) -> ok end; false -> fun (Format, Args1) -> @@ -332,94 +350,77 @@ action(wait, Node, [PidFile, App], _Opts, Inform) -> wait_for_application(Node, PidFile, list_to_atom(App), Inform); action(status, Node, [], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Status of node ~p", [Node]), display_call_result(Node, {rabbit, status, []}); action(cluster_status, Node, [], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Cluster status of node ~p", [Node]), display_call_result(Node, {rabbit_mnesia, status, []}); action(environment, Node, _App, _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Application environment of node ~p", [Node]), display_call_result(Node, {rabbit, environment, []}); action(rotate_logs, Node, [], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Reopening logs for node ~p", [Node]), call(Node, {rabbit, rotate_logs, [""]}); action(rotate_logs, Node, Args = [Suffix], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Rotating logs to files with suffix \"~s\"", [Suffix]), call(Node, {rabbit, rotate_logs, Args}); action(close_connection, Node, [PidStr, Explanation], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Closing connection \"~s\"", [PidStr]), rpc_call(Node, rabbit_networking, close_connection, [rabbit_misc:string_to_pid(PidStr), Explanation]); action(add_user, Node, Args = [Username, _Password], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Creating user \"~s\"", [Username]), call(Node, {rabbit_auth_backend_internal, add_user, Args}); action(delete_user, Node, Args = [_Username], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Deleting user \"~s\"", Args), call(Node, {rabbit_auth_backend_internal, delete_user, Args}); action(change_password, Node, Args = [Username, _Newpassword], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Changing password for user \"~s\"", [Username]), call(Node, {rabbit_auth_backend_internal, change_password, Args}); action(clear_password, Node, Args = [Username], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Clearing password for user \"~s\"", [Username]), call(Node, {rabbit_auth_backend_internal, clear_password, Args}); action(set_user_tags, Node, [Username | TagsStr], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Tags = [list_to_atom(T) || T <- TagsStr], Inform("Setting tags for user \"~s\" to ~p", [Username, Tags]), rpc_call(Node, rabbit_auth_backend_internal, set_tags, [list_to_binary(Username), Tags]); action(list_users, Node, [], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Listing users", []), display_info_list( call(Node, {rabbit_auth_backend_internal, list_users, []}), rabbit_auth_backend_internal:user_info_keys()); action(add_vhost, Node, Args = [_VHostPath], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Creating vhost \"~s\"", Args), call(Node, {rabbit_vhost, add, Args}); action(delete_vhost, Node, Args = [_VHostPath], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Deleting vhost \"~s\"", Args), call(Node, {rabbit_vhost, delete, Args}); action(list_vhosts, Node, Args, _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Listing vhosts", []), ArgAtoms = default_if_empty(Args, [name]), display_info_list(call(Node, {rabbit_vhost, info_all, []}), ArgAtoms); action(list_user_permissions, Node, Args = [_Username], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Listing permissions for user ~p", Args), display_info_list(call(Node, {rabbit_auth_backend_internal, list_user_permissions, Args}), rabbit_auth_backend_internal:user_perms_info_keys()); action(list_queues, Node, Args, Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Listing queues", []), VHostArg = list_to_binary(proplists:get_value(?VHOST_OPT, Opts)), ArgAtoms = default_if_empty(Args, [name, messages]), @@ -428,7 +429,6 @@ action(list_queues, Node, Args, Opts, Inform) -> ArgAtoms); action(list_exchanges, Node, Args, Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Listing exchanges", []), VHostArg = list_to_binary(proplists:get_value(?VHOST_OPT, Opts)), ArgAtoms = default_if_empty(Args, [name, type]), @@ -437,7 +437,6 @@ action(list_exchanges, Node, Args, Opts, Inform) -> ArgAtoms); action(list_bindings, Node, Args, Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Listing bindings", []), VHostArg = list_to_binary(proplists:get_value(?VHOST_OPT, Opts)), ArgAtoms = default_if_empty(Args, [source_name, source_kind, @@ -448,7 +447,6 @@ action(list_bindings, Node, Args, Opts, Inform) -> ArgAtoms); action(list_connections, Node, Args, _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Listing connections", []), ArgAtoms = default_if_empty(Args, [user, peer_host, peer_port, state]), display_info_list(rpc_call(Node, rabbit_networking, connection_info_all, @@ -456,7 +454,6 @@ action(list_connections, Node, Args, _Opts, Inform) -> ArgAtoms); action(list_channels, Node, Args, _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Listing channels", []), ArgAtoms = default_if_empty(Args, [pid, user, consumer_count, messages_unacknowledged]), @@ -464,26 +461,22 @@ action(list_channels, Node, Args, _Opts, Inform) -> ArgAtoms); action(list_consumers, Node, _Args, Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Listing consumers", []), VHostArg = list_to_binary(proplists:get_value(?VHOST_OPT, Opts)), display_info_list(rpc_call(Node, rabbit_amqqueue, consumers_all, [VHostArg]), rabbit_amqqueue:consumer_info_keys()); action(trace_on, Node, [], Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), VHost = proplists:get_value(?VHOST_OPT, Opts), Inform("Starting tracing for vhost \"~s\"", [VHost]), rpc_call(Node, rabbit_trace, start, [list_to_binary(VHost)]); action(trace_off, Node, [], Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), VHost = proplists:get_value(?VHOST_OPT, Opts), Inform("Stopping tracing for vhost \"~s\"", [VHost]), rpc_call(Node, rabbit_trace, stop, [list_to_binary(VHost)]); action(set_vm_memory_high_watermark, Node, [Arg], _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Frac = list_to_float(case string:chr(Arg, $.) of 0 -> Arg ++ ".0"; _ -> Arg @@ -492,7 +485,6 @@ action(set_vm_memory_high_watermark, Node, [Arg], _Opts, Inform) -> rpc_call(Node, vm_memory_monitor, set_vm_memory_high_watermark, [Frac]); action(set_permissions, Node, [Username, CPerm, WPerm, RPerm], Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), VHost = proplists:get_value(?VHOST_OPT, Opts), Inform("Setting permissions for user \"~s\" in vhost \"~s\"", [Username, VHost]), @@ -500,7 +492,6 @@ action(set_permissions, Node, [Username, CPerm, WPerm, RPerm], Opts, Inform) -> [Username, VHost, CPerm, WPerm, RPerm]}); action(clear_permissions, Node, [Username], Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), VHost = proplists:get_value(?VHOST_OPT, Opts), Inform("Clearing permissions for user \"~s\" in vhost \"~s\"", [Username, VHost]), @@ -508,7 +499,6 @@ action(clear_permissions, Node, [Username], Opts, Inform) -> [Username, VHost]}); action(list_permissions, Node, [], Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), VHost = proplists:get_value(?VHOST_OPT, Opts), Inform("Listing permissions in vhost \"~s\"", [VHost]), display_info_list(call(Node, {rabbit_auth_backend_internal, @@ -516,7 +506,6 @@ action(list_permissions, Node, [], Opts, Inform) -> rabbit_auth_backend_internal:vhost_perms_info_keys()); action(set_parameter, Node, [Component, Key, Value], Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), VHostArg = list_to_binary(proplists:get_value(?VHOST_OPT, Opts)), Inform("Setting runtime parameter ~p for component ~p to ~p", [Key, Component, Value]), @@ -525,7 +514,6 @@ action(set_parameter, Node, [Component, Key, Value], Opts, Inform) -> [VHostArg, list_to_binary(Component), list_to_binary(Key), Value, none]); action(clear_parameter, Node, [Component, Key], Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), VHostArg = list_to_binary(proplists:get_value(?VHOST_OPT, Opts)), Inform("Clearing runtime parameter ~p for component ~p", [Key, Component]), rpc_call(Node, rabbit_runtime_parameters, clear, [VHostArg, @@ -533,7 +521,6 @@ action(clear_parameter, Node, [Component, Key], Opts, Inform) -> list_to_binary(Key)]); action(list_parameters, Node, [], Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), VHostArg = list_to_binary(proplists:get_value(?VHOST_OPT, Opts)), Inform("Listing runtime parameters", []), display_info_list( @@ -541,7 +528,6 @@ action(list_parameters, Node, [], Opts, Inform) -> rabbit_runtime_parameters:info_keys()); action(set_policy, Node, [Key, Pattern, Defn], Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Msg = "Setting policy ~p for pattern ~p to ~p with priority ~p", VHostArg = list_to_binary(proplists:get_value(?VHOST_OPT, Opts)), PriorityArg = proplists:get_value(?PRIORITY_OPT, Opts), @@ -552,20 +538,17 @@ action(set_policy, Node, [Key, Pattern, Defn], Opts, Inform) -> [VHostArg, list_to_binary(Key), Pattern, Defn, PriorityArg, ApplyToArg]); action(clear_policy, Node, [Key], Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), VHostArg = list_to_binary(proplists:get_value(?VHOST_OPT, Opts)), Inform("Clearing policy ~p", [Key]), rpc_call(Node, rabbit_policy, delete, [VHostArg, list_to_binary(Key)]); action(list_policies, Node, [], Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), VHostArg = list_to_binary(proplists:get_value(?VHOST_OPT, Opts)), Inform("Listing policies", []), display_info_list(rpc_call(Node, rabbit_policy, list_formatted, [VHostArg]), rabbit_policy:info_keys()); action(report, Node, _Args, _Opts, Inform) -> - quit_if_rabbit_app_is_not_running(Node), Inform("Reporting server status on ~p~n~n", [erlang:universaltime()]), [begin ok = action(Action, N, [], [], Inform), io:nl() end || N <- unsafe_rpc(Node, rabbit_mnesia, cluster_nodes, [running]), |
