From a2da746bf960ff5ab2bc09db7a98b0fe2f1d27a1 Mon Sep 17 00:00:00 2001 From: zhanghongtong Date: Thu, 21 Oct 2021 10:55:44 +0800 Subject: [PATCH] chore(authz): implement create_dry_run in other function clause Signed-off-by: zhanghongtong --- apps/emqx_authz/src/emqx_authz.erl | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/apps/emqx_authz/src/emqx_authz.erl b/apps/emqx_authz/src/emqx_authz.erl index 506f12945..4f704bdfc 100644 --- a/apps/emqx_authz/src/emqx_authz.erl +++ b/apps/emqx_authz/src/emqx_authz.erl @@ -101,16 +101,11 @@ do_update({?CMD_APPEND, Sources}, Conf) when is_list(Sources), is_list(Conf) -> NConf = Conf ++ Sources, ok = check_dup_types(NConf), NConf; -do_update({{?CMD_REPLACE, Type}, #{<<"enable">> := true} = Source}, - Conf) when is_map(Source), is_list(Conf), - Type =:= mongodb; - Type =:= mysql; - Type =:= postgresql; - Type =:= redis -> - {_Old, Front, Rear} = take(Type, Conf), - [NSource] = check_sources([Source]), - case emqx_resource:create_dry_run(connector_module(Type), NSource) of +do_update({{?CMD_REPLACE, Type}, #{<<"enable">> := true} = Source}, Conf) when is_map(Source), + is_list(Conf) -> + case create_dry_run(Type, Source) of ok -> + {_Old, Front, Rear} = take(Type, Conf), NConf = Front ++ [Source | Rear], ok = check_dup_types(NConf), NConf; @@ -202,6 +197,22 @@ check_dup_types([Source | Sources], Checked) -> check_dup_types(Sources, [Type | Checked]) end. +create_dry_run(T, Source) -> + case is_connector_source(T) of + true -> + [NSource] = check_sources([Source]), + emqx_resource:create_dry_run(T, NSource); + false -> + ok +end. + +is_connector_source(http) -> true; +is_connector_source(mongodb) -> true; +is_connector_source(mysql) -> true; +is_connector_source(postgresql) -> true; +is_connector_source(redis) -> true; +is_connector_source(_) -> false. + init_sources(Sources) -> {_Enabled, Disabled} = lists:partition(fun(#{enable := Enable}) -> Enable end, Sources), case Disabled =/= [] of