Browse Source

refactor(emqx_telemetry): Decorate remote procedure calls

k32 4 years ago
parent
commit
8570df075c

+ 1 - 1
apps/emqx_modules/src/emqx_telemetry.erl

@@ -256,7 +256,7 @@ uptime() ->
 nodes_uuid() ->
     Nodes = lists:delete(node(), mria_mnesia:running_nodes()),
     lists:foldl(fun(Node, Acc) ->
-                    case emqx_modules_proto_v1:get_uuid(Node) of
+                    case emqx_telemetry_proto_v1:get_uuid(Node) of
                         {badrpc, _Reason} ->
                             Acc;
                         {ok, UUID} ->

+ 6 - 11
apps/emqx_modules/src/emqx_telemetry_api.erl

@@ -153,15 +153,10 @@ enable_telemetry(Enable) ->
         enable_telemetry(Node, Enable)
     end, mria_mnesia:running_nodes()).
 
-enable_telemetry(Node, Enable) when Node =:= node() ->
-    case Enable of
-        true ->
-            emqx_telemetry:enable();
-        false ->
-            emqx_telemetry:disable()
-    end;
-enable_telemetry(Node, Enable) ->
-    rpc_call(Node, ?MODULE, enable_telemetry, [Node, Enable]).
+enable_telemetry(Node, true) ->
+    is_ok(emqx_telemetry_proto_v1:enable_telemetry(Node));
+enable_telemetry(Node, false) ->
+    is_ok(emqx_telemetry_proto_v1:disable_telemetry(Node)).
 
 get_telemetry_status() ->
     #{enabled => emqx_telemetry:get_status()}.
@@ -170,8 +165,8 @@ get_telemetry_data() ->
     {ok, TelemetryData} = emqx_telemetry:get_telemetry(),
     TelemetryData.
 
-rpc_call(Node, Module, Fun, Args) ->
-    case rpc:call(Node, Module, Fun, Args) of
+is_ok(Result) ->
+    case Result of
         {badrpc, Reason} -> {error, Reason};
         Result -> Result
     end.

+ 11 - 1
apps/emqx_modules/src/proto/emqx_modules_proto_v1.erl

@@ -14,13 +14,15 @@
 %% limitations under the License.
 %%--------------------------------------------------------------------
 
--module(emqx_modules_proto_v1).
+-module(emqx_telemetry_proto_v1).
 
 -behaviour(emqx_bpapi).
 
 -export([ introduced_in/0
 
         , get_uuid/1
+        , enable_telemetry/1
+        , disable_telemetry/1
         ]).
 
 -include_lib("emqx/include/bpapi.hrl").
@@ -31,3 +33,11 @@ introduced_in() ->
 -spec get_uuid(node()) -> {ok, binary()} | emqx_rpc:badrpc().
 get_uuid(Node) ->
     rpc:call(Node, emqx_telemetry, get_uuid, []).
+
+-spec enable_telemetry(node()) -> _.
+enable_telemetry(Node) ->
+    rpc:call(Node, emqx_telemetry, enable, []).
+
+-spec disable_telemetry(node()) -> _.
+disable_telemetry(Node) ->
+    rpc:call(Node, emqx_telemetry, disable, []).

+ 4 - 2
apps/emqx_modules/test/emqx_telemetry_SUITE.erl

@@ -43,11 +43,13 @@ t_uuid(_) ->
     {ok, UUID2} = emqx_telemetry:get_uuid(),
     emqx_telemetry:disable(),
     emqx_telemetry:enable(),
+    emqx_telemetry_proto_v1:disable_telemetry(node()),
+    emqx_telemetry_proto_v1:enable_telemetry(node()),
     {ok, UUID3} = emqx_telemetry:get_uuid(),
-    {ok, UUID4} = emqx_modules_proto_v1:get_uuid(node()),
+    {ok, UUID4} = emqx_telemetry_proto_v1:get_uuid(node()),
     ?assertEqual(UUID2, UUID3),
     ?assertEqual(UUID3, UUID4),
-    ?assertMatch({badrpc, nodedown}, emqx_modules_proto_v1:get_uuid('fake@node')).
+    ?assertMatch({badrpc, nodedown}, emqx_telemetry_proto_v1:get_uuid('fake@node')).
 
 t_official_version(_) ->
     true = emqx_telemetry:official_version("0.0.0"),