fix(exhook): fix the server config format

This commit is contained in:
JianBo He 2021-08-05 17:50:09 +08:00
parent 31d4f72d16
commit 183a65d263
7 changed files with 48 additions and 24 deletions

View File

@ -3,12 +3,14 @@
##==================================================================== ##====================================================================
exhook: { exhook: {
server.default: { servers: [
url: "http://127.0.0.1:9000" # { name: "default"
#ssl: { # url: "http://127.0.0.1:9000"
# cacertfile: "{{ platform_etc_dir }}/certs/cacert.pem" # #ssl: {
# certfile: "{{ platform_etc_dir }}/certs/cert.pem" # # cacertfile: "{{ platform_etc_dir }}/certs/cacert.pem"
# keyfile: "{{ platform_etc_dir }}/certs/key.pem" # # certfile: "{{ platform_etc_dir }}/certs/cert.pem"
#} # # keyfile: "{{ platform_etc_dir }}/certs/key.pem"
} # #}
# }
]
} }

View File

@ -65,10 +65,14 @@ stop(_State) ->
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
load_all_servers() -> load_all_servers() ->
_ = maps:map(fun(Name, Options) -> try
load_server(Name, Options) lists:foreach(fun(#{name := Name} = Options) ->
end, emqx_config:get([exhook, server])), load_server(Name, maps:remove(name, Options))
ok. end, emqx_config:get([exhook, servers]))
catch
_Class : _Reason ->
ok
end, ok.
unload_all_servers() -> unload_all_servers() ->
emqx_exhook:disable_all(). emqx_exhook:disable_all().

View File

@ -30,7 +30,7 @@ cli(["server", "list"]) ->
cli(["server", "enable", Name0]) -> cli(["server", "enable", Name0]) ->
if_enabled(fun() -> if_enabled(fun() ->
Name = list_to_atom(Name0), Name = list_to_atom(Name0),
case maps:get(Name, emqx_config:get([exhook, server]), undefined) of case find_server_options(Name) of
undefined -> undefined ->
emqx_ctl:print("not_found~n"); emqx_ctl:print("not_found~n");
Opts -> Opts ->
@ -59,6 +59,14 @@ print(ok) ->
print({error, Reason}) -> print({error, Reason}) ->
emqx_ctl:print("~p~n", [Reason]). emqx_ctl:print("~p~n", [Reason]).
find_server_options(Name) ->
Ls = emqx_config:get([exhook, servers]),
case [ E || E = #{name := N} <- Ls, N =:= Name] of
[] -> undefined;
[Options] ->
maps:remove(name, Options)
end.
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% Internal funcs %% Internal funcs
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------

View File

@ -29,13 +29,11 @@
-export([structs/0, fields/1]). -export([structs/0, fields/1]).
-export([t/1, t/3, t/4, ref/1]). -export([t/1, t/3, t/4, ref/1]).
structs() -> [server]. structs() -> [servers].
fields(server) -> fields(servers) ->
[{"$name", t(ref(server_structs))}]; [ {name, string()}
, {url, string()}
fields(server_structs) ->
[ {url, t(string(), "emqx_exhook.url", "")}
, {ssl, t(ref(ssl_conf_group))} , {ssl, t(ref(ssl_conf_group))}
]; ];

View File

@ -23,7 +23,13 @@
-include_lib("common_test/include/ct.hrl"). -include_lib("common_test/include/ct.hrl").
-define(CONF_DEFAULT, <<" -define(CONF_DEFAULT, <<"
exhook: { server.default: { url: \"http://127.0.0.1:9000\" } } exhook: {
servers: [
{ name: \"default\"
url: \"http://127.0.0.1:9000\"
}
]
}
">>). ">>).
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
@ -49,8 +55,8 @@ end_per_suite(_Cfg) ->
t_noserver_nohook(_) -> t_noserver_nohook(_) ->
emqx_exhook:disable(default), emqx_exhook:disable(default),
?assertEqual([], loaded_exhook_hookpoints()), ?assertEqual([], loaded_exhook_hookpoints()),
Opts = emqx_config:get([exhook, server, default]), [#{name := Name} = Opts] = emqx_config:get([exhook, servers]),
ok = emqx_exhook:enable(default, Opts), ok = emqx_exhook:enable(Name, Opts),
?assertNotEqual([], loaded_exhook_hookpoints()). ?assertNotEqual([], loaded_exhook_hookpoints()).
t_cli_list(_) -> t_cli_list(_) ->

View File

@ -31,7 +31,13 @@
]). ]).
-define(CONF_DEFAULT, <<" -define(CONF_DEFAULT, <<"
exhook: { server.default: { url: \"http://127.0.0.1:9000\" } } exhook: {
servers: [
{ name: \"default\"
url: \"http://127.0.0.1:9000\"
}
]
}
">>). ">>).
-define(ALL(Vars, Types, Exprs), -define(ALL(Vars, Types, Exprs),

View File

@ -267,7 +267,7 @@ relx_apps(ReleaseType) ->
, emqx_authn , emqx_authn
, emqx_authz , emqx_authz
, emqx_gateway , emqx_gateway
, {emqx_exhook, load} , emqx_exhook
, emqx_data_bridge , emqx_data_bridge
, emqx_rule_engine , emqx_rule_engine
, emqx_rule_actions , emqx_rule_actions