summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmile Joubert <emile@rabbitmq.com>2012-09-06 17:51:47 +0100
committerEmile Joubert <emile@rabbitmq.com>2012-09-06 17:51:47 +0100
commitf6608db0967558512db0259884448f39d43fd6e1 (patch)
tree8113b383a510f7348c006ebe6f164854714fe968
parentd3cf2296e2247c15226189b00646a6b8784b7c3b (diff)
downloadrabbitmq-server-f6608db0967558512db0259884448f39d43fd6e1.tar.gz
Permit absent policy priority
-rw-r--r--src/rabbit_parameter_validation.erl2
-rw-r--r--src/rabbit_policy.erl15
2 files changed, 14 insertions, 3 deletions
diff --git a/src/rabbit_parameter_validation.erl b/src/rabbit_parameter_validation.erl
index 0247643d..d421a33d 100644
--- a/src/rabbit_parameter_validation.erl
+++ b/src/rabbit_parameter_validation.erl
@@ -55,6 +55,8 @@ proplist(Name, Constraints, Term) when is_list(Term) ->
{[{error, "Key \"~s\" not found in ~s",
[Key, Name]} | Results0], Term0};
{false, optional} ->
+ {Results0, Term0};
+ {false, {optional, _Default}} ->
{Results0, Term0}
end
end, {[], Term}, Constraints),
diff --git a/src/rabbit_policy.erl b/src/rabbit_policy.erl
index 3400a7d5..6c36df87 100644
--- a/src/rabbit_policy.erl
+++ b/src/rabbit_policy.erl
@@ -82,7 +82,7 @@ notify_clear(VHost, <<"policy">>, _Name) ->
list(VHost) ->
lists:sort(fun sort_pred/2,
- [[{<<"name">>, pget(key, P)} | pget(value, P)]
+ [[{<<"name">>, pget(key, P)} | defaults(pget(value, P))]
|| P <- rabbit_runtime_parameters:list(VHost, <<"policy">>)]).
update_policies(VHost) ->
@@ -157,7 +157,16 @@ sort_pred(A, B) ->
%%----------------------------------------------------------------------------
+defaults(Props) ->
+ Def = [{Key, Def} || {Key, _Fun, {optional, Def}} <- policy_validation()],
+ lists:foldl(fun ({Key, Default}, Props1) ->
+ case pget(Key, Props1) of
+ undefined -> [{Key, Default} | Props1];
+ _ -> Props1
+ end
+ end, Props, Def).
+
policy_validation() ->
- [{<<"priority">>, fun rabbit_parameter_validation:number/2, mandatory},
+ [{<<"priority">>, fun rabbit_parameter_validation:number/2, {optional, 0}},
{<<"pattern">>, fun rabbit_parameter_validation:regex/2, mandatory},
- {<<"policy">>, fun rabbit_parameter_validation:list/2, mandatory}].
+ {<<"policy">>, fun rabbit_parameter_validation:list/2, mandatory}].