瀏覽代碼

feat: add edition info to /nodes api

Zhongwen Deng 3 年之前
父節點
當前提交
d447659365

+ 3 - 2
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) ->

+ 7 - 0
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.

+ 6 - 1
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(

+ 5 - 0
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),