summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@rabbitmq.com>2014-06-25 21:07:01 +0400
committerMichael Klishin <michael@rabbitmq.com>2014-06-25 21:07:01 +0400
commit400c1a9a5e269bbe03510517242ff1a46315bece (patch)
treef90826f6c7369bc3c577a2ae5977bfee52f3d29a /src
parentce96592fb98a7967d01efb6e9b5963a9ac0da621 (diff)
downloadrabbitmq-server-git-400c1a9a5e269bbe03510517242ff1a46315bece.tar.gz
Refactor
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_control_main.erl53
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]),