feat(dashboard): Introduce dashboard RLOG shard
This commit is contained in:
parent
198e3c03e0
commit
b88c71b481
|
@ -19,3 +19,5 @@
|
|||
-type(mqtt_admin() :: #mqtt_admin{}).
|
||||
|
||||
-define(EMPTY_KEY(Key), ((Key == undefined) orelse (Key == <<>>))).
|
||||
|
||||
-define(DASHBOARD_SHARD, emqx_dashboard_shard).
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
|
||||
-include("emqx_dashboard.hrl").
|
||||
|
||||
-rlog_shard({?DASHBOARD_SHARD, mqtt_admin}).
|
||||
|
||||
-boot_mnesia({mnesia, [boot]}).
|
||||
-copy_mnesia({mnesia, [copy]}).
|
||||
|
||||
|
@ -78,7 +80,7 @@ start_link() ->
|
|||
-spec(add_user(binary(), binary(), binary()) -> ok | {error, any()}).
|
||||
add_user(Username, Password, Tags) when is_binary(Username), is_binary(Password) ->
|
||||
Admin = #mqtt_admin{username = Username, password = hash(Password), tags = Tags},
|
||||
return(mnesia:transaction(fun add_user_/1, [Admin])).
|
||||
return(ekka_mnesia:transaction(?DASHBOARD_SHARD, fun add_user_/1, [Admin])).
|
||||
|
||||
force_add_user(Username, Password, Tags) ->
|
||||
AddFun = fun() ->
|
||||
|
@ -86,7 +88,7 @@ force_add_user(Username, Password, Tags) ->
|
|||
password = Password,
|
||||
tags = Tags})
|
||||
end,
|
||||
case mnesia:transaction(AddFun) of
|
||||
case ekka_mnesia:transaction(?DASHBOARD_SHARD, AddFun) of
|
||||
{atomic, ok} -> ok;
|
||||
{aborted, Reason} -> {error, Reason}
|
||||
end.
|
||||
|
@ -108,11 +110,11 @@ remove_user(Username) when is_binary(Username) ->
|
|||
end,
|
||||
mnesia:delete({mqtt_admin, Username})
|
||||
end,
|
||||
return(mnesia:transaction(Trans)).
|
||||
return(ekka_mnesia:transaction(?DASHBOARD_SHARD, Trans)).
|
||||
|
||||
-spec(update_user(binary(), binary()) -> ok | {error, term()}).
|
||||
update_user(Username, Tags) when is_binary(Username) ->
|
||||
return(mnesia:transaction(fun update_user_/2, [Username, Tags])).
|
||||
return(ekka_mnesia:transaction(?DASHBOARD_SHARD, fun update_user_/2, [Username, Tags])).
|
||||
|
||||
%% @private
|
||||
update_user_(Username, Tags) ->
|
||||
|
@ -145,7 +147,7 @@ update_pwd(Username, Fun) ->
|
|||
end,
|
||||
mnesia:write(Fun(User))
|
||||
end,
|
||||
return(mnesia:transaction(Trans)).
|
||||
return(ekka_mnesia:transaction(?DASHBOARD_SHARD, Trans)).
|
||||
|
||||
|
||||
-spec(lookup_user(binary()) -> [mqtt_admin()]).
|
||||
|
@ -225,4 +227,3 @@ add_default_user(Username, Password) ->
|
|||
[] -> add_user(Username, Password, <<"administrator">>);
|
||||
_ -> ok
|
||||
end.
|
||||
|
||||
|
|
|
@ -24,8 +24,11 @@
|
|||
, stop/1
|
||||
]).
|
||||
|
||||
-include("emqx_dashboard.hrl").
|
||||
|
||||
start(_StartType, _StartArgs) ->
|
||||
{ok, Sup} = emqx_dashboard_sup:start_link(),
|
||||
ok = ekka_rlog:wait_for_shards([?DASHBOARD_SHARD], infinity),
|
||||
emqx_dashboard:start_listeners(),
|
||||
emqx_dashboard_cli:load(),
|
||||
{ok, Sup}.
|
||||
|
|
|
@ -99,7 +99,7 @@ t_rest_api(_Config) ->
|
|||
ok.
|
||||
|
||||
t_cli(_Config) ->
|
||||
[mnesia:dirty_delete({mqtt_admin, Admin}) || Admin <- mnesia:dirty_all_keys(mqtt_admin)],
|
||||
[ekka_mnesia:dirty_delete(mqtt_admin, Admin) || Admin <- mnesia:dirty_all_keys(mqtt_admin)],
|
||||
emqx_dashboard_cli:admins(["add", "username", "password"]),
|
||||
[{mqtt_admin, <<"username">>, <<Salt:4/binary, Hash/binary>>, _}] =
|
||||
emqx_dashboard_admin:lookup_user(<<"username">>),
|
||||
|
@ -160,4 +160,3 @@ api_path(Path) ->
|
|||
|
||||
json(Data) ->
|
||||
{ok, Jsx} = emqx_json:safe_decode(Data, [return_maps]), Jsx.
|
||||
|
||||
|
|
Loading…
Reference in New Issue