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;
|
end;
|
||||||
|
|
||||||
%% Restart listeners in the cluster.
|
%% Restart listeners in the cluster.
|
||||||
|
restart(#{identifier := <<"http", _/binary>>}, _Params) ->
|
||||||
|
{403, <<"http_listener_restart_unsupported">>};
|
||||||
restart(#{identifier := Identifier}, _Params) ->
|
restart(#{identifier := Identifier}, _Params) ->
|
||||||
Results = [{Node, emqx_mgmt:restart_listener(Node, Identifier)} || {Node, _Info} <- emqx_mgmt:list_nodes()],
|
Results = [{Node, emqx_mgmt:restart_listener(Node, Identifier)} || {Node, _Info} <- emqx_mgmt:list_nodes()],
|
||||||
case lists:filter(fun({_, Result}) -> Result =/= ok end, Results) of
|
case lists:filter(fun({_, Result}) -> Result =/= ok end, Results) of
|
||||||
|
|
|
@ -509,6 +509,18 @@ listeners(["stop", _Proto, ListenOn]) ->
|
||||||
end,
|
end,
|
||||||
stop_listener(emqx_listeners:find_by_listen_on(ListenOn1), ListenOn1);
|
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]) ->
|
listeners(["restart", Identifier]) ->
|
||||||
case emqx_listeners:restart_listener(Identifier) of
|
case emqx_listeners:restart_listener(Identifier) of
|
||||||
ok ->
|
ok ->
|
||||||
|
@ -661,3 +673,17 @@ listener_identifier(Protocol, ListenOn) ->
|
||||||
ID ->
|
ID ->
|
||||||
ID
|
ID
|
||||||
end.
|
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
|
-export([ start_listeners/0
|
||||||
, handle_request/2
|
, handle_request/2
|
||||||
, stop_listeners/0
|
, stop_listeners/0
|
||||||
|
, start_listener/1
|
||||||
|
, stop_listener/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
-export([init/2]).
|
-export([init/2]).
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
|
|
||||||
-export([ start_listeners/0
|
-export([ start_listeners/0
|
||||||
, stop_listeners/0
|
, stop_listeners/0
|
||||||
|
, start_listener/1
|
||||||
|
, stop_listener/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
%% for minirest
|
%% for minirest
|
||||||
|
|
Loading…
Reference in New Issue