Merge pull request #12142 from sstrigler/EMQX-11487-e-5-4-0-mongodb-test-connection-failed

mongodb test connection failed
This commit is contained in:
Stefan Strigler 2023-12-12 09:05:04 +01:00 committed by GitHub
commit 71011ad084
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 41 additions and 57 deletions

View File

@ -26,8 +26,8 @@
bridge_v1_type_to_action_type/1, bridge_v1_type_to_action_type/1,
is_action_type/1, is_action_type/1,
registered_schema_modules/0, registered_schema_modules/0,
connector_action_config_to_bridge_v1_config/2,
connector_action_config_to_bridge_v1_config/3, connector_action_config_to_bridge_v1_config/3,
has_custom_connector_action_config_to_bridge_v1_config/1,
bridge_v1_config_to_connector_config/2, bridge_v1_config_to_connector_config/2,
has_custom_bridge_v1_config_to_connector_config/1, has_custom_bridge_v1_config_to_connector_config/1,
bridge_v1_config_to_action_config/3, bridge_v1_config_to_action_config/3,
@ -162,14 +162,24 @@ registered_schema_modules() ->
Schemas = maps:get(action_type_to_schema_module, InfoMap), Schemas = maps:get(action_type_to_schema_module, InfoMap),
maps:to_list(Schemas). maps:to_list(Schemas).
has_custom_connector_action_config_to_bridge_v1_config(ActionOrBridgeType) ->
Module = get_action_info_module(ActionOrBridgeType),
erlang:function_exported(Module, connector_action_config_to_bridge_v1_config, 2).
connector_action_config_to_bridge_v1_config(ActionOrBridgeType, ConnectorConfig, ActionConfig) -> connector_action_config_to_bridge_v1_config(ActionOrBridgeType, ConnectorConfig, ActionConfig) ->
Module = get_action_info_module(ActionOrBridgeType), Module = get_action_info_module(ActionOrBridgeType),
%% should only be called if defined case erlang:function_exported(Module, connector_action_config_to_bridge_v1_config, 2) of
Module:connector_action_config_to_bridge_v1_config(ConnectorConfig, ActionConfig). true ->
Module:connector_action_config_to_bridge_v1_config(ConnectorConfig, ActionConfig);
false ->
connector_action_config_to_bridge_v1_config(ConnectorConfig, ActionConfig)
end.
connector_action_config_to_bridge_v1_config(ConnectorConfig, ActionConfig) ->
Merged = emqx_utils_maps:deep_merge(
maps:without(
[<<"connector">>],
emqx_utils_maps:unindent(<<"parameters">>, ActionConfig)
),
emqx_utils_maps:unindent(<<"parameters">>, ConnectorConfig)
),
maps:without([<<"description">>], Merged).
has_custom_bridge_v1_config_to_connector_config(ActionOrBridgeType) -> has_custom_bridge_v1_config_to_connector_config(ActionOrBridgeType) ->
Module = get_action_info_module(ActionOrBridgeType), Module = get_action_info_module(ActionOrBridgeType),

View File

