fix: disabled resources for authz/authn started after emqx reboot

This commit is contained in:
Shawn 2022-06-22 14:34:30 +08:00
parent 522d1773c9
commit defacb97df
2 changed files with 24 additions and 20 deletions

View File

@ -50,22 +50,24 @@
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
create_resource(ResourceId, Module, Config) -> create_resource(ResourceId, Module, Config) ->
{ok, _Data} = emqx_resource:create_local( Result = emqx_resource:create_local(
ResourceId, ResourceId,
?RESOURCE_GROUP, ?RESOURCE_GROUP,
Module, Module,
Config, Config,
#{} #{start_after_created => false}
). ),
start_resource_if_enabled(Result, ResourceId, Config).
update_resource(Module, Config, ResourceId) -> update_resource(Module, Config, ResourceId) ->
Opts = #{start_after_created => false}, Opts = #{start_after_created => false},
Result = emqx_resource:recreate_local(ResourceId, Module, Config, Opts), Result = emqx_resource:recreate_local(ResourceId, Module, Config, Opts),
_ = start_resource_if_enabled(Result, ResourceId, Config).
case Config of
#{enable := true} -> emqx_resource:start(ResourceId); start_resource_if_enabled({ok, _} = Result, ResourceId, #{enable := true}) ->
#{enable := false} -> ok _ = emqx_resource:start(ResourceId),
end, Result;
start_resource_if_enabled(Result, _ResourceId, _Config) ->
Result. Result.
check_password_from_selected_map(_Algorithm, _Selected, undefined) -> check_password_from_selected_map(_Algorithm, _Selected, undefined) ->

View File

@ -43,33 +43,35 @@ create_resource(Module, Config) ->
create_resource(ResourceId, Module, Config). create_resource(ResourceId, Module, Config).
create_resource(ResourceId, Module, Config) -> create_resource(ResourceId, Module, Config) ->
{ok, _Data} = emqx_resource:create_local( Result = emqx_resource:create_local(
ResourceId, ResourceId,
?RESOURCE_GROUP, ?RESOURCE_GROUP,
Module, Module,
Config, Config,
#{} #{start_after_created => false}
). ),
start_resource_if_enabled(Result, ResourceId, Config).
update_resource(Module, #{annotations := #{id := ResourceId}} = Source) -> update_resource(Module, #{annotations := #{id := ResourceId}} = Config) ->
Result = Result =
case case
emqx_resource:recreate_local( emqx_resource:recreate_local(
ResourceId, ResourceId,
Module, Module,
Source Config,
#{start_after_created => false}
) )
of of
{ok, _} -> {ok, ResourceId}; {ok, _} -> {ok, ResourceId};
{error, Reason} -> {error, Reason} {error, Reason} -> {error, Reason}
end, end,
case Source of start_resource_if_enabled(Result, ResourceId, Config).
#{enable := true} ->
Result; start_resource_if_enabled({ok, _} = Result, ResourceId, #{enable := true}) ->
#{enable := false} -> _ = emqx_resource:start(ResourceId),
ok = emqx_resource:stop(ResourceId), Result;
Result start_resource_if_enabled(Result, _ResourceId, _Config) ->
end. Result.
cleanup_resources() -> cleanup_resources() ->
lists:foreach( lists:foreach(