diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index 4a628d994..eb4166675 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -480,20 +480,19 @@ list_listeners(Node) when Node =:= node() -> list_listeners(Node) -> rpc_call(Node, list_listeners, [Node]). -list_listeners_by_id(Identifier) -> - listener_id_filter(Identifier, list_listeners()). +list_listeners_by_id(Id) -> + listener_id_filter(Id, list_listeners()). -get_listener(Node, Identifier) -> - case listener_id_filter(Identifier, list_listeners(Node)) of +get_listener(Node, Id) -> + case listener_id_filter(Id, list_listeners(Node)) of [] -> {error, not_found}; [Listener] -> Listener end. -listener_id_filter(Identifier, Listeners) -> - Filter = - fun({Id, _}) -> Id =:= Identifier end, +listener_id_filter(Id, Listeners) -> + Filter = fun(#{id := Id0}) -> Id0 =:= Id end, lists:filter(Filter, Listeners). -spec manage_listener(Operation :: start_listener|stop_listener|restart_listener, Param :: map()) -> diff --git a/apps/emqx_management/src/emqx_mgmt_api_listeners.erl b/apps/emqx_management/src/emqx_mgmt_api_listeners.erl index f1749b1d9..4b8e132e7 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_listeners.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_listeners.erl @@ -132,7 +132,7 @@ api_get_update_listener_by_id_on_node() -> api_manage_listeners() -> Metadata = #{ - get => #{ + post => #{ description => <<"Restart listeners on all nodes in the cluster">>, parameters => [ param_path_id(), diff --git a/apps/emqx_management/test/emqx_mgmt_api_test_util.erl b/apps/emqx_management/test/emqx_mgmt_api_test_util.erl index 0babef05a..fa924a71c 100644 --- a/apps/emqx_management/test/emqx_mgmt_api_test_util.erl +++ b/apps/emqx_management/test/emqx_mgmt_api_test_util.erl @@ -52,13 +52,23 @@ request_api(Method, Url, Auth) -> request_api(Method, Url, QueryParams, Auth) -> request_api(Method, Url, QueryParams, Auth, []). -request_api(Method, Url, QueryParams, Auth, []) -> +request_api(Method, Url, QueryParams, Auth, []) + when (Method =:= options) orelse + (Method =:= get) orelse + (Method =:= put) orelse + (Method =:= head) orelse + (Method =:= delete) orelse + (Method =:= trace) -> NewUrl = case QueryParams of "" -> Url; _ -> Url ++ "?" ++ QueryParams end, do_request_api(Method, {NewUrl, [Auth]}); -request_api(Method, Url, QueryParams, Auth, Body) -> +request_api(Method, Url, QueryParams, Auth, Body) + when (Method =:= post) orelse + (Method =:= patch) orelse + (Method =:= put) orelse + (Method =:= delete) -> NewUrl = case QueryParams of "" -> Url; _ -> Url ++ "?" ++ QueryParams diff --git a/apps/emqx_management/test/emqx_mgmt_listeners_api_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_listeners_api_SUITE.erl index 10e1def26..0dd00b38e 100644 --- a/apps/emqx_management/test/emqx_mgmt_listeners_api_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_listeners_api_SUITE.erl @@ -58,8 +58,8 @@ t_manage_listener(_) -> manage_listener(ID, "restart", true). manage_listener(ID, Operation, Running) -> - Path = emqx_mgmt_api_test_util:api_path(["listeners", ID, Operation]), - {ok, _} = emqx_mgmt_api_test_util:request_api(get, Path), + Path = emqx_mgmt_api_test_util:api_path(["listeners", ID, "operation", Operation]), + {ok, _} = emqx_mgmt_api_test_util:request_api(post, Path), timer:sleep(500), GetPath = emqx_mgmt_api_test_util:api_path(["listeners", ID]), {ok, ListenersResponse} = emqx_mgmt_api_test_util:request_api(get, GetPath), @@ -106,10 +106,8 @@ comparison_listener(Local, Response) -> ?assertEqual(maps:get(id, Local), binary_to_atom(maps:get(<<"id">>, Response))), ?assertEqual(maps:get(node, Local), binary_to_atom(maps:get(<<"node">>, Response))), ?assertEqual(maps:get(acceptors, Local), maps:get(<<"acceptors">>, Response)), - ?assertEqual(maps:get(max_conn, Local), maps:get(<<"max_conn">>, Response)), - ?assertEqual(maps:get(listen_on, Local), maps:get(<<"listen_on">>, Response)), ?assertEqual(maps:get(running, Local), maps:get(<<"running">>, Response)). -listener_stats(Listener, Stats) -> - ?assertEqual(maps:get(<<"running">>, Listener), Stats). +listener_stats(Listener, ExpectedStats) -> + ?assertEqual(ExpectedStats, maps:get(<<"running">>, Listener)).