@ -913,7 +913,7 @@ format_resource(
redact( redact(
maps:merge( maps:merge(
RawConfFull#{ RawConfFull#{
type => downgrade_type(Type, RawConf), type => downgrade_type(Type, emqx_bridge_lib:get_conf(Type, BridgeName)),
name => maps:get(<<"name">>, RawConf, BridgeName), name => maps:get(<<"name">>, RawConf, BridgeName),
node => Node node => Node
}, },

View File

@ -18,7 +18,8 @@
-export([ -export([
maybe_withdraw_rule_action/3, maybe_withdraw_rule_action/3,
upgrade_type/1, upgrade_type/1,
downgrade_type/2 downgrade_type/2,
get_conf/2
]). ]).
%% @doc A bridge can be used as a rule action. %% @doc A bridge can be used as a rule action.

View File

@ -1112,40 +1112,25 @@ bridge_v1_lookup_and_transform(ActionType, Name) ->
not_bridge_v1_compatible_error() -> not_bridge_v1_compatible_error() ->
{error, not_bridge_v1_compatible}. {error, not_bridge_v1_compatible}.
connector_raw_config(Connector, ConnectorType) ->
get_raw_with_defaults(Connector, ConnectorType, <<"connectors">>, emqx_connector_schema).
action_raw_config(Action, ActionType) ->
get_raw_with_defaults(Action, ActionType, <<"actions">>, emqx_bridge_v2_schema).
get_raw_with_defaults(Config, Type, TopLevelConf, SchemaModule) ->
RawConfig = maps:get(raw_config, Config),
fill_defaults(Type, RawConfig, TopLevelConf, SchemaModule).
bridge_v1_lookup_and_transform_helper( bridge_v1_lookup_and_transform_helper(
BridgeV1Type, BridgeName, ActionType, Action, ConnectorType, Connector BridgeV1Type, BridgeName, ActionType, Action, ConnectorType, Connector
) -> ) ->
ConnectorRawConfig1 = maps:get(raw_config, Connector), ConnectorRawConfig = connector_raw_config(Connector, ConnectorType),
ConnectorRawConfig2 = fill_defaults( ActionRawConfig = action_raw_config(Action, ActionType),
ConnectorType, BridgeV1Config = emqx_action_info:connector_action_config_to_bridge_v1_config(
ConnectorRawConfig1, BridgeV1Type, ConnectorRawConfig, ActionRawConfig
<<"connectors">>,
emqx_connector_schema
), ),
ActionRawConfig1 = maps:get(raw_config, Action), BridgeV1Tmp = maps:put(raw_config, BridgeV1Config, Action),
ActionRawConfig2 = fill_defaults(
ActionType,
ActionRawConfig1,
<<"actions">>,
emqx_bridge_v2_schema
),
BridgeV1ConfigFinal =
case
emqx_action_info:has_custom_connector_action_config_to_bridge_v1_config(BridgeV1Type)
of
false ->
BridgeV1Config1 = maps:remove(<<"connector">>, ActionRawConfig2),
%% Move parameters to the top level
ParametersMap = maps:get(<<"parameters">>, BridgeV1Config1, #{}),
BridgeV1Config2 = maps:remove(<<"parameters">>, BridgeV1Config1),
BridgeV1Config3 = emqx_utils_maps:deep_merge(BridgeV1Config2, ParametersMap),
emqx_utils_maps:deep_merge(ConnectorRawConfig2, BridgeV1Config3);
true ->
emqx_action_info:connector_action_config_to_bridge_v1_config(
BridgeV1Type, ConnectorRawConfig2, ActionRawConfig2
)
end,
BridgeV1Tmp = maps:put(raw_config, BridgeV1ConfigFinal, Action),
BridgeV1 = maps:remove(status, BridgeV1Tmp), BridgeV1 = maps:remove(status, BridgeV1Tmp),
BridgeV2Status = maps:get(status, Action, undefined), BridgeV2Status = maps:get(status, Action, undefined),
BridgeV2Error = maps:get(error, Action, undefined), BridgeV2Error = maps:get(error, Action, undefined),

View File

@ -10,7 +10,6 @@
-export([ -export([
bridge_v1_config_to_action_config/2, bridge_v1_config_to_action_config/2,
bridge_v1_config_to_connector_config/1, bridge_v1_config_to_connector_config/1,
connector_action_config_to_bridge_v1_config/2,
action_type_name/0, action_type_name/0,
bridge_v1_type_name/0, bridge_v1_type_name/0,
connector_type_name/0, connector_type_name/0,
@ -26,20 +25,6 @@
-define(SCHEMA_MODULE, emqx_bridge_mongodb). -define(SCHEMA_MODULE, emqx_bridge_mongodb).
connector_action_config_to_bridge_v1_config(ConnectorConfig, ActionConfig) ->
fix_v1_type(
maps:merge(
maps:without(
[<<"connector">>],
emqx_utils_maps:unindent(<<"parameters">>, ActionConfig)
),
emqx_utils_maps:unindent(<<"parameters">>, ConnectorConfig)
)
).
fix_v1_type(#{<<"mongo_type">> := MongoType} = Conf) ->
Conf#{<<"type">> => v1_type(MongoType)}.
bridge_v1_config_to_action_config(BridgeV1Config, ConnectorName) -> bridge_v1_config_to_action_config(BridgeV1Config, ConnectorName) ->
ActionTopLevelKeys = schema_keys(mongodb_action), ActionTopLevelKeys = schema_keys(mongodb_action),
ActionParametersKeys = schema_keys(action_parameters), ActionParametersKeys = schema_keys(action_parameters),

View File

@ -129,7 +129,7 @@ fields(action) ->
{mysql, {mysql,
mk( mk(
hoconsc:map(name, ref(?MODULE, mysql_action)), hoconsc:map(name, ref(?MODULE, mysql_action)),
#{desc => <<"MySQL Action Config">>, required => false} #{desc => ?DESC("mysql_action"), required => false}
)}; )};
fields(mysql_action) -> fields(mysql_action) ->
emqx_bridge_v2_schema:make_producer_action_schema( emqx_bridge_v2_schema:make_producer_action_schema(

View File

@ -773,7 +773,6 @@ t_missing_table(Config) ->
), ),
Val = integer_to_binary(erlang:unique_integer()), Val = integer_to_binary(erlang:unique_integer()),
SentData = #{payload => Val, timestamp => 1668602148000}, SentData = #{payload => Val, timestamp => 1668602148000},
%Timeout = 1000,
ResourceID = emqx_bridge_v2:id(BridgeType, Name), ResourceID = emqx_bridge_v2:id(BridgeType, Name),
Request = {ResourceID, SentData}, Request = {ResourceID, SentData},
Result = Result =

View File

@ -345,7 +345,7 @@ indent(IndentKey, PickKeys, Map) ->
-spec unindent(term(), map()) -> map(). -spec unindent(term(), map()) -> map().
unindent(Key, Map) -> unindent(Key, Map) ->
maps:merge( deep_merge(
maps:remove(Key, Map), maps:remove(Key, Map),
maps:get(Key, Map, #{}) maps:get(Key, Map, #{})
). ).

View File

@ -170,5 +170,9 @@ map_indent_unindent_test_() ->
?_assertEqual( ?_assertEqual(
#{a => 1, b => 2}, #{a => 1, b => 2},
unindent(c, M) unindent(c, M)
),
?_assertEqual(
#{a => #{c => 3, d => 4}},
unindent(b, #{a => #{c => 3}, b => #{a => #{d => 4}}})
) )
]. ].