From d4476593653df4cf5982f3012eaf0176a2b99d2a Mon Sep 17 00:00:00 2001 From: Zhongwen Deng Date: Mon, 5 Sep 2022 11:29:49 +0800 Subject: [PATCH 1/4] feat: add edition info to /nodes api --- apps/emqx_machine/src/emqx_restricted_shell.erl | 5 +++-- apps/emqx_management/src/emqx_mgmt.erl | 7 +++++++ apps/emqx_management/src/emqx_mgmt_api_nodes.erl | 7 ++++++- apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl | 5 +++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/apps/emqx_machine/src/emqx_restricted_shell.erl b/apps/emqx_machine/src/emqx_restricted_shell.erl index cc475cb56..31ee16986 100644 --- a/apps/emqx_machine/src/emqx_restricted_shell.erl +++ b/apps/emqx_machine/src/emqx_restricted_shell.erl @@ -45,9 +45,10 @@ set_prompt_func() -> prompt_func(PropList) -> Line = proplists:get_value(history, PropList, 1), Version = emqx_release:version(), + Edition = emqx_release:edition(), case is_alive() of - true -> io_lib:format(<<"~ts(~s)~w> ">>, [Version, node(), Line]); - false -> io_lib:format(<<"~ts ~w> ">>, [Version, Line]) + true -> io_lib:format(<<"~ts-~ts(~s)~w> ">>, [Edition, Version, node(), Line]); + false -> io_lib:format(<<"~ts-~ts ~w> ">>, [Edition, Version, Line]) end. local_allowed(MF, Args, State) -> diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index 8f73d5767..87422697a 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -141,6 +141,7 @@ node_info() -> node_status => 'running', uptime => proplists:get_value(uptime, BrokerInfo), version => iolist_to_binary(proplists:get_value(version, BrokerInfo)), + edition => edition(), role => mria_rlog:role() }. @@ -553,3 +554,9 @@ max_row_limit() -> ?MAX_ROW_LIMIT. table_size(Tab) -> ets:info(Tab, size). + +edition() -> + case emqx_release:edition() of + ee -> <<"enterprise">>; + ce -> <<"community">> + end. diff --git a/apps/emqx_management/src/emqx_mgmt_api_nodes.erl b/apps/emqx_management/src/emqx_mgmt_api_nodes.erl index e0f0912df..50e65f581 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_nodes.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_nodes.erl @@ -215,7 +215,12 @@ fields(node_info) -> {version, mk( string(), - #{desc => <<"Release version">>, example => "5.0.0-beat.3-00000000"} + #{desc => <<"Release version">>, example => "5.0.0"} + )}, + {edition, + mk( + enum([community, enterprise]), + #{desc => <<"Release edition">>, example => "community"} )}, {sys_path, mk( diff --git a/apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl index 4fb512ed0..e1a90f6cc 100644 --- a/apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl @@ -57,6 +57,11 @@ t_nodes_api(_) -> LocalNodeInfo = hd(NodesResponse), Node = binary_to_atom(maps:get(<<"node">>, LocalNodeInfo), utf8), ?assertEqual(Node, node()), + Edition = maps:get(<<"edition">>, LocalNodeInfo), + case emqx_release:edition() of + ee -> ?assertEqual(<<"enterprise">>, Edition); + ce -> ?assertEqual(<<"community">>, Edition) + end, NodePath = emqx_mgmt_api_test_util:api_path(["nodes", atom_to_list(node())]), {ok, NodeInfo} = emqx_mgmt_api_test_util:request_api(get, NodePath), From 57cc880977ae414934b9133be8db208b33b1cd8b Mon Sep 17 00:00:00 2001 From: Zhongwen Deng Date: Mon, 5 Sep 2022 14:26:53 +0800 Subject: [PATCH 2/4] chore: change community to opensource --- apps/emqx_machine/src/emqx_machine.app.src | 2 +- apps/emqx_management/src/emqx_mgmt.erl | 2 +- apps/emqx_management/src/emqx_mgmt_api_nodes.erl | 4 ++-- apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/emqx_machine/src/emqx_machine.app.src b/apps/emqx_machine/src/emqx_machine.app.src index 59a5ad4b8..63c6c01ad 100644 --- a/apps/emqx_machine/src/emqx_machine.app.src +++ b/apps/emqx_machine/src/emqx_machine.app.src @@ -3,7 +3,7 @@ {id, "emqx_machine"}, {description, "The EMQX Machine"}, % strict semver, bump manually! - {vsn, "0.1.0"}, + {vsn, "0.1.1"}, {modules, []}, {registered, []}, {applications, [kernel, stdlib]}, diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index 87422697a..7116a8c5d 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -558,5 +558,5 @@ table_size(Tab) -> ets:info(Tab, size). edition() -> case emqx_release:edition() of ee -> <<"enterprise">>; - ce -> <<"community">> + ce -> <<"opensource">> end. diff --git a/apps/emqx_management/src/emqx_mgmt_api_nodes.erl b/apps/emqx_management/src/emqx_mgmt_api_nodes.erl index 50e65f581..c58166b1a 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_nodes.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_nodes.erl @@ -219,8 +219,8 @@ fields(node_info) -> )}, {edition, mk( - enum([community, enterprise]), - #{desc => <<"Release edition">>, example => "community"} + enum([opensource, enterprise]), + #{desc => <<"Release edition">>, example => "opensource"} )}, {sys_path, mk( diff --git a/apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl index e1a90f6cc..d031b3d09 100644 --- a/apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl @@ -60,7 +60,7 @@ t_nodes_api(_) -> Edition = maps:get(<<"edition">>, LocalNodeInfo), case emqx_release:edition() of ee -> ?assertEqual(<<"enterprise">>, Edition); - ce -> ?assertEqual(<<"community">>, Edition) + ce -> ?assertEqual(<<"opensource">>, Edition) end, NodePath = emqx_mgmt_api_test_util:api_path(["nodes", atom_to_list(node())]), From d73f22181d91d19a9c0a445ebd5ebfe0aa923c3d Mon Sep 17 00:00:00 2001 From: Zhongwen Deng Date: Mon, 5 Sep 2022 15:02:50 +0800 Subject: [PATCH 3/4] chore: fix dialyzer warning. --- apps/emqx_management/src/emqx_mgmt.erl | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index 7116a8c5d..eefee0dfc 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -19,6 +19,7 @@ -include("emqx_mgmt.hrl"). -elvis([{elvis_style, invalid_dynamic_call, disable}]). -elvis([{elvis_style, god_modules, disable}]). +-dialyzer({nowarn_function, edition/0}). -include_lib("stdlib/include/qlc.hrl"). -include_lib("emqx/include/emqx.hrl"). From 499da1ebe02d0ae6263a6eef5d2d6989cda33e7d Mon Sep 17 00:00:00 2001 From: Zhongwen Deng Date: Tue, 6 Sep 2022 15:46:18 +0800 Subject: [PATCH 4/4] chore: add emqx_release:edition_longstr() --- apps/emqx/src/emqx_release.erl | 5 +++++ apps/emqx_management/src/emqx_mgmt.erl | 9 +-------- apps/emqx_management/src/emqx_mgmt_api_nodes.erl | 4 ++-- apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl | 5 +---- 4 files changed, 9 insertions(+), 14 deletions(-) diff --git a/apps/emqx/src/emqx_release.erl b/apps/emqx/src/emqx_release.erl index 62dcd89dc..f6a3db5d0 100644 --- a/apps/emqx/src/emqx_release.erl +++ b/apps/emqx/src/emqx_release.erl @@ -18,6 +18,7 @@ -export([ edition/0, + edition_longstr/0, description/0, version/0 ]). @@ -44,8 +45,12 @@ description() -> -spec edition() -> ce | ee. -ifdef(EMQX_RELEASE_EDITION). edition() -> ?EMQX_RELEASE_EDITION. + +edition_longstr() -> <<"Enterprise">>. -else. edition() -> ce. + +edition_longstr() -> <<"Opensource">>. -endif. %% @doc Return the release version. diff --git a/apps/emqx_management/src/emqx_mgmt.erl b/apps/emqx_management/src/emqx_mgmt.erl index eefee0dfc..d1232c122 100644 --- a/apps/emqx_management/src/emqx_mgmt.erl +++ b/apps/emqx_management/src/emqx_mgmt.erl @@ -19,7 +19,6 @@ -include("emqx_mgmt.hrl"). -elvis([{elvis_style, invalid_dynamic_call, disable}]). -elvis([{elvis_style, god_modules, disable}]). --dialyzer({nowarn_function, edition/0}). -include_lib("stdlib/include/qlc.hrl"). -include_lib("emqx/include/emqx.hrl"). @@ -142,7 +141,7 @@ node_info() -> node_status => 'running', uptime => proplists:get_value(uptime, BrokerInfo), version => iolist_to_binary(proplists:get_value(version, BrokerInfo)), - edition => edition(), + edition => emqx_release:edition_longstr(), role => mria_rlog:role() }. @@ -555,9 +554,3 @@ max_row_limit() -> ?MAX_ROW_LIMIT. table_size(Tab) -> ets:info(Tab, size). - -edition() -> - case emqx_release:edition() of - ee -> <<"enterprise">>; - ce -> <<"opensource">> - end. diff --git a/apps/emqx_management/src/emqx_mgmt_api_nodes.erl b/apps/emqx_management/src/emqx_mgmt_api_nodes.erl index c58166b1a..d0d2e4b8c 100644 --- a/apps/emqx_management/src/emqx_mgmt_api_nodes.erl +++ b/apps/emqx_management/src/emqx_mgmt_api_nodes.erl @@ -219,8 +219,8 @@ fields(node_info) -> )}, {edition, mk( - enum([opensource, enterprise]), - #{desc => <<"Release edition">>, example => "opensource"} + enum(['Opensource', 'Enterprise']), + #{desc => <<"Release edition">>, example => "Opensource"} )}, {sys_path, mk( diff --git a/apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl b/apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl index d031b3d09..c2330dc48 100644 --- a/apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl +++ b/apps/emqx_management/test/emqx_mgmt_api_nodes_SUITE.erl @@ -58,10 +58,7 @@ t_nodes_api(_) -> Node = binary_to_atom(maps:get(<<"node">>, LocalNodeInfo), utf8), ?assertEqual(Node, node()), Edition = maps:get(<<"edition">>, LocalNodeInfo), - case emqx_release:edition() of - ee -> ?assertEqual(<<"enterprise">>, Edition); - ce -> ?assertEqual(<<"opensource">>, Edition) - end, + ?assertEqual(emqx_release:edition_longstr(), Edition), NodePath = emqx_mgmt_api_test_util:api_path(["nodes", atom_to_list(node())]), {ok, NodeInfo} = emqx_mgmt_api_test_util:request_api(get, NodePath),