From 9a0fdc4b1101f0c8ede1f2ee268a4f7e748941de Mon Sep 17 00:00:00 2001
From: Shawn <506895667@qq.com>
Date: Fri, 10 Jun 2022 23:06:20 +0800
Subject: [PATCH] feat: support configure connector configs directly in bridges
---
apps/emqx_bridge/i18n/emqx_bridge_api.conf | 8 ++++----
apps/emqx_bridge/i18n/emqx_bridge_schema.conf | 5 +++--
apps/emqx_bridge/src/emqx_bridge_mqtt_schema.erl | 7 +++++--
apps/emqx_bridge/src/emqx_bridge_schema.erl | 6 +++---
4 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/apps/emqx_bridge/i18n/emqx_bridge_api.conf b/apps/emqx_bridge/i18n/emqx_bridge_api.conf
index ed71a9ba6..e8bb2403a 100644
--- a/apps/emqx_bridge/i18n/emqx_bridge_api.conf
+++ b/apps/emqx_bridge/i18n/emqx_bridge_api.conf
@@ -24,12 +24,12 @@ emqx_bridge_api {
desc_param_path_node {
desc {
- en: """The bridge Id. Must be of format {type}:{name}"""
- zh: """Bridge ID , 格式为 {type}:{name}"""
+ en: """The node name, e.g. emqx@127.0.0.1"""
+ zh: """节点名,比如 emqx@127.0.0.1"""
}
label: {
- en: "Bridge ID"
- zh: "Bridge ID"
+ en: "The node name"
+ zh: "节点名"
}
}
diff --git a/apps/emqx_bridge/i18n/emqx_bridge_schema.conf b/apps/emqx_bridge/i18n/emqx_bridge_schema.conf
index ff7239cef..b1a8e56f9 100644
--- a/apps/emqx_bridge/i18n/emqx_bridge_schema.conf
+++ b/apps/emqx_bridge/i18n/emqx_bridge_schema.conf
@@ -14,12 +14,13 @@ emqx_bridge_schema {
desc_connector {
desc {
en: """
-The connector ID to be used for this bridge. Connector IDs must be of format:
+The ID or the configs of the connector to be used for this bridge. Connector IDs must be of format:
{type}:{name}
.
In config files, you can find the corresponding config entry for a connector by such path:
'connectors.{type}.{name}'.
"""
- zh: """Bridge 使用的 Connector 的 ID。Connector ID 的格式必须为:{type}:{name}
.
+ zh: """
+Bridge 使用的 Connector 的 ID 或者配置。Connector ID 的格式必须为:{type}:{name}
.
在配置文件中,您可以通过以下路径找到 Connector 的相应配置条目:'connector.{type}.{name}'。"""
}
label: {
diff --git a/apps/emqx_bridge/src/emqx_bridge_mqtt_schema.erl b/apps/emqx_bridge/src/emqx_bridge_mqtt_schema.erl
index 15e24024a..9fc06ec0e 100644
--- a/apps/emqx_bridge/src/emqx_bridge_mqtt_schema.erl
+++ b/apps/emqx_bridge/src/emqx_bridge_mqtt_schema.erl
@@ -13,11 +13,11 @@ roots() -> [].
fields("ingress") ->
[emqx_bridge_schema:direction_field(ingress, emqx_connector_mqtt_schema:ingress_desc())] ++
- emqx_bridge_schema:common_bridge_fields() ++
+ emqx_bridge_schema:common_bridge_fields(mqtt_connector_ref()) ++
proplists:delete(hookpoint, emqx_connector_mqtt_schema:fields("ingress"));
fields("egress") ->
[emqx_bridge_schema:direction_field(egress, emqx_connector_mqtt_schema:egress_desc())] ++
- emqx_bridge_schema:common_bridge_fields() ++
+ emqx_bridge_schema:common_bridge_fields(mqtt_connector_ref()) ++
emqx_connector_mqtt_schema:fields("egress");
fields("post_ingress") ->
[
@@ -63,3 +63,6 @@ name_field() ->
desc => ?DESC("desc_name")
}
)}.
+
+mqtt_connector_ref() ->
+ ?R_REF(emqx_connector_mqtt_schema, "connector").
diff --git a/apps/emqx_bridge/src/emqx_bridge_schema.erl b/apps/emqx_bridge/src/emqx_bridge_schema.erl
index 584c67b85..d512df323 100644
--- a/apps/emqx_bridge/src/emqx_bridge_schema.erl
+++ b/apps/emqx_bridge/src/emqx_bridge_schema.erl
@@ -14,7 +14,7 @@
]).
-export([
- common_bridge_fields/0,
+ common_bridge_fields/1,
metrics_status_fields/0,
direction_field/2
]).
@@ -50,7 +50,7 @@ http_schema(Method) ->
| Schemas
]).
-common_bridge_fields() ->
+common_bridge_fields(ConnectorRef) ->
[
{enable,
mk(
@@ -62,7 +62,7 @@ common_bridge_fields() ->
)},
{connector,
mk(
- binary(),
+ hoconsc:union([binary(), ConnectorRef]),
#{
required => true,
example => <<"mqtt:my_mqtt_connector">>,