From 886334e7b6968967b1026f15a9dc39ec9ec18fc3 Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Fri, 27 Oct 2023 18:51:20 +0200 Subject: [PATCH] fix: bridge v1 compatiblity layer enable/disable --- apps/emqx_bridge/src/emqx_bridge.erl | 16 +------------- apps/emqx_bridge/src/emqx_bridge_v2.erl | 28 ++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/apps/emqx_bridge/src/emqx_bridge.erl b/apps/emqx_bridge/src/emqx_bridge.erl index 76bf32c07..860e99403 100644 --- a/apps/emqx_bridge/src/emqx_bridge.erl +++ b/apps/emqx_bridge/src/emqx_bridge.erl @@ -353,12 +353,7 @@ disable_enable(Action, BridgeType, BridgeName) when -> case emqx_bridge_v2:is_bridge_v2_type(BridgeType) of true -> - case emqx_bridge_v2:is_valid_bridge_v1(BridgeType, BridgeName) of - true -> - do_disable_enable_bridge_v2_compatible(Action, BridgeType, BridgeName); - false -> - {error, not_bridge_v1_compatible} - end; + emqx_bridge_v2:bridge_v1_enable_disable(Action, BridgeType, BridgeName); false -> emqx_conf:update( config_key_path() ++ [BridgeType, BridgeName], @@ -367,15 +362,6 @@ disable_enable(Action, BridgeType, BridgeName) when ) end. -do_disable_enable_bridge_v2_compatible(enable, BridgeType, BridgeName) -> - BridgeV2Type = emqx_bridge_v2:bridge_v1_type_to_bridge_v2_type(BridgeType), - _ = emqx_connector:disable_enable(enable, BridgeType, BridgeName), - emqx_bridge_v2:disable_enable(enable, BridgeV2Type, BridgeName); -do_disable_enable_bridge_v2_compatible(disable, BridgeType, BridgeName) -> - BridgeV2Type = emqx_bridge_v2:bridge_v1_type_to_bridge_v2_type(BridgeType), - _ = emqx_bridge_v2:disable_enable(disable, BridgeV2Type, BridgeName), - emqx_connector:disable_enable(disable, BridgeType, BridgeName). - create(BridgeType, BridgeName, RawConf) -> ?SLOG(debug, #{ bridge_action => create, diff --git a/apps/emqx_bridge/src/emqx_bridge_v2.erl b/apps/emqx_bridge/src/emqx_bridge_v2.erl index 6c1ad2e55..ff97aeeb8 100644 --- a/apps/emqx_bridge/src/emqx_bridge_v2.erl +++ b/apps/emqx_bridge/src/emqx_bridge_v2.erl @@ -92,7 +92,8 @@ bridge_v1_create_dry_run/2, extract_connector_id_from_bridge_v2_id/1, bridge_v1_type_to_bridge_v2_type/1, - bridge_v1_id_to_connector_resource_id/1 + bridge_v1_id_to_connector_resource_id/1, + bridge_v1_enable_disable/3 ]). %%==================================================================== @@ -1214,6 +1215,31 @@ bridge_v1_id_to_connector_resource_id(BridgeId) -> <<"connector:", ConnectorType/binary, ":", ConnectorName/binary>> end. +bridge_v1_enable_disable(Action, BridgeType, BridgeName) -> + case emqx_bridge_v2:is_valid_bridge_v1(BridgeType, BridgeName) of + true -> + bridge_v1_enable_disable_helper( + Action, + BridgeType, + BridgeName, + lookup_raw_conf(BridgeType, BridgeName) + ); + false -> + {error, not_bridge_v1_compatible} + end. + +bridge_v1_enable_disable_helper(_Op, _BridgeType, _BridgeName, {error, bridge_not_found}) -> + {error, bridge_not_found}; +bridge_v1_enable_disable_helper(enable, BridgeType, BridgeName, #{connector := ConnectorName}) -> + BridgeV2Type = ?MODULE:bridge_v1_type_to_bridge_v2_type(BridgeType), + ConnectorType = ?MODULE:bridge_v2_type_to_connector_type(BridgeV2Type), + {ok, _} = emqx_connector:disable_enable(enable, ConnectorType, ConnectorName), + emqx_bridge_v2:disable_enable(enable, BridgeV2Type, BridgeName); +bridge_v1_enable_disable_helper(disable, BridgeType, BridgeName, #{connector := ConnectorName}) -> + BridgeV2Type = emqx_bridge_v2:bridge_v1_type_to_bridge_v2_type(BridgeType), + ConnectorType = ?MODULE:bridge_v2_type_to_connector_type(BridgeV2Type), + {ok, _} = emqx_bridge_v2:disable_enable(disable, BridgeV2Type, BridgeName), + emqx_connector:disable_enable(disable, ConnectorType, ConnectorName). %%==================================================================== %% Misc helper functions %%====================================================================