refactor: do not re-check config in post_config_update
now that the type is not lazy, it should have already been checked when reaching the post_config_update step
This commit is contained in:
parent
6aaff6211f
commit
fbc52330f3
|
@ -136,7 +136,7 @@ do_pre_config_update({move_authenticator, _ChainName, AuthenticatorID, Position}
|
||||||
) ->
|
) ->
|
||||||
ok | {ok, map()} | {error, term()}.
|
ok | {ok, map()} | {error, term()}.
|
||||||
post_config_update(_, UpdateReq, NewConfig, OldConfig, AppEnvs) ->
|
post_config_update(_, UpdateReq, NewConfig, OldConfig, AppEnvs) ->
|
||||||
do_post_config_update(UpdateReq, check_configs(to_list(NewConfig)), OldConfig, AppEnvs).
|
do_post_config_update(UpdateReq, to_list(NewConfig), OldConfig, AppEnvs).
|
||||||
|
|
||||||
do_post_config_update({create_authenticator, ChainName, Config}, NewConfig, _OldConfig, _AppEnvs) ->
|
do_post_config_update({create_authenticator, ChainName, Config}, NewConfig, _OldConfig, _AppEnvs) ->
|
||||||
NConfig = get_authenticator_config(authenticator_id(Config), NewConfig),
|
NConfig = get_authenticator_config(authenticator_id(Config), NewConfig),
|
||||||
|
@ -175,56 +175,6 @@ do_post_config_update(
|
||||||
) ->
|
) ->
|
||||||
emqx_authentication:move_authenticator(ChainName, AuthenticatorID, Position).
|
emqx_authentication:move_authenticator(ChainName, AuthenticatorID, Position).
|
||||||
|
|
||||||
check_configs(Configs) ->
|
|
||||||
Providers = emqx_authentication:get_providers(),
|
|
||||||
lists:map(fun(C) -> do_check_config(C, Providers) end, Configs).
|
|
||||||
|
|
||||||
do_check_config(Config, Providers) ->
|
|
||||||
Type = authn_type(Config),
|
|
||||||
case maps:get(Type, Providers, false) of
|
|
||||||
false ->
|
|
||||||
?SLOG(warning, #{
|
|
||||||
msg => "unknown_authn_type",
|
|
||||||
type => Type,
|
|
||||||
providers => Providers
|
|
||||||
}),
|
|
||||||
throw({unknown_authn_type, Type});
|
|
||||||
Module ->
|
|
||||||
do_check_config(Type, Config, Module)
|
|
||||||
end.
|
|
||||||
|
|
||||||
do_check_config(Type, Config, Module) ->
|
|
||||||
F =
|
|
||||||
case erlang:function_exported(Module, check_config, 1) of
|
|
||||||
true ->
|
|
||||||
fun Module:check_config/1;
|
|
||||||
false ->
|
|
||||||
fun(C) ->
|
|
||||||
Key = list_to_binary(?EMQX_AUTHENTICATION_CONFIG_ROOT_NAME),
|
|
||||||
AtomKey = list_to_atom(?EMQX_AUTHENTICATION_CONFIG_ROOT_NAME),
|
|
||||||
R = hocon_tconf:check_plain(
|
|
||||||
Module,
|
|
||||||
#{Key => C},
|
|
||||||
#{atom_key => true}
|
|
||||||
),
|
|
||||||
maps:get(AtomKey, R)
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
try
|
|
||||||
F(Config)
|
|
||||||
catch
|
|
||||||
C:E:S ->
|
|
||||||
?SLOG(warning, #{
|
|
||||||
msg => "failed_to_check_config",
|
|
||||||
config => Config,
|
|
||||||
type => Type,
|
|
||||||
exception => C,
|
|
||||||
reason => E,
|
|
||||||
stacktrace => S
|
|
||||||
}),
|
|
||||||
throw({bad_authenticator_config, #{type => Type, reason => E}})
|
|
||||||
end.
|
|
||||||
|
|
||||||
to_list(undefined) -> [];
|
to_list(undefined) -> [];
|
||||||
to_list(M) when M =:= #{} -> [];
|
to_list(M) when M =:= #{} -> [];
|
||||||
to_list(M) when is_map(M) -> [M];
|
to_list(M) when is_map(M) -> [M];
|
||||||
|
|
|
@ -35,6 +35,9 @@
|
||||||
%%------------------------------------------------------------------------------
|
%%------------------------------------------------------------------------------
|
||||||
|
|
||||||
start(_StartType, _StartArgs) ->
|
start(_StartType, _StartArgs) ->
|
||||||
|
%% required by test cases, ensure the injection of
|
||||||
|
%% EMQX_AUTHENTICATION_SCHEMA_MODULE_PT_KEY
|
||||||
|
_ = emqx_conf_schema:roots(),
|
||||||
ok = mria_rlog:wait_for_shards([?AUTH_SHARD], infinity),
|
ok = mria_rlog:wait_for_shards([?AUTH_SHARD], infinity),
|
||||||
{ok, Sup} = emqx_authn_sup:start_link(),
|
{ok, Sup} = emqx_authn_sup:start_link(),
|
||||||
case initialize() of
|
case initialize() of
|
||||||
|
@ -43,8 +46,7 @@ start(_StartType, _StartArgs) ->
|
||||||
end.
|
end.
|
||||||
|
|
||||||
stop(_State) ->
|
stop(_State) ->
|
||||||
ok = deinitialize(),
|
ok = deinitialize().
|
||||||
ok.
|
|
||||||
|
|
||||||
%%------------------------------------------------------------------------------
|
%%------------------------------------------------------------------------------
|
||||||
%% Internal functions
|
%% Internal functions
|
||||||
|
|
Loading…
Reference in New Issue