Explorar o código

refactor: mongo_type and redis_type are not mandatory

the connector schemas are shared between authn, auth and bridges,
the difference is that authn and authz configs are unions like:

[
    {mongo_type = rs,
     ...
    }
    {another backend config}
]

however the brdige types are maps like, for example:

mongodb_rs.$name {
    mongo_type = rs
    ...
}

in which case, the mongo_type is not required.

in order to keep the schema static as much as possible,
this field is chanegd to 'required => false' with a default value.

However, for authn and authz, the union selector will still raise
exception if the there is no type provided.
Zaiming (Stone) Shi %!s(int64=3) %!d(string=hai) anos
pai
achega
0697c692ed

+ 9 - 9
apps/emqx_connector/i18n/emqx_connector_mongo.conf

@@ -2,34 +2,34 @@ emqx_connector_mongo {
 
     single_mongo_type {
         desc {
-          en: "Standalone instance."
-          zh: "Standalone模式。"
+          en: "Standalone instance. Must be set to 'single' when MongoDB server is running in standalone mode."
+          zh: "Standalone 模式。当 MongoDB 服务运行在 standalone 模式下,该配置必须设置为 'single'。 "
         }
         label: {
               en: "Standalone instance"
-              zh: "Standalone模式"
+              zh: "Standalone 模式"
             }
     }
 
     rs_mongo_type {
         desc {
-          en: "Replica set."
-          zh: "Replica set模式。"
+          en: "Replica set. Must be set to 'rs' when MongoDB server is running in 'replica set' mode."
+          zh: "Replica set模式。当 MongoDB 服务运行在 replica-set 模式下,该配置必须设置为 'rs'。"
         }
         label: {
               en: "Replica set"
-              zh: "Replica set模式"
+              zh: "Replica set 模式"
             }
     }
 
     sharded_mongo_type {
         desc {
-          en: "Sharded cluster."
-          zh: "Sharded cluster模式。"
+          en: "Sharded cluster. Must be set to 'sharded' when MongoDB server is running in 'sharded' mode."
+          zh: "Sharded cluster模式。当 MongoDB 服务运行在 sharded 模式下,该配置必须设置为 'sharded'。"
         }
         label: {
               en: "Sharded cluster"
-              zh: "Sharded cluster模式"
+              zh: "Sharded cluster 模式"
             }
     }
 

+ 6 - 6
apps/emqx_connector/i18n/emqx_connector_redis.conf

@@ -2,8 +2,8 @@ emqx_connector_redis {
 
     single {
         desc {
-          en: "Single mode"
-          zh: "单机模式。"
+          en: "Single mode. Must be set to 'single' when Redis server is running in single mode."
+          zh: "单机模式。当 Redis 服务运行在单机模式下,该配置必须设置为 'single'。"
         }
         label: {
               en: "Single Mode"
@@ -13,8 +13,8 @@ emqx_connector_redis {
 
     cluster {
         desc {
-          en: "Cluster mode"
-          zh: "集群模式。"
+          en: "Cluster mode. Must be set to 'cluster' when Redis server is running in clustered mode."
+          zh: "集群模式。当 Redis 服务运行在集群模式下,该配置必须设置为 'cluster'。"
         }
         label: {
               en: "Cluster Mode"
@@ -24,8 +24,8 @@ emqx_connector_redis {
 
     sentinel {
         desc {
-          en: "Sentinel mode"
-          zh: "哨兵模式。"
+          en: "Sentinel mode. Must be set to 'sentinel' when Redis server is running in sentinel mode."
+          zh: "哨兵模式。当 Redis 服务运行在哨兵模式下,该配置必须设置为 'sentinel'。"
         }
         label: {
               en: "Sentinel Mode"

+ 3 - 3
apps/emqx_connector/src/emqx_connector_mongo.erl

@@ -67,7 +67,7 @@ fields(single) ->
     [
         {mongo_type, #{
             type => single,
-            required => true,
+            default => single,
             desc => ?DESC("single_mongo_type")
         }},
         {server, server()},
@@ -77,7 +77,7 @@ fields(rs) ->
     [
         {mongo_type, #{
             type => rs,
-            required => true,
+            default => rs,
             desc => ?DESC("rs_mongo_type")
         }},
         {servers, servers()},
@@ -89,7 +89,7 @@ fields(sharded) ->
     [
         {mongo_type, #{
             type => sharded,
-            required => true,
+            default => sharded,
             desc => ?DESC("sharded_mongo_type")
         }},
         {servers, servers()},

+ 6 - 3
apps/emqx_connector/src/emqx_connector_redis.erl

@@ -63,7 +63,8 @@ fields(single) ->
         {server, server()},
         {redis_type, #{
             type => single,
-            required => true,
+            default => single,
+            required => false,
             desc => ?DESC("single")
         }}
     ] ++
@@ -74,7 +75,8 @@ fields(cluster) ->
         {servers, servers()},
         {redis_type, #{
             type => cluster,
-            required => true,
+            default => cluster,
+            required => false,
             desc => ?DESC("cluster")
         }}
     ] ++
@@ -85,7 +87,8 @@ fields(sentinel) ->
         {servers, servers()},
         {redis_type, #{
             type => sentinel,
-            required => true,
+            default => sentinel,
+            required => false,
             desc => ?DESC("sentinel")
         }},
         {sentinel, #{

+ 0 - 3
lib-ee/emqx_ee_bridge/test/emqx_ee_bridge_mongodb_SUITE.erl

@@ -151,7 +151,6 @@ mongo_config(MongoHost, MongoPort0, rs = Type) ->
             "  servers = [~p]\n"
             "  w_mode = safe\n"
             "  database = mqtt\n"
-            "  mongo_type = rs\n"
             "}",
             [Name, Servers]
         ),
@@ -168,7 +167,6 @@ mongo_config(MongoHost, MongoPort0, sharded = Type) ->
             "  servers = [~p]\n"
             "  w_mode = safe\n"
             "  database = mqtt\n"
-            "  mongo_type = sharded\n"
             "}",
             [Name, Servers]
         ),
@@ -185,7 +183,6 @@ mongo_config(MongoHost, MongoPort0, single = Type) ->
             "  server = ~p\n"
             "  w_mode = safe\n"
             "  database = mqtt\n"
-            "  mongo_type = single\n"
             "}",
             [Name, Server]
         ),