From 229bc0ee342d3c5b36f6eb66aaea80b62de510f2 Mon Sep 17 00:00:00 2001 From: Stefan Strigler Date: Wed, 4 Oct 2023 17:34:55 +0200 Subject: [PATCH] fix: schema fixes for connector and kafka as connector --- .../src/emqx_bridge_kafka.erl | 25 ++++++++++++++++--- .../src/schema/emqx_connector_ee_schema.erl | 4 +-- .../src/schema/emqx_connector_schema.erl | 4 +-- 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/apps/emqx_bridge_kafka/src/emqx_bridge_kafka.erl b/apps/emqx_bridge_kafka/src/emqx_bridge_kafka.erl index f2803651f..e30076bfb 100644 --- a/apps/emqx_bridge_kafka/src/emqx_bridge_kafka.erl +++ b/apps/emqx_bridge_kafka/src/emqx_bridge_kafka.erl @@ -18,7 +18,8 @@ -import(hoconsc, [mk/2, enum/1, ref/2]). -export([ - conn_bridge_examples/1 + conn_bridge_examples/1, + connector_examples/1 ]). -export([ @@ -34,6 +35,18 @@ %% ------------------------------------------------------------------------------------------------- %% api +connector_examples(_Method) -> + [ + #{ + <<"kafka">> => #{ + summary => <<"Kafka Connector">>, + value => maps:merge( + #{name => <<"my_connector">>, type => <<"kafka">>}, values(common_config) + ) + } + } + ]. + conn_bridge_examples(Method) -> [ #{ @@ -150,15 +163,19 @@ namespace() -> "bridge_kafka". roots() -> ["config_consumer", "config_producer"]. fields("post_" ++ Type) -> - [type_field(), name_field() | fields("config_" ++ Type)]; + [type_field(Type), name_field() | fields("config_" ++ Type)]; fields("put_" ++ Type) -> fields("config_" ++ Type); fields("get_" ++ Type) -> emqx_bridge_schema:status_fields() ++ fields("post_" ++ Type); +fields("config_connector") -> + fields(kafka_connector); fields("config_producer") -> fields(kafka_producer); fields("config_consumer") -> fields(kafka_consumer); +fields(kafka_connector) -> + fields("config"); fields(kafka_producer) -> fields("config") ++ fields(producer_opts); fields(kafka_producer_action) -> @@ -511,7 +528,9 @@ struct_names() -> %% ------------------------------------------------------------------------------------------------- %% internal -type_field() -> +type_field("connector") -> + {type, mk(enum([kafka]), #{required => true, desc => ?DESC("desc_type")})}; +type_field(_) -> {type, %% TODO: rename `kafka' to `kafka_producer' after alias %% support is added to hocon; keeping this as just `kafka' for diff --git a/apps/emqx_connector/src/schema/emqx_connector_ee_schema.erl b/apps/emqx_connector/src/schema/emqx_connector_ee_schema.erl index d812203d5..458c696fa 100644 --- a/apps/emqx_connector/src/schema/emqx_connector_ee_schema.erl +++ b/apps/emqx_connector/src/schema/emqx_connector_ee_schema.erl @@ -49,7 +49,7 @@ examples(Method) -> end, Fun = fun(Module, Examples) -> - ConnectorExamples = erlang:apply(Module, conn_bridge_examples, [Method]), + ConnectorExamples = erlang:apply(Module, connector_examples, [Method]), lists:foldl(MergeFun, Examples, ConnectorExamples) end, lists:foldl(Fun, #{}, schema_modules()). @@ -65,7 +65,7 @@ api_schemas(Method) -> %% connector schema module. %% TODO: rename this to `kafka_producer' after alias support is added %% to hocon; keeping this as just `kafka' for backwards compatibility. - api_ref(emqx_bridge_kafka, <<"kafka">>, Method ++ "_producer") + api_ref(emqx_bridge_kafka, <<"kafka">>, Method ++ "_connector") ]. api_ref(Module, Type, Method) -> diff --git a/apps/emqx_connector/src/schema/emqx_connector_schema.erl b/apps/emqx_connector/src/schema/emqx_connector_schema.erl index f5f2afa64..b9f4f6884 100644 --- a/apps/emqx_connector/src/schema/emqx_connector_schema.erl +++ b/apps/emqx_connector/src/schema/emqx_connector_schema.erl @@ -223,8 +223,8 @@ api_schema(Method) -> Broker = [ {Type, ref(Mod, Method)} || {Type, Mod} <- [ - {<<"webhook">>, emqx_bridge_http_schema}, - {<<"mqtt">>, emqx_bridge_mqtt_schema} + %% {<<"webhook">>, emqx_bridge_http_schema}, + %% {<<"mqtt">>, emqx_bridge_mqtt_schema} ] ], EE = enterprise_api_schemas(Method),