Merge pull request #9511 from sstrigler/EMQX-7987-move-mqtt-sys-topics-under-config
refactor: move `/mqtt/sys_topics` to generic `/configs/sys_topics`
This commit is contained in:
commit
1ddfa92119
|
@ -62,7 +62,6 @@
|
||||||
<<"event_message">>,
|
<<"event_message">>,
|
||||||
<<"prometheus">>,
|
<<"prometheus">>,
|
||||||
<<"telemetry">>,
|
<<"telemetry">>,
|
||||||
<<"sys_topics">>,
|
|
||||||
<<"listeners">>
|
<<"listeners">>
|
||||||
] ++ global_zone_roots()
|
] ++ global_zone_roots()
|
||||||
).
|
).
|
||||||
|
|
|
@ -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">>
|
|
||||||
}.
|
|
|
@ -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.
|
|
|
@ -1,4 +1,4 @@
|
||||||
# v5.0.12
|
# v5.0.13
|
||||||
|
|
||||||
## Enhancements
|
## 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).
|
- 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
|
## Bug fixes
|
||||||
|
|
|
@ -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)。
|
- 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)。
|
||||||
|
|
||||||
## 修复
|
## 修复
|
||||||
|
|
Loading…
Reference in New Issue