summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_control_main.erl4
-rw-r--r--src/rabbit_policy.erl2
-rw-r--r--src/rabbit_runtime_parameters.erl22
3 files changed, 20 insertions, 8 deletions
diff --git a/src/rabbit_control_main.erl b/src/rabbit_control_main.erl
index 473f4237..4170295f 100644
--- a/src/rabbit_control_main.erl
+++ b/src/rabbit_control_main.erl
@@ -467,7 +467,7 @@ action(set_policy, Node, [Key, Pattern, Defn], Opts, Inform) ->
action(set_policy, Node, [Key, Pattern, Defn, Priority], Opts, Inform) ->
VHostArg = list_to_binary(proplists:get_value(?VHOST_OPT, Opts)),
- Inform("Setting policy ~p to ~p", [Key, Defn]),
+ Inform("Setting policy ~p to ~p for pattern ~p", [Key, Defn, Pattern]),
rpc_call(Node, rabbit_runtime_parameters, parse_set_policy,
[VHostArg, list_to_binary(Key), Pattern, Defn, Priority]);
@@ -482,7 +482,7 @@ action(list_policies, Node, [], Opts, Inform) ->
Inform("Listing policies", []),
display_info_list(
rpc_call(Node, rabbit_runtime_parameters, list_formatted_policies, [VHostArg]),
- rabbit_runtime_parameters:info_keys() -- [component]);
+ rabbit_runtime_parameters:info_keys_policies());
action(report, Node, _Args, _Opts, Inform) ->
Inform("Reporting server status on ~p~n~n", [erlang:universaltime()]),
diff --git a/src/rabbit_policy.erl b/src/rabbit_policy.erl
index d9ac89ee..a38834e4 100644
--- a/src/rabbit_policy.erl
+++ b/src/rabbit_policy.erl
@@ -140,7 +140,7 @@ policy_validation() ->
{<<"policy">>, fun validation/2, mandatory}].
validation(_Name, []) ->
- ok;
+ {error, "no policy provided", []};
validation(_Name, Terms) when is_list(Terms) ->
{Tags, Modules} = lists:unzip(
rabbit_registry:lookup_all(policy_validator)),
diff --git a/src/rabbit_runtime_parameters.erl b/src/rabbit_runtime_parameters.erl
index f814e0f0..e857f804 100644
--- a/src/rabbit_runtime_parameters.erl
+++ b/src/rabbit_runtime_parameters.erl
@@ -21,7 +21,8 @@
-export([parse_set/4, parse_set_policy/5, set/4, set_policy/3, clear/3,
clear_policy/2, list/0, list/1, list_strict/1, list/2, list_strict/2,
list_policies/0, list_policies/1, list_formatted/1,
- list_formatted_policies/1, lookup/3, value/3, value/4, info_keys/0]).
+ list_formatted_policies/1, lookup/3, value/3, value/4, info_keys/0,
+ info_keys_policies/0]).
%%----------------------------------------------------------------------------
@@ -60,7 +61,7 @@
%%---------------------------------------------------------------------------
--import(rabbit_misc, [pget/2, pset/3]).
+-import(rabbit_misc, [pget/2, pget/3, pset/3]).
-define(TABLE, rabbit_runtime_parameters).
@@ -89,7 +90,7 @@ parse_set_policy0(VHost, Key, Pattern, Defn, Priority) ->
set_policy(VHost, Key, pset(<<"pattern">>, list_to_binary(Pattern),
pset(<<"policy">>,
rabbit_misc:json_to_term(JSON),
- Priority)),
+ Priority)));
error ->
{error_string, "JSON decoding error"}
end.
@@ -129,6 +130,7 @@ set0(VHost, Component, Key, Term) ->
end.
mnesia_update(VHost, Component, Key, Term) ->
+rabbit_log:info("setting parameter vh ~p~n comp ~p~n key ~p~n term ~p~n~n", [VHost, Component, Key, Term]),
rabbit_misc:execute_mnesia_transaction(
fun () ->
Res = case mnesia:read(?TABLE, {VHost, Component, Key}, read) of
@@ -201,8 +203,17 @@ list_formatted(VHost) ->
[pset(value, format(pget(value, P)), P) || P <- list(VHost)].
list_formatted_policies(VHost) ->
- [proplists:delete(component, pset(value, format(pget(value, P)), P))
- || P <- list_policies(VHost)].
+ [begin
+ Key = pget(key, P),
+ Val = pget(value, P),
+ [{key, Key},
+ {pattern, pget(<<"pattern">>, Val)},
+ {definition, format(pget(<<"policy">>, Val))}] ++
+ case pget(<<"priority">>, Val) of
+ undefined -> [];
+ Priority -> [{priority, Priority}]
+ end
+ end || P <- list_policies(VHost)].
lookup(VHost, Component, Key) ->
case lookup0(VHost, Component, Key, rabbit_misc:const(not_found)) of
@@ -251,6 +262,7 @@ p(#runtime_parameters{key = {VHost, Component, Key}, value = Value}) ->
{value, Value}].
info_keys() -> [component, key, value].
+info_keys_policies() -> [key, pattern, definition, priority].
%%---------------------------------------------------------------------------