summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2013-08-08 18:44:22 +0100
committerSimon MacMullen <simon@rabbitmq.com>2013-08-08 18:44:22 +0100
commitb073b835b77f2b27211faf3df5066d8a06a6b108 (patch)
treed40872a29ce2c9edd1013c019fb22b7d1e1dfaed /src
parent6ea08b611d49a643628dcbfe47e741e3fc3ec3aa (diff)
downloadrabbitmq-server-git-b073b835b77f2b27211faf3df5066d8a06a6b108.tar.gz
Add support for setting apply-to via rabbitmqctl. Switch to using option for priority rather than optional positional argument, with two options now that approach was starting to look confusing.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_control_main.erl23
-rw-r--r--src/rabbit_policy.erl19
2 files changed, 20 insertions, 22 deletions
diff --git a/src/rabbit_control_main.erl b/src/rabbit_control_main.erl
index f5e70365f5..fb8752b877 100644
--- a/src/rabbit_control_main.erl
+++ b/src/rabbit_control_main.erl
@@ -25,12 +25,16 @@
-define(QUIET_OPT, "-q").
-define(NODE_OPT, "-n").
-define(VHOST_OPT, "-p").
+-define(PRIORITY_OPT, "--priority").
+-define(APPLY_TO_OPT, "--apply-to").
-define(RAM_OPT, "--ram").
-define(OFFLINE_OPT, "--offline").
-define(QUIET_DEF, {?QUIET_OPT, flag}).
-define(NODE_DEF(Node), {?NODE_OPT, {option, Node}}).
-define(VHOST_DEF, {?VHOST_OPT, {option, "/"}}).
+-define(PRIORITY_DEF, {?PRIORITY_OPT, {option, "0"}}).
+-define(APPLY_TO_DEF, {?APPLY_TO_OPT, {option, "all"}}).
-define(RAM_DEF, {?RAM_OPT, flag}).
-define(OFFLINE_DEF, {?OFFLINE_OPT, flag}).
@@ -72,7 +76,7 @@
{clear_parameter, [?VHOST_DEF]},
{list_parameters, [?VHOST_DEF]},
- {set_policy, [?VHOST_DEF]},
+ {set_policy, [?VHOST_DEF, ?PRIORITY_DEF, ?APPLY_TO_DEF]},
{clear_policy, [?VHOST_DEF]},
{list_policies, [?VHOST_DEF]},
@@ -484,16 +488,15 @@ action(list_parameters, Node, [], Opts, Inform) ->
rpc_call(Node, rabbit_runtime_parameters, list_formatted, [VHostArg]),
rabbit_runtime_parameters:info_keys());
-action(set_policy, Node, [Key, Pattern, Defn | Prio], Opts, Inform)
- when Prio == [] orelse length(Prio) == 1 ->
- Msg = "Setting policy ~p for pattern ~p to ~p",
- {InformMsg, Prio1} = case Prio of [] -> {Msg, undefined};
- [P] -> {Msg ++ " with priority ~s", P}
- end,
+action(set_policy, Node, [Key, Pattern, Defn], Opts, Inform) ->
+ Msg = "Setting policy ~p for pattern ~p to ~p with priority ~p",
VHostArg = list_to_binary(proplists:get_value(?VHOST_OPT, Opts)),
- Inform(InformMsg, [Key, Pattern, Defn] ++ Prio),
- rpc_call(Node, rabbit_policy, parse_set,
- [VHostArg, list_to_binary(Key), Pattern, Defn, Prio1]);
+ PriorityArg = proplists:get_value(?PRIORITY_OPT, Opts),
+ ApplyToArg = list_to_binary(proplists:get_value(?APPLY_TO_OPT, Opts)),
+ Inform(Msg, [Key, Pattern, Defn, PriorityArg]),
+ rpc_call(
+ Node, rabbit_policy, parse_set,
+ [VHostArg, list_to_binary(Key), Pattern, Defn, PriorityArg, ApplyToArg]);
action(clear_policy, Node, [Key], Opts, Inform) ->
VHostArg = list_to_binary(proplists:get_value(?VHOST_OPT, Opts)),
diff --git a/src/rabbit_policy.erl b/src/rabbit_policy.erl
index 5b2e2da24b..f4a5de5ab8 100644
--- a/src/rabbit_policy.erl
+++ b/src/rabbit_policy.erl
@@ -28,7 +28,7 @@
-export([invalidate/0, recover/0]).
-export([name/1, get/2, set/1]).
-export([validate/4, notify/4, notify_clear/3]).
--export([parse_set/5, set/6, delete/2, lookup/2, list/0, list/1,
+-export([parse_set/6, set/6, delete/2, lookup/2, list/0, list/1,
list_formatted/1, info_keys/0]).
-rabbit_boot_step({?MODULE,
@@ -108,22 +108,21 @@ invalid_file() ->
%%----------------------------------------------------------------------------
-parse_set(VHost, Name, Pattern, Definition, undefined) ->
- parse_set0(VHost, Name, Pattern, Definition, 0);
-parse_set(VHost, Name, Pattern, Definition, Priority) ->
+parse_set(VHost, Name, Pattern, Definition, Priority, ApplyTo) ->
try list_to_integer(Priority) of
- Num -> parse_set0(VHost, Name, Pattern, Definition, Num)
+ Num -> parse_set0(VHost, Name, Pattern, Definition, Num, ApplyTo)
catch
error:badarg -> {error, "~p priority must be a number", [Priority]}
end.
-parse_set0(VHost, Name, Pattern, Defn, Priority) ->
+parse_set0(VHost, Name, Pattern, Defn, Priority, ApplyTo) ->
case rabbit_misc:json_decode(Defn) of
{ok, JSON} ->
set0(VHost, Name,
[{<<"pattern">>, list_to_binary(Pattern)},
{<<"definition">>, rabbit_misc:json_to_term(JSON)},
- {<<"priority">>, Priority}]);
+ {<<"priority">>, Priority},
+ {<<"apply-to">>, ApplyTo}]);
error ->
{error_string, "JSON decoding error"}
end.
@@ -141,11 +140,7 @@ set(VHost, Name, Pattern, Definition, Priority, ApplyTo) ->
end}],
set0(VHost, Name, PolicyProps).
-set0(VHost, Name, Term0) ->
- Term = case pget(<<"apply-to">>, Term0) of
- undefined -> [{<<"apply-to">>, <<"all">>} | Term0];
- _ -> Term0
- end,
+set0(VHost, Name, Term) ->
rabbit_runtime_parameters:set_any(VHost, <<"policy">>, Name, Term).
delete(VHost, Name) ->