From 6b22a074f0e7534ee1e230f364da26e9f7380778 Mon Sep 17 00:00:00 2001 From: Stefan Strigler Date: Thu, 8 Dec 2022 13:35:53 +0100 Subject: [PATCH] refactor: move `/mqtt/sys_topics` to generic `/configs/sys_topics` --- .../src/emqx_mgmt_api_configs.erl | 1 - .../emqx_management/src/emqx_mgmt_api_sys.erl | 94 ------------------- .../test/emqx_mgmt_api_sys_SUITE.erl | 71 -------------- changes/v5.0.13-en.md | 4 +- changes/v5.0.13-zh.md | 4 +- 5 files changed, 6 insertions(+), 168 deletions(-) delete mode 100644 apps/emqx_management/src/emqx_mgmt_api_sys.erl delete mode 100644 apps/emqx_management/test/emqx_mgmt_api_sys_SUITE.erl diff --git a/apps/emqx_management/src/emqx_mgmt_api_configs.erl b/apps/emqx_management/src/emqx_mgmt_api_configs.erl index 7de5e05f6..3508431b1 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_configs.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_configs.erl @@ -62,7 +62,6 @@ <<"event_message">>, <<"prometheus">>, <<"telemetry">>, - <<"sys_topics">>, <<"listeners">> ] ++ global_zone_roots() ). diff --git a/apps/emqx_management/src/emqx_mgmt_api_sys.erl b/apps/emqx_management/src/emqx_mgmt_api_sys.erl deleted file mode 100644 index c7aeb1d95..000000000 --- a/apps/emqx_management/src/emqx_mgmt_api_sys.erl +++ /dev/null @@ -1,94 +0,0 @@ -%%-------------------------------------------------------------------- -%% Copyright (c) 2020-2022 EMQ Technologies Co., Ltd. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%%-------------------------------------------------------------------- - --module(emqx_mgmt_api_sys). - --behaviour(minirest_api). - --include_lib("emqx/include/emqx.hrl"). --include_lib("typerefl/include/types.hrl"). - -%% API --export([ - api_spec/0, - paths/0, - schema/1, - namespace/0 -]). - --export([sys/2]). - --define(TAGS, [<<"System Topics">>]). - -namespace() -> "sys". - -api_spec() -> - emqx_dashboard_swagger:spec(?MODULE, #{check_schema => true}). - -paths() -> - ["/mqtt/sys_topics"]. - -sys(get, _Params) -> - {200, emqx_conf:get_raw([sys_topics], #{})}; -sys(put, #{body := Body}) -> - {ok, _} = emqx_conf:update([sys_topics], Body, #{override_to => cluster}), - {200, emqx_conf:get_raw([sys_topics], #{})}. - -%%-------------------------------------------------------------------- -%% Swagger defines -%%-------------------------------------------------------------------- - -schema("/mqtt/sys_topics") -> - #{ - 'operationId' => sys, - get => - #{ - tags => ?TAGS, - description => <<"Get System Topics config">>, - responses => - #{ - 200 => schema_sys_topics() - } - }, - put => - #{ - tags => ?TAGS, - description => <<"Update System Topics config">>, - 'requestBody' => schema_sys_topics(), - responses => - #{ - 200 => schema_sys_topics() - } - } - }. - -schema_sys_topics() -> - emqx_dashboard_swagger:schema_with_example( - hoconsc:ref(emqx_schema, "sys_topics"), example_sys_topics() - ). - -example_sys_topics() -> - #{ - <<"sys_event_messages">> => - #{ - <<"client_connected">> => true, - <<"client_disconnected">> => true, - <<"client_subscribed">> => false, - <<"client_unsubscribed">> => false - }, - <<"sys_heartbeat_interval">> => <<"30s">>, - <<"sys_msg_interval">> => <<"1m">> - }. diff --git a/apps/emqx_management/test/emqx_mgmt_api_sys_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_api_sys_SUITE.erl deleted file mode 100644 index d577798ce..000000000 --- a/apps/emqx_management/test/emqx_mgmt_api_sys_SUITE.erl +++ /dev/null @@ -1,71 +0,0 @@ -%%-------------------------------------------------------------------- -%% Copyright (c) 2020-2022 EMQ Technologies Co., Ltd. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%%-------------------------------------------------------------------- --module(emqx_mgmt_api_sys_SUITE). - --compile(export_all). --compile(nowarn_export_all). - --include_lib("eunit/include/eunit.hrl"). - -all() -> - emqx_common_test_helpers:all(?MODULE). - -init_per_suite(Config) -> - emqx_mgmt_api_test_util:init_suite([emqx_conf]), - Config. - -end_per_suite(_) -> - emqx_mgmt_api_test_util:end_suite([emqx_conf]). - -t_get_put(_) -> - {ok, Default} = get_sys_topics_config(), - ?assertEqual( - #{ - <<"sys_event_messages">> => - #{ - <<"client_connected">> => true, - <<"client_disconnected">> => true, - <<"client_subscribed">> => false, - <<"client_unsubscribed">> => false - }, - <<"sys_heartbeat_interval">> => <<"30s">>, - <<"sys_msg_interval">> => <<"1m">> - }, - Default - ), - - NConfig = Default#{ - <<"sys_msg_interval">> => <<"4m">>, - <<"sys_event_messages">> => #{<<"client_subscribed">> => false} - }, - {ok, ConfigResp} = put_sys_topics_config(NConfig), - ?assertEqual(NConfig, ConfigResp), - {ok, Default} = put_sys_topics_config(Default). - -get_sys_topics_config() -> - Path = emqx_mgmt_api_test_util:api_path(["mqtt", "sys_topics"]), - case emqx_mgmt_api_test_util:request_api(get, Path) of - {ok, Conf0} -> {ok, emqx_json:decode(Conf0, [return_maps])}; - Error -> Error - end. - -put_sys_topics_config(Config) -> - AuthHeader = emqx_mgmt_api_test_util:auth_header_(), - Path = emqx_mgmt_api_test_util:api_path(["mqtt", "sys_topics"]), - case emqx_mgmt_api_test_util:request_api(put, Path, "", AuthHeader, Config) of - {ok, Conf0} -> {ok, emqx_json:decode(Conf0, [return_maps])}; - Error -> Error - end. diff --git a/changes/v5.0.13-en.md b/changes/v5.0.13-en.md index 5e42ea8a1..b675ec5dc 100644 --- a/changes/v5.0.13-en.md +++ b/changes/v5.0.13-en.md @@ -1,4 +1,4 @@ -# v5.0.12 +# v5.0.13 ## Enhancements @@ -6,4 +6,6 @@ - Avoid creating temporary zip files when syncing data directory during cluster startup [#9429](https://github.com/emqx/emqx/pull/9429). +- Refactor: move `/mqtt/sys_topics` to generic `/configs/sys_topics` [#9511](https://github.com/emqx/emqx/pull/9511). + ## Bug fixes diff --git a/changes/v5.0.13-zh.md b/changes/v5.0.13-zh.md index 74f4b14b1..1a766ad2b 100644 --- a/changes/v5.0.13-zh.md +++ b/changes/v5.0.13-zh.md @@ -1,4 +1,4 @@ -# v5.0.12 +# v5.0.13 ## 增强 @@ -6,4 +6,6 @@ - EMQX 集群启动时同步 data 目录不需要在磁盘上产生临时的zip文件 [#9429](https://github.com/emqx/emqx/pull/9429)。 +- 重构:删除 `/mqtt/sys_topics` 接口,用户可以使用通用的 `/configs/sys_topics` 接口来更新该配置 [#9511](https://github.com/emqx/emqx/pull/9511)。 + ## 修复