fix(syskeeper): homogenize the Syskeeper bridge and update license data
This commit is contained in:
parent
548e39e799
commit
447c933ff8
|
@ -93,7 +93,8 @@
|
||||||
T == iotdb;
|
T == iotdb;
|
||||||
T == kinesis_producer;
|
T == kinesis_producer;
|
||||||
T == greptimedb;
|
T == greptimedb;
|
||||||
T == azure_event_hub_producer
|
T == azure_event_hub_producer;
|
||||||
|
T == syskeeper_forwarder
|
||||||
).
|
).
|
||||||
|
|
||||||
-define(ROOT_KEY, bridges).
|
-define(ROOT_KEY, bridges).
|
||||||
|
|
|
@ -134,10 +134,7 @@ desc(_) ->
|
||||||
schema_homogeneous_test() ->
|
schema_homogeneous_test() ->
|
||||||
case
|
case
|
||||||
lists:filtermap(
|
lists:filtermap(
|
||||||
fun
|
fun({_Name, Schema}) ->
|
||||||
({syskeeper_forwarder, _Schema}) ->
|
|
||||||
false;
|
|
||||||
({_Name, Schema}) ->
|
|
||||||
is_bad_schema(Schema)
|
is_bad_schema(Schema)
|
||||||
end,
|
end,
|
||||||
fields(actions)
|
fields(actions)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% Copyright (c) 2022 EMQ Technologies Co., Ltd. All Rights Reserved.
|
%% Copyright (c) 2023 EMQ Technologies Co., Ltd. All Rights Reserved.
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
-ifndef(EMQX_BRIDGE_SYSKEEPER).
|
-ifndef(EMQX_BRIDGE_SYSKEEPER).
|
||||||
-define(EMQX_BRIDGE_SYSKEEPER, true).
|
-define(EMQX_BRIDGE_SYSKEEPER, true).
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{application, emqx_bridge_syskeeper, [
|
{application, emqx_bridge_syskeeper, [
|
||||||
{description, "EMQX Enterprise Bridge"},
|
{description, "EMQX Enterprise Data bridge for Syskeeper"},
|
||||||
{vsn, "0.1.0"},
|
{vsn, "0.1.0"},
|
||||||
{registered, []},
|
{registered, []},
|
||||||
{applications, [
|
{applications, [
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
%% Copyright (c) 2022 EMQ Technologies Co., Ltd. All Rights Reserved.
|
%% Copyright (c) 2023 EMQ Technologies Co., Ltd. All Rights Reserved.
|
||||||
%%--------------------------------------------------------------------
|
%%--------------------------------------------------------------------
|
||||||
-module(emqx_bridge_syskeeper).
|
-module(emqx_bridge_syskeeper).
|
||||||
|
|
||||||
|
@ -59,9 +59,11 @@ values(put) ->
|
||||||
#{
|
#{
|
||||||
enable => true,
|
enable => true,
|
||||||
connector => <<"syskeeper_forwarder">>,
|
connector => <<"syskeeper_forwarder">>,
|
||||||
|
parameters => #{
|
||||||
target_topic => <<"${topic}">>,
|
target_topic => <<"${topic}">>,
|
||||||
target_qos => <<"-1">>,
|
target_qos => <<"-1">>,
|
||||||
template => <<"${payload}">>,
|
template => <<"${payload}">>
|
||||||
|
},
|
||||||
resource_opts => #{
|
resource_opts => #{
|
||||||
worker_pool_size => 16
|
worker_pool_size => 16
|
||||||
}
|
}
|
||||||
|
@ -69,7 +71,7 @@ values(put) ->
|
||||||
|
|
||||||
%% -------------------------------------------------------------------------------------------------
|
%% -------------------------------------------------------------------------------------------------
|
||||||
%% Hocon Schema Definitions
|
%% Hocon Schema Definitions
|
||||||
namespace() -> "bridge_syskeeper".
|
namespace() -> "syskeeper".
|
||||||
|
|
||||||
roots() -> [].
|
roots() -> [].
|
||||||
|
|
||||||
|
@ -81,6 +83,24 @@ fields(config) ->
|
||||||
mk(binary(), #{
|
mk(binary(), #{
|
||||||
desc => ?DESC(emqx_connector_schema, "connector_field"), required => true
|
desc => ?DESC(emqx_connector_schema, "connector_field"), required => true
|
||||||
})},
|
})},
|
||||||
|
{parameters,
|
||||||
|
mk(
|
||||||
|
ref(?MODULE, "parameters"),
|
||||||
|
#{required => true, desc => ?DESC("parameters")}
|
||||||
|
)},
|
||||||
|
{local_topic, mk(binary(), #{required => false, desc => ?DESC(mqtt_topic)})},
|
||||||
|
{resource_opts,
|
||||||
|
mk(
|
||||||
|
ref(?MODULE, "creation_opts"),
|
||||||
|
#{
|
||||||
|
required => false,
|
||||||
|
default => #{},
|
||||||
|
desc => ?DESC(emqx_resource_schema, <<"resource_opts">>)
|
||||||
|
}
|
||||||
|
)}
|
||||||
|
];
|
||||||
|
fields("parameters") ->
|
||||||
|
[
|
||||||
{target_topic,
|
{target_topic,
|
||||||
mk(
|
mk(
|
||||||
binary(),
|
binary(),
|
||||||
|
@ -95,15 +115,6 @@ fields(config) ->
|
||||||
mk(
|
mk(
|
||||||
binary(),
|
binary(),
|
||||||
#{desc => ?DESC("template"), default => <<"${payload}">>}
|
#{desc => ?DESC("template"), default => <<"${payload}">>}
|
||||||
)},
|
|
||||||
{resource_opts,
|
|
||||||
mk(
|
|
||||||
ref(?MODULE, "creation_opts"),
|
|
||||||
#{
|
|
||||||
required => false,
|
|
||||||
default => #{},
|
|
||||||
desc => ?DESC(emqx_resource_schema, <<"resource_opts">>)
|
|
||||||
}
|
|
||||||
)}
|
)}
|
||||||
];
|
];
|
||||||
fields("creation_opts") ->
|
fields("creation_opts") ->
|
||||||
|
@ -119,6 +130,8 @@ desc(config) ->
|
||||||
?DESC("desc_config");
|
?DESC("desc_config");
|
||||||
desc(Method) when Method =:= "get"; Method =:= "put"; Method =:= "post" ->
|
desc(Method) when Method =:= "get"; Method =:= "put"; Method =:= "post" ->
|
||||||
["Configuration for Syskeeper using `", string:to_upper(Method), "` method."];
|
["Configuration for Syskeeper using `", string:to_upper(Method), "` method."];
|
||||||
|
desc("parameters") ->
|
||||||
|
?DESC("parameters");
|
||||||
desc("creation_opts" = Name) ->
|
desc("creation_opts" = Name) ->
|
||||||
emqx_resource_schema:desc(Name);
|
emqx_resource_schema:desc(Name);
|
||||||
desc(_) ->
|
desc(_) ->
|
||||||
|
|
|
@ -206,11 +206,18 @@ status_result(true) -> connected;
|
||||||
status_result(false) -> connecting;
|
status_result(false) -> connecting;
|
||||||
status_result({error, _}) -> connecting.
|
status_result({error, _}) -> connecting.
|
||||||
|
|
||||||
on_add_channel(_InstanceId, #{channels := Channels} = OldState, ChannelId, #{
|
on_add_channel(
|
||||||
|
_InstanceId,
|
||||||
|
#{channels := Channels} = OldState,
|
||||||
|
ChannelId,
|
||||||
|
#{
|
||||||
|
parameters := #{
|
||||||
target_topic := TargetTopic,
|
target_topic := TargetTopic,
|
||||||
target_qos := TargetQoS,
|
target_qos := TargetQoS,
|
||||||
template := Template
|
template := Template
|
||||||
}) ->
|
}
|
||||||
|
}
|
||||||
|
) ->
|
||||||
case maps:is_key(ChannelId, Channels) of
|
case maps:is_key(ChannelId, Channels) of
|
||||||
true ->
|
true ->
|
||||||
{error, already_exists};
|
{error, already_exists};
|
||||||
|
|
|
@ -106,6 +106,11 @@ syskeeper_config(Config) ->
|
||||||
"actions.~s.~s {\n"
|
"actions.~s.~s {\n"
|
||||||
" enable = true\n"
|
" enable = true\n"
|
||||||
" connector = ~ts\n"
|
" connector = ~ts\n"
|
||||||
|
" parameters = {\n"
|
||||||
|
" target_topic = \"${topic}\"\n"
|
||||||
|
" target_qos = -1\n"
|
||||||
|
" template = \"${payload}\"\n"
|
||||||
|
" },\n"
|
||||||
" resource_opts = {\n"
|
" resource_opts = {\n"
|
||||||
" request_ttl = 500ms\n"
|
" request_ttl = 500ms\n"
|
||||||
" batch_size = ~b\n"
|
" batch_size = ~b\n"
|
||||||
|
|
|
@ -42,4 +42,15 @@ target_qos.desc:
|
||||||
target_qos.label:
|
target_qos.label:
|
||||||
"""Target QoS"""
|
"""Target QoS"""
|
||||||
|
|
||||||
|
parameters.desc:
|
||||||
|
"""Syskeeper data bridge parameters"""
|
||||||
|
|
||||||
|
parameters.label:
|
||||||
|
"""Parameters"""
|
||||||
|
|
||||||
|
mqtt_topic.desc:
|
||||||
|
"""MQTT topic or topic filter as data source (bridge input). If rule action is used as data source, this config should be left empty, otherwise messages will be duplicated in Syskeeper."""
|
||||||
|
|
||||||
|
mqtt_topic.label:
|
||||||
|
"""Source MQTT Topic"""
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue