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