Merge pull request #3007 from rabbitmq/mk-policy-event-formatting

Convert policy event keys to atoms
This commit is contained in:
Michael Klishin 2021-04-28 13:10:04 +03:00 committed by GitHub
commit 80d35fdaf3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 3 deletions

View File

@ -350,12 +350,14 @@ validate(_VHost, <<"operator_policy">>, Name, Term, _User) ->
rabbit_parameter_validation:proplist(
Name, operator_policy_validation(), Term).
notify(VHost, <<"policy">>, Name, Term, ActingUser) ->
notify(VHost, <<"policy">>, Name, Term0, ActingUser) ->
update_policies(VHost),
Term = rabbit_data_coercion:atomize_keys(Term0),
rabbit_event:notify(policy_set, [{name, Name}, {vhost, VHost},
{user_who_performed_action, ActingUser} | Term]);
notify(VHost, <<"operator_policy">>, Name, Term, ActingUser) ->
notify(VHost, <<"operator_policy">>, Name, Term0, ActingUser) ->
update_policies(VHost),
Term = rabbit_data_coercion:atomize_keys(Term0),
rabbit_event:notify(policy_set, [{name, Name}, {vhost, VHost},
{user_who_performed_action, ActingUser} | Term]).

View File

@ -8,7 +8,7 @@
-module(rabbit_data_coercion).
-export([to_binary/1, to_list/1, to_atom/1, to_integer/1, to_proplist/1, to_map/1]).
-export([to_atom/2]).
-export([to_atom/2, atomize_keys/1]).
-spec to_binary(Val :: binary() | list() | atom() | integer()) -> binary().
to_binary(Val) when is_list(Val) -> list_to_binary(Val);
@ -45,3 +45,10 @@ to_proplist(Val) when is_map(Val) -> maps:to_list(Val).
-spec to_map(Val :: map() | list()) -> map().
to_map(Val) when is_map(Val) -> Val;
to_map(Val) when is_list(Val) -> maps:from_list(Val).
-spec atomize_keys(Val :: map() | list()) -> map() | list().
atomize_keys(Val) when is_list(Val) ->
[{to_atom(K), V} || {K, V} <- Val];
atomize_keys(Val) when is_map(Val) ->
maps:from_list(atomize_keys(maps:to_list(Val))).

View File

@ -33,6 +33,8 @@ groups() ->
data_coercion_to_proplist,
data_coercion_to_list,
data_coercion_to_map,
data_coercion_atomize_keys_proplist,
data_coercion_atomize_keys_map,
pget,
encrypt_decrypt,
encrypt_decrypt_term,
@ -299,6 +301,16 @@ data_coercion_to_proplist(_Config) ->
?assertEqual([{a, 1}], rabbit_data_coercion:to_proplist([{a, 1}])),
?assertEqual([{a, 1}], rabbit_data_coercion:to_proplist(#{a => 1})).
data_coercion_atomize_keys_map(_Config) ->
A = #{a => 1, b => 2, c => 3},
B = rabbit_data_coercion:atomize_keys(#{a => 1, "b" => 2, <<"c">> => 3}),
?assertEqual(A, B).
data_coercion_atomize_keys_proplist(_Config) ->
A = [{a, 1}, {b, 2}, {c, 3}],
B = rabbit_data_coercion:atomize_keys([{a, 1}, {"b", 2}, {<<"c">>, 3}]),
?assertEqual(lists:usort(A), lists:usort(B)).
data_coercion_to_list(_Config) ->
?assertEqual([{a, 1}], rabbit_data_coercion:to_list([{a, 1}])),
?assertEqual([{a, 1}], rabbit_data_coercion:to_list(#{a => 1})).