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) ->
{ok, _Data} = emqx_resource:create_local(
Result = emqx_resource:create_local(
ResourceId,
?RESOURCE_GROUP,
Module,
Config,
#{}
).
#{start_after_created => false}
),
start_resource_if_enabled(Result, ResourceId, Config).
update_resource(Module, Config, ResourceId) ->
Opts = #{start_after_created => false},
Result = emqx_resource:recreate_local(ResourceId, Module, Config, Opts),
_ =
case Config of
#{enable := true} -> emqx_resource:start(ResourceId);
#{enable := false} -> ok
end,
start_resource_if_enabled(Result, ResourceId, Config).
start_resource_if_enabled({ok, _} = Result, ResourceId, #{enable := true}) ->
_ = emqx_resource:start(ResourceId),
Result;
start_resource_if_enabled(Result, _ResourceId, _Config) ->
Result.
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) ->
{ok, _Data} = emqx_resource:create_local(
Result = emqx_resource:create_local(
ResourceId,
?RESOURCE_GROUP,
Module,
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 =
case
emqx_resource:recreate_local(
ResourceId,
Module,
Source
Config,
#{start_after_created => false}
)
of
{ok, _} -> {ok, ResourceId};
{error, Reason} -> {error, Reason}
end,
case Source of
#{enable := true} ->
start_resource_if_enabled(Result, ResourceId, Config).
start_resource_if_enabled({ok, _} = Result, ResourceId, #{enable := true}) ->
_ = emqx_resource:start(ResourceId),
Result;
#{enable := false} ->
ok = emqx_resource:stop(ResourceId),
Result
end.
start_resource_if_enabled(Result, _ResourceId, _Config) ->
Result.
cleanup_resources() ->
lists:foreach(