feat(mgmt): add http listener restart support (#4301)
This commit is contained in:
parent
b400571dbb
commit
1ddb300a56
|
@ -61,6 +61,8 @@ restart(#{node := Node, identifier := Identifier}, _Params) ->
|
|||
end;
|
||||
|
||||
%% Restart listeners in the cluster.
|
||||
restart(#{identifier := <<"http", _/binary>>}, _Params) ->
|
||||
{403, <<"http_listener_restart_unsupported">>};
|
||||
restart(#{identifier := Identifier}, _Params) ->
|
||||
Results = [{Node, emqx_mgmt:restart_listener(Node, Identifier)} || {Node, _Info} <- emqx_mgmt:list_nodes()],
|
||||
case lists:filter(fun({_, Result}) -> Result =/= ok end, Results) of
|
||||
|
|
|
@ -509,6 +509,18 @@ listeners(["stop", _Proto, ListenOn]) ->
|
|||
end,
|
||||
stop_listener(emqx_listeners:find_by_listen_on(ListenOn1), ListenOn1);
|
||||
|
||||
listeners(["restart", "http:management"]) ->
|
||||
restart_http_listener(http, emqx_management);
|
||||
|
||||
listeners(["restart", "https:management"]) ->
|
||||
restart_http_listener(https, emqx_management);
|
||||
|
||||
listeners(["restart", "http:dashboard"]) ->
|
||||
restart_http_listener(http, emqx_dashboard);
|
||||
|
||||
listeners(["restart", "https:dashboard"]) ->
|
||||
restart_http_listener(https, emqx_dashboard);
|
||||
|
||||
listeners(["restart", Identifier]) ->
|
||||
case emqx_listeners:restart_listener(Identifier) of
|
||||
ok ->
|
||||
|
@ -661,3 +673,17 @@ listener_identifier(Protocol, ListenOn) ->
|
|||
ID ->
|
||||
ID
|
||||
end.
|
||||
|
||||
restart_http_listener(Scheme, AppName) ->
|
||||
Listeners = application:get_env(AppName, listeners, []),
|
||||
case lists:keyfind(Scheme, 1, Listeners) of
|
||||
false ->
|
||||
emqx_ctl:print("Listener ~s not exists!~n", [AppName]);
|
||||
{Scheme, Port, Options} ->
|
||||
ModName = http_mod_name(AppName),
|
||||
ModName:stop_listener({Scheme, Port, Options}),
|
||||
ModName:start_listener({Scheme, Port, Options})
|
||||
end.
|
||||
|
||||
http_mod_name(emqx_management) -> emqx_mgmt_http;
|
||||
http_mod_name(Name) -> Name.
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
-export([ start_listeners/0
|
||||
, handle_request/2
|
||||
, stop_listeners/0
|
||||
, start_listener/1
|
||||
, stop_listener/1
|
||||
]).
|
||||
|
||||
-export([init/2]).
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
|
||||
-export([ start_listeners/0
|
||||
, stop_listeners/0
|
||||
, start_listener/1
|
||||
, stop_listener/1
|
||||
]).
|
||||
|
||||
%% for minirest
|
||||
|
|
Loading…
Reference in New Issue