feat(exhook): add field `meta` for grpc proto
This commit is contained in:
parent
0297dd723e
commit
e7f5372fae
|
@ -25,5 +25,5 @@ data/
|
||||||
*.class
|
*.class
|
||||||
Mnesia.nonode@nohost/
|
Mnesia.nonode@nohost/
|
||||||
src/emqx_exhook_pb.erl
|
src/emqx_exhook_pb.erl
|
||||||
src/emqx_exhook_v_1_hook_provider_client.erl
|
src/emqx_exhook_v_*_hook_provider_client.erl
|
||||||
src/emqx_exhook_v_1_hook_provider_bhvr.erl
|
src/emqx_exhook_v_*_hook_provider_bhvr.erl
|
||||||
|
|
|
@ -22,6 +22,7 @@ option java_multiple_files = true;
|
||||||
option java_package = "io.emqx.exhook";
|
option java_package = "io.emqx.exhook";
|
||||||
option java_outer_classname = "EmqxExHookProto";
|
option java_outer_classname = "EmqxExHookProto";
|
||||||
|
|
||||||
|
// Proto package compatible, Don't need an updated version..
|
||||||
package emqx.exhook.v1;
|
package emqx.exhook.v1;
|
||||||
|
|
||||||
service HookProvider {
|
service HookProvider {
|
||||||
|
@ -76,6 +77,8 @@ service HookProvider {
|
||||||
message ProviderLoadedRequest {
|
message ProviderLoadedRequest {
|
||||||
|
|
||||||
BrokerInfo broker = 1;
|
BrokerInfo broker = 1;
|
||||||
|
|
||||||
|
RequestMeta meta = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message LoadedResponse {
|
message LoadedResponse {
|
||||||
|
@ -83,7 +86,11 @@ message LoadedResponse {
|
||||||
repeated HookSpec hooks = 1;
|
repeated HookSpec hooks = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ProviderUnloadedRequest { }
|
message ProviderUnloadedRequest {
|
||||||
|
|
||||||
|
RequestMeta meta = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
message ClientConnectRequest {
|
message ClientConnectRequest {
|
||||||
|
|
||||||
|
@ -93,6 +100,8 @@ message ClientConnectRequest {
|
||||||
//
|
//
|
||||||
// It should be empty on MQTT v3.1.1/v3.1 or others protocol
|
// It should be empty on MQTT v3.1.1/v3.1 or others protocol
|
||||||
repeated Property props = 2;
|
repeated Property props = 2;
|
||||||
|
|
||||||
|
RequestMeta meta = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ClientConnackRequest {
|
message ClientConnackRequest {
|
||||||
|
@ -102,11 +111,15 @@ message ClientConnackRequest {
|
||||||
string result_code = 2;
|
string result_code = 2;
|
||||||
|
|
||||||
repeated Property props = 3;
|
repeated Property props = 3;
|
||||||
|
|
||||||
|
RequestMeta meta = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ClientConnectedRequest {
|
message ClientConnectedRequest {
|
||||||
|
|
||||||
ClientInfo clientinfo = 1;
|
ClientInfo clientinfo = 1;
|
||||||
|
|
||||||
|
RequestMeta meta = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ClientDisconnectedRequest {
|
message ClientDisconnectedRequest {
|
||||||
|
@ -114,6 +127,8 @@ message ClientDisconnectedRequest {
|
||||||
ClientInfo clientinfo = 1;
|
ClientInfo clientinfo = 1;
|
||||||
|
|
||||||
string reason = 2;
|
string reason = 2;
|
||||||
|
|
||||||
|
RequestMeta meta = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ClientAuthenticateRequest {
|
message ClientAuthenticateRequest {
|
||||||
|
@ -121,6 +136,8 @@ message ClientAuthenticateRequest {
|
||||||
ClientInfo clientinfo = 1;
|
ClientInfo clientinfo = 1;
|
||||||
|
|
||||||
bool result = 2;
|
bool result = 2;
|
||||||
|
|
||||||
|
RequestMeta meta = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ClientCheckAclRequest {
|
message ClientCheckAclRequest {
|
||||||
|
@ -139,6 +156,8 @@ message ClientCheckAclRequest {
|
||||||
string topic = 3;
|
string topic = 3;
|
||||||
|
|
||||||
bool result = 4;
|
bool result = 4;
|
||||||
|
|
||||||
|
RequestMeta meta = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ClientSubscribeRequest {
|
message ClientSubscribeRequest {
|
||||||
|
@ -148,6 +167,8 @@ message ClientSubscribeRequest {
|
||||||
repeated Property props = 2;
|
repeated Property props = 2;
|
||||||
|
|
||||||
repeated TopicFilter topic_filters = 3;
|
repeated TopicFilter topic_filters = 3;
|
||||||
|
|
||||||
|
RequestMeta meta = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ClientUnsubscribeRequest {
|
message ClientUnsubscribeRequest {
|
||||||
|
@ -157,11 +178,15 @@ message ClientUnsubscribeRequest {
|
||||||
repeated Property props = 2;
|
repeated Property props = 2;
|
||||||
|
|
||||||
repeated TopicFilter topic_filters = 3;
|
repeated TopicFilter topic_filters = 3;
|
||||||
|
|
||||||
|
RequestMeta meta = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message SessionCreatedRequest {
|
message SessionCreatedRequest {
|
||||||
|
|
||||||
ClientInfo clientinfo = 1;
|
ClientInfo clientinfo = 1;
|
||||||
|
|
||||||
|
RequestMeta meta = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message SessionSubscribedRequest {
|
message SessionSubscribedRequest {
|
||||||
|
@ -171,6 +196,8 @@ message SessionSubscribedRequest {
|
||||||
string topic = 2;
|
string topic = 2;
|
||||||
|
|
||||||
SubOpts subopts = 3;
|
SubOpts subopts = 3;
|
||||||
|
|
||||||
|
RequestMeta meta = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message SessionUnsubscribedRequest {
|
message SessionUnsubscribedRequest {
|
||||||
|
@ -178,21 +205,29 @@ message SessionUnsubscribedRequest {
|
||||||
ClientInfo clientinfo = 1;
|
ClientInfo clientinfo = 1;
|
||||||
|
|
||||||
string topic = 2;
|
string topic = 2;
|
||||||
|
|
||||||
|
RequestMeta meta = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message SessionResumedRequest {
|
message SessionResumedRequest {
|
||||||
|
|
||||||
ClientInfo clientinfo = 1;
|
ClientInfo clientinfo = 1;
|
||||||
|
|
||||||
|
RequestMeta meta = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message SessionDiscardedRequest {
|
message SessionDiscardedRequest {
|
||||||
|
|
||||||
ClientInfo clientinfo = 1;
|
ClientInfo clientinfo = 1;
|
||||||
|
|
||||||
|
RequestMeta meta = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message SessionTakeoveredRequest {
|
message SessionTakeoveredRequest {
|
||||||
|
|
||||||
ClientInfo clientinfo = 1;
|
ClientInfo clientinfo = 1;
|
||||||
|
|
||||||
|
RequestMeta meta = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message SessionTerminatedRequest {
|
message SessionTerminatedRequest {
|
||||||
|
@ -200,11 +235,15 @@ message SessionTerminatedRequest {
|
||||||
ClientInfo clientinfo = 1;
|
ClientInfo clientinfo = 1;
|
||||||
|
|
||||||
string reason = 2;
|
string reason = 2;
|
||||||
|
|
||||||
|
RequestMeta meta = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message MessagePublishRequest {
|
message MessagePublishRequest {
|
||||||
|
|
||||||
Message message = 1;
|
Message message = 1;
|
||||||
|
|
||||||
|
RequestMeta meta = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message MessageDeliveredRequest {
|
message MessageDeliveredRequest {
|
||||||
|
@ -212,6 +251,8 @@ message MessageDeliveredRequest {
|
||||||
ClientInfo clientinfo = 1;
|
ClientInfo clientinfo = 1;
|
||||||
|
|
||||||
Message message = 2;
|
Message message = 2;
|
||||||
|
|
||||||
|
RequestMeta meta = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message MessageDroppedRequest {
|
message MessageDroppedRequest {
|
||||||
|
@ -219,6 +260,8 @@ message MessageDroppedRequest {
|
||||||
Message message = 1;
|
Message message = 1;
|
||||||
|
|
||||||
string reason = 2;
|
string reason = 2;
|
||||||
|
|
||||||
|
RequestMeta meta = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message MessageAckedRequest {
|
message MessageAckedRequest {
|
||||||
|
@ -226,6 +269,8 @@ message MessageAckedRequest {
|
||||||
ClientInfo clientinfo = 1;
|
ClientInfo clientinfo = 1;
|
||||||
|
|
||||||
Message message = 2;
|
Message message = 2;
|
||||||
|
|
||||||
|
RequestMeta meta = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
@ -405,3 +450,14 @@ message SubOpts {
|
||||||
// connection with a ClientID equal to the ClientID of the publishing
|
// connection with a ClientID equal to the ClientID of the publishing
|
||||||
uint32 nl = 5;
|
uint32 nl = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message RequestMeta {
|
||||||
|
|
||||||
|
string node = 1;
|
||||||
|
|
||||||
|
string version = 2;
|
||||||
|
|
||||||
|
string sysdescr = 3;
|
||||||
|
|
||||||
|
string cluster_name = 4;
|
||||||
|
}
|
||||||
|
|
|
@ -30,6 +30,11 @@
|
||||||
, call_fold/3
|
, call_fold/3
|
||||||
]).
|
]).
|
||||||
|
|
||||||
|
-export([request_meta/0]).
|
||||||
|
|
||||||
|
-import(emqx_exhook_handler, [stringfy/1]).
|
||||||
|
%% TODO: move util functions to an independent module
|
||||||
|
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% Mgmt APIs
|
%% Mgmt APIs
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
|
@ -116,3 +121,10 @@ deny_action_result('message.publish', Msg) ->
|
||||||
%% TODO: Not support to deny a message
|
%% TODO: Not support to deny a message
|
||||||
%% maybe we can put the 'allow_publish' into message header
|
%% maybe we can put the 'allow_publish' into message header
|
||||||
Msg.
|
Msg.
|
||||||
|
|
||||||
|
request_meta() ->
|
||||||
|
#{ node => stringfy(node())
|
||||||
|
, version => emqx_sys:version()
|
||||||
|
, sysdescr => emqx_sys:sysdescr()
|
||||||
|
, cluster_name => emqx_sys:cluster_name()
|
||||||
|
}.
|
||||||
|
|
|
@ -288,6 +288,8 @@ stringfy(Term) when is_integer(Term) ->
|
||||||
integer_to_binary(Term);
|
integer_to_binary(Term);
|
||||||
stringfy(Term) when is_atom(Term) ->
|
stringfy(Term) when is_atom(Term) ->
|
||||||
atom_to_binary(Term, utf8);
|
atom_to_binary(Term, utf8);
|
||||||
|
stringfy(Term) when is_list(Term) ->
|
||||||
|
list_to_binary(Term);
|
||||||
stringfy(Term) ->
|
stringfy(Term) ->
|
||||||
unicode:characters_to_binary((io_lib:format("~0p", [Term]))).
|
unicode:characters_to_binary((io_lib:format("~0p", [Term]))).
|
||||||
|
|
||||||
|
|
|
@ -269,23 +269,24 @@ match_topic_filter(TopicName, TopicFilter) ->
|
||||||
|
|
||||||
-spec do_call(string(), atom(), map(), map()) -> {ok, map()} | {error, term()}.
|
-spec do_call(string(), atom(), map(), map()) -> {ok, map()} | {error, term()}.
|
||||||
do_call(ChannName, Fun, Req, ReqOpts) ->
|
do_call(ChannName, Fun, Req, ReqOpts) ->
|
||||||
|
NReq = Req#{meta => emqx_exhook:request_meta()},
|
||||||
Options = ReqOpts#{channel => ChannName},
|
Options = ReqOpts#{channel => ChannName},
|
||||||
?LOG(debug, "Call ~0p:~0p(~0p, ~0p)", [?PB_CLIENT_MOD, Fun, Req, Options]),
|
?LOG(debug, "Call ~0p:~0p(~0p, ~0p)", [?PB_CLIENT_MOD, Fun, NReq, Options]),
|
||||||
case catch apply(?PB_CLIENT_MOD, Fun, [Req, Options]) of
|
case catch apply(?PB_CLIENT_MOD, Fun, [NReq, Options]) of
|
||||||
{ok, Resp, _Metadata} ->
|
{ok, Resp, _Metadata} ->
|
||||||
?LOG(debug, "Response {ok, ~0p, ~0p}", [Resp, _Metadata]),
|
?LOG(debug, "Response {ok, ~0p, ~0p}", [Resp, _Metadata]),
|
||||||
{ok, Resp};
|
{ok, Resp};
|
||||||
{error, {Code, Msg}, _Metadata} ->
|
{error, {Code, Msg}, _Metadata} ->
|
||||||
?LOG(error, "CALL ~0p:~0p(~0p, ~0p) response errcode: ~0p, errmsg: ~0p",
|
?LOG(error, "CALL ~0p:~0p(~0p, ~0p) response errcode: ~0p, errmsg: ~0p",
|
||||||
[?PB_CLIENT_MOD, Fun, Req, Options, Code, Msg]),
|
[?PB_CLIENT_MOD, Fun, NReq, Options, Code, Msg]),
|
||||||
{error, {Code, Msg}};
|
{error, {Code, Msg}};
|
||||||
{error, Reason} ->
|
{error, Reason} ->
|
||||||
?LOG(error, "CALL ~0p:~0p(~0p, ~0p) error: ~0p",
|
?LOG(error, "CALL ~0p:~0p(~0p, ~0p) error: ~0p",
|
||||||
[?PB_CLIENT_MOD, Fun, Req, Options, Reason]),
|
[?PB_CLIENT_MOD, Fun, NReq, Options, Reason]),
|
||||||
{error, Reason};
|
{error, Reason};
|
||||||
{'EXIT', {Reason, Stk}} ->
|
{'EXIT', {Reason, Stk}} ->
|
||||||
?LOG(error, "CALL ~0p:~0p(~0p, ~0p) throw an exception: ~0p, stacktrace: ~0p",
|
?LOG(error, "CALL ~0p:~0p(~0p, ~0p) throw an exception: ~0p, stacktrace: ~0p",
|
||||||
[?PB_CLIENT_MOD, Fun, Req, Options, Reason, Stk]),
|
[?PB_CLIENT_MOD, Fun, NReq, Options, Reason, Stk]),
|
||||||
{error, Reason}
|
{error, Reason}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue