fix: schema fixes for connector and kafka as connector

This commit is contained in:
Stefan Strigler 2023-10-04 17:34:55 +02:00 committed by Zaiming (Stone) Shi
parent 64faf32842
commit 229bc0ee34
3 changed files with 26 additions and 7 deletions

View File

@ -18,7 +18,8 @@
-import(hoconsc, [mk/2, enum/1, ref/2]). -import(hoconsc, [mk/2, enum/1, ref/2]).
-export([ -export([
conn_bridge_examples/1 conn_bridge_examples/1,
connector_examples/1
]). ]).
-export([ -export([
@ -34,6 +35,18 @@
%% ------------------------------------------------------------------------------------------------- %% -------------------------------------------------------------------------------------------------
%% api %% api
connector_examples(_Method) ->
[
#{
<<"kafka">> => #{
summary => <<"Kafka Connector">>,
value => maps:merge(
#{name => <<"my_connector">>, type => <<"kafka">>}, values(common_config)
)
}
}
].
conn_bridge_examples(Method) -> conn_bridge_examples(Method) ->
[ [
#{ #{
@ -150,15 +163,19 @@ namespace() -> "bridge_kafka".
roots() -> ["config_consumer", "config_producer"]. roots() -> ["config_consumer", "config_producer"].
fields("post_" ++ Type) -> fields("post_" ++ Type) ->
[type_field(), name_field() | fields("config_" ++ Type)]; [type_field(Type), name_field() | fields("config_" ++ Type)];
fields("put_" ++ Type) -> fields("put_" ++ Type) ->
fields("config_" ++ Type); fields("config_" ++ Type);
fields("get_" ++ Type) -> fields("get_" ++ Type) ->
emqx_bridge_schema:status_fields() ++ fields("post_" ++ Type); emqx_bridge_schema:status_fields() ++ fields("post_" ++ Type);
fields("config_connector") ->
fields(kafka_connector);
fields("config_producer") -> fields("config_producer") ->
fields(kafka_producer); fields(kafka_producer);
fields("config_consumer") -> fields("config_consumer") ->
fields(kafka_consumer); fields(kafka_consumer);
fields(kafka_connector) ->
fields("config");
fields(kafka_producer) -> fields(kafka_producer) ->
fields("config") ++ fields(producer_opts); fields("config") ++ fields(producer_opts);
fields(kafka_producer_action) -> fields(kafka_producer_action) ->
@ -511,7 +528,9 @@ struct_names() ->
%% ------------------------------------------------------------------------------------------------- %% -------------------------------------------------------------------------------------------------
%% internal %% internal
type_field() -> type_field("connector") ->
{type, mk(enum([kafka]), #{required => true, desc => ?DESC("desc_type")})};
type_field(_) ->
{type, {type,
%% TODO: rename `kafka' to `kafka_producer' after alias %% TODO: rename `kafka' to `kafka_producer' after alias
%% support is added to hocon; keeping this as just `kafka' for %% support is added to hocon; keeping this as just `kafka' for

View File

@ -49,7 +49,7 @@ examples(Method) ->
end, end,
Fun = Fun =
fun(Module, Examples) -> fun(Module, Examples) ->
ConnectorExamples = erlang:apply(Module, conn_bridge_examples, [Method]), ConnectorExamples = erlang:apply(Module, connector_examples, [Method]),
lists:foldl(MergeFun, Examples, ConnectorExamples) lists:foldl(MergeFun, Examples, ConnectorExamples)
end, end,
lists:foldl(Fun, #{}, schema_modules()). lists:foldl(Fun, #{}, schema_modules()).
@ -65,7 +65,7 @@ api_schemas(Method) ->
%% connector schema module. %% connector schema module.
%% TODO: rename this to `kafka_producer' after alias support is added %% TODO: rename this to `kafka_producer' after alias support is added
%% to hocon; keeping this as just `kafka' for backwards compatibility. %% 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) -> api_ref(Module, Type, Method) ->

View File

@ -223,8 +223,8 @@ api_schema(Method) ->
Broker = [ Broker = [
{Type, ref(Mod, Method)} {Type, ref(Mod, Method)}
|| {Type, Mod} <- [ || {Type, Mod} <- [
{<<"webhook">>, emqx_bridge_http_schema}, %% {<<"webhook">>, emqx_bridge_http_schema},
{<<"mqtt">>, emqx_bridge_mqtt_schema} %% {<<"mqtt">>, emqx_bridge_mqtt_schema}
] ]
], ],
EE = enterprise_api_schemas(Method), EE = enterprise_api_schemas(Method),