refactor(bridge_v2): prefix compatibility functions with bridge_v1
This commit is contained in:
parent
729e7df0d5
commit
99031f0dae
|
@ -307,7 +307,7 @@ list() ->
|
||||||
emqx:get_raw_config([bridges], #{})
|
emqx:get_raw_config([bridges], #{})
|
||||||
),
|
),
|
||||||
BridgeV2Bridges =
|
BridgeV2Bridges =
|
||||||
emqx_bridge_v2:list_and_transform_to_bridge_v1(),
|
emqx_bridge_v2:bridge_v1_list_and_transform(),
|
||||||
BridgeV1Bridges ++ BridgeV2Bridges.
|
BridgeV1Bridges ++ BridgeV2Bridges.
|
||||||
%%BridgeV2Bridges = emqx_bridge_v2:list().
|
%%BridgeV2Bridges = emqx_bridge_v2:list().
|
||||||
|
|
||||||
|
@ -318,7 +318,7 @@ lookup(Id) ->
|
||||||
lookup(Type, Name) ->
|
lookup(Type, Name) ->
|
||||||
case emqx_bridge_v2:is_bridge_v2_type(Type) of
|
case emqx_bridge_v2:is_bridge_v2_type(Type) of
|
||||||
true ->
|
true ->
|
||||||
emqx_bridge_v2:lookup_and_transform_to_bridge_v1(Type, Name);
|
emqx_bridge_v2:bridge_v1_lookup_and_transform(Type, Name);
|
||||||
false ->
|
false ->
|
||||||
RawConf = emqx:get_raw_config([bridges, Type, Name], #{}),
|
RawConf = emqx:get_raw_config([bridges, Type, Name], #{}),
|
||||||
lookup(Type, Name, RawConf)
|
lookup(Type, Name, RawConf)
|
||||||
|
@ -340,7 +340,7 @@ lookup(Type, Name, RawConf) ->
|
||||||
get_metrics(Type, Name) ->
|
get_metrics(Type, Name) ->
|
||||||
case emqx_bridge_v2:is_bridge_v2_type(Type) of
|
case emqx_bridge_v2:is_bridge_v2_type(Type) of
|
||||||
true ->
|
true ->
|
||||||
case emqx_bridge_v2:is_valid_bridge_v1(Type, Name) of
|
case emqx_bridge_v2:bridge_v1_is_valid(Type, Name) of
|
||||||
true ->
|
true ->
|
||||||
BridgeV2Type = emqx_bridge_v2:bridge_v2_type_to_connector_type(Type),
|
BridgeV2Type = emqx_bridge_v2:bridge_v2_type_to_connector_type(Type),
|
||||||
emqx_bridge_v2:get_metrics(BridgeV2Type, Name);
|
emqx_bridge_v2:get_metrics(BridgeV2Type, Name);
|
||||||
|
@ -383,7 +383,7 @@ create(BridgeType0, BridgeName, RawConf) ->
|
||||||
}),
|
}),
|
||||||
case emqx_bridge_v2:is_bridge_v2_type(BridgeType) of
|
case emqx_bridge_v2:is_bridge_v2_type(BridgeType) of
|
||||||
true ->
|
true ->
|
||||||
emqx_bridge_v2:split_bridge_v1_config_and_create(BridgeType, BridgeName, RawConf);
|
emqx_bridge_v2:bridge_v1_split_config_and_create(BridgeType, BridgeName, RawConf);
|
||||||
false ->
|
false ->
|
||||||
emqx_conf:update(
|
emqx_conf:update(
|
||||||
emqx_bridge:config_key_path() ++ [BridgeType, BridgeName],
|
emqx_bridge:config_key_path() ++ [BridgeType, BridgeName],
|
||||||
|
|
|
@ -627,7 +627,7 @@ create_bridge(BridgeType, BridgeName, Conf) ->
|
||||||
update_bridge(BridgeType, BridgeName, Conf) ->
|
update_bridge(BridgeType, BridgeName, Conf) ->
|
||||||
case emqx_bridge_v2:is_bridge_v2_type(BridgeType) of
|
case emqx_bridge_v2:is_bridge_v2_type(BridgeType) of
|
||||||
true ->
|
true ->
|
||||||
case emqx_bridge_v2:is_valid_bridge_v1(BridgeType, BridgeName) of
|
case emqx_bridge_v2:bridge_v1_is_valid(BridgeType, BridgeName) of
|
||||||
true ->
|
true ->
|
||||||
create_or_update_bridge(BridgeType, BridgeName, Conf, 200);
|
create_or_update_bridge(BridgeType, BridgeName, Conf, 200);
|
||||||
false ->
|
false ->
|
||||||
|
|
|
@ -130,7 +130,7 @@ reset_metrics(ResourceId) ->
|
||||||
false ->
|
false ->
|
||||||
emqx_resource:reset_metrics(ResourceId);
|
emqx_resource:reset_metrics(ResourceId);
|
||||||
true ->
|
true ->
|
||||||
case emqx_bridge_v2:is_valid_bridge_v1(Type, Name) of
|
case emqx_bridge_v2:bridge_v1_is_valid(Type, Name) of
|
||||||
true ->
|
true ->
|
||||||
BridgeV2Type = emqx_bridge_v2:bridge_v2_type_to_connector_type(Type),
|
BridgeV2Type = emqx_bridge_v2:bridge_v2_type_to_connector_type(Type),
|
||||||
emqx_bridge_v2:reset_metrics(BridgeV2Type, Name);
|
emqx_bridge_v2:reset_metrics(BridgeV2Type, Name);
|
||||||
|
|
|
@ -40,6 +40,8 @@
|
||||||
list/0,
|
list/0,
|
||||||
lookup/2,
|
lookup/2,
|
||||||
create/3,
|
create/3,
|
||||||
|
%% The remove/2 function is only for internal use as it may create
|
||||||
|
%% rules with broken dependencies
|
||||||
remove/2,
|
remove/2,
|
||||||
%% The following is the remove function that is called by the HTTP API
|
%% The following is the remove function that is called by the HTTP API
|
||||||
%% It also checks for rule action dependencies and optionally removes
|
%% It also checks for rule action dependencies and optionally removes
|
||||||
|
@ -73,7 +75,8 @@
|
||||||
-export([
|
-export([
|
||||||
id/2,
|
id/2,
|
||||||
id/3,
|
id/3,
|
||||||
is_valid_bridge_v1/2
|
bridge_v1_is_valid/2,
|
||||||
|
extract_connector_id_from_bridge_v2_id/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
%% Config Update Handler API
|
%% Config Update Handler API
|
||||||
|
@ -88,17 +91,23 @@
|
||||||
import_config/1
|
import_config/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
%% Compatibility API
|
%% Bridge V2 Types and Conversions
|
||||||
|
|
||||||
-export([
|
-export([
|
||||||
bridge_v2_type_to_connector_type/1,
|
bridge_v2_type_to_connector_type/1,
|
||||||
is_bridge_v2_type/1,
|
is_bridge_v2_type/1
|
||||||
lookup_and_transform_to_bridge_v1/2,
|
]).
|
||||||
list_and_transform_to_bridge_v1/0,
|
|
||||||
|
%% Compatibility Layer API
|
||||||
|
%% All public functions for the compatibility layer should be prefixed with
|
||||||
|
%% birdge_v1_
|
||||||
|
|
||||||
|
-export([
|
||||||
|
bridge_v1_lookup_and_transform/2,
|
||||||
|
bridge_v1_list_and_transform/0,
|
||||||
bridge_v1_check_deps_and_remove/3,
|
bridge_v1_check_deps_and_remove/3,
|
||||||
split_bridge_v1_config_and_create/3,
|
bridge_v1_split_config_and_create/3,
|
||||||
bridge_v1_create_dry_run/2,
|
bridge_v1_create_dry_run/2,
|
||||||
extract_connector_id_from_bridge_v2_id/1,
|
|
||||||
bridge_v1_type_to_bridge_v2_type/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,
|
bridge_v1_enable_disable/3,
|
||||||
|
@ -215,7 +224,7 @@ lookup(Type, Name) ->
|
||||||
}}
|
}}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
-spec list() -> [bridge_v2_info() | {error, term()}].
|
-spec list() -> [bridge_v2_info()] | {error, term()}.
|
||||||
list() ->
|
list() ->
|
||||||
list_with_lookup_fun(fun lookup/2).
|
list_with_lookup_fun(fun lookup/2).
|
||||||
|
|
||||||
|
@ -1009,7 +1018,7 @@ unpack_bridge_conf(Type, PackedConf, TopLevelConf) ->
|
||||||
%%
|
%%
|
||||||
%% * The corresponding bridge v2 should exist
|
%% * The corresponding bridge v2 should exist
|
||||||
%% * The connector for the bridge v2 should have exactly one channel
|
%% * The connector for the bridge v2 should have exactly one channel
|
||||||
is_valid_bridge_v1(BridgeV1Type, BridgeName) ->
|
bridge_v1_is_valid(BridgeV1Type, BridgeName) ->
|
||||||
BridgeV2Type = ?MODULE:bridge_v1_type_to_bridge_v2_type(BridgeV1Type),
|
BridgeV2Type = ?MODULE:bridge_v1_type_to_bridge_v2_type(BridgeV1Type),
|
||||||
case lookup_conf(BridgeV2Type, BridgeName) of
|
case lookup_conf(BridgeV2Type, BridgeName) of
|
||||||
{error, _} ->
|
{error, _} ->
|
||||||
|
@ -1050,12 +1059,12 @@ is_bridge_v2_type(<<"azure_event_hub_producer">>) ->
|
||||||
is_bridge_v2_type(_) ->
|
is_bridge_v2_type(_) ->
|
||||||
false.
|
false.
|
||||||
|
|
||||||
list_and_transform_to_bridge_v1() ->
|
bridge_v1_list_and_transform() ->
|
||||||
Bridges = list_with_lookup_fun(fun lookup_and_transform_to_bridge_v1/2),
|
Bridges = list_with_lookup_fun(fun bridge_v1_lookup_and_transform/2),
|
||||||
[B || B <- Bridges, B =/= not_bridge_v1_compatible_error()].
|
[B || B <- Bridges, B =/= not_bridge_v1_compatible_error()].
|
||||||
|
|
||||||
lookup_and_transform_to_bridge_v1(BridgeV1Type, Name) ->
|
bridge_v1_lookup_and_transform(BridgeV1Type, Name) ->
|
||||||
case ?MODULE:is_valid_bridge_v1(BridgeV1Type, Name) of
|
case ?MODULE:bridge_v1_is_valid(BridgeV1Type, Name) of
|
||||||
true ->
|
true ->
|
||||||
Type = ?MODULE:bridge_v1_type_to_bridge_v2_type(BridgeV1Type),
|
Type = ?MODULE:bridge_v1_type_to_bridge_v2_type(BridgeV1Type),
|
||||||
case lookup(Type, Name) of
|
case lookup(Type, Name) of
|
||||||
|
@ -1063,7 +1072,7 @@ lookup_and_transform_to_bridge_v1(BridgeV1Type, Name) ->
|
||||||
ConnectorType = connector_type(Type),
|
ConnectorType = connector_type(Type),
|
||||||
case emqx_connector:lookup(ConnectorType, ConnectorName) of
|
case emqx_connector:lookup(ConnectorType, ConnectorName) of
|
||||||
{ok, Connector} ->
|
{ok, Connector} ->
|
||||||
lookup_and_transform_to_bridge_v1_helper(
|
bridge_v1_lookup_and_transform_helper(
|
||||||
BridgeV1Type, Name, Type, BridgeV2, ConnectorType, Connector
|
BridgeV1Type, Name, Type, BridgeV2, ConnectorType, Connector
|
||||||
);
|
);
|
||||||
Error ->
|
Error ->
|
||||||
|
@ -1079,7 +1088,7 @@ lookup_and_transform_to_bridge_v1(BridgeV1Type, Name) ->
|
||||||
not_bridge_v1_compatible_error() ->
|
not_bridge_v1_compatible_error() ->
|
||||||
{error, not_bridge_v1_compatible}.
|
{error, not_bridge_v1_compatible}.
|
||||||
|
|
||||||
lookup_and_transform_to_bridge_v1_helper(
|
bridge_v1_lookup_and_transform_helper(
|
||||||
BridgeV1Type, BridgeName, BridgeV2Type, BridgeV2, ConnectorType, Connector
|
BridgeV1Type, BridgeName, BridgeV2Type, BridgeV2, ConnectorType, Connector
|
||||||
) ->
|
) ->
|
||||||
ConnectorRawConfig1 = maps:get(raw_config, Connector),
|
ConnectorRawConfig1 = maps:get(raw_config, Connector),
|
||||||
|
@ -1132,7 +1141,7 @@ lookup_conf(Type, Name) ->
|
||||||
Config
|
Config
|
||||||
end.
|
end.
|
||||||
|
|
||||||
split_bridge_v1_config_and_create(BridgeV1Type, BridgeName, RawConf) ->
|
bridge_v1_split_config_and_create(BridgeV1Type, BridgeName, RawConf) ->
|
||||||
BridgeV2Type = ?MODULE:bridge_v1_type_to_bridge_v2_type(BridgeV1Type),
|
BridgeV2Type = ?MODULE:bridge_v1_type_to_bridge_v2_type(BridgeV1Type),
|
||||||
%% Check if the bridge v2 exists
|
%% Check if the bridge v2 exists
|
||||||
case lookup_conf(BridgeV2Type, BridgeName) of
|
case lookup_conf(BridgeV2Type, BridgeName) of
|
||||||
|
@ -1143,7 +1152,7 @@ split_bridge_v1_config_and_create(BridgeV1Type, BridgeName, RawConf) ->
|
||||||
BridgeV1Type, BridgeName, RawConf, PreviousRawConf
|
BridgeV1Type, BridgeName, RawConf, PreviousRawConf
|
||||||
);
|
);
|
||||||
_Conf ->
|
_Conf ->
|
||||||
case ?MODULE:is_valid_bridge_v1(BridgeV1Type, BridgeName) of
|
case ?MODULE:bridge_v1_is_valid(BridgeV1Type, BridgeName) of
|
||||||
true ->
|
true ->
|
||||||
%% Using remove + create as update, hence do not delete deps.
|
%% Using remove + create as update, hence do not delete deps.
|
||||||
RemoveDeps = [],
|
RemoveDeps = [],
|
||||||
|
@ -1378,7 +1387,7 @@ bridge_v1_id_to_connector_resource_id(BridgeId) ->
|
||||||
end.
|
end.
|
||||||
|
|
||||||
bridge_v1_enable_disable(Action, BridgeType, BridgeName) ->
|
bridge_v1_enable_disable(Action, BridgeType, BridgeName) ->
|
||||||
case emqx_bridge_v2:is_valid_bridge_v1(BridgeType, BridgeName) of
|
case emqx_bridge_v2:bridge_v1_is_valid(BridgeType, BridgeName) of
|
||||||
true ->
|
true ->
|
||||||
bridge_v1_enable_disable_helper(
|
bridge_v1_enable_disable_helper(
|
||||||
Action,
|
Action,
|
||||||
|
@ -1423,7 +1432,7 @@ bridge_v1_start(BridgeV1Type, Name) ->
|
||||||
|
|
||||||
bridge_v1_operation_helper(BridgeV1Type, Name, ConnectorOpFun, DoHealthCheck) ->
|
bridge_v1_operation_helper(BridgeV1Type, Name, ConnectorOpFun, DoHealthCheck) ->
|
||||||
BridgeV2Type = ?MODULE:bridge_v1_type_to_bridge_v2_type(BridgeV1Type),
|
BridgeV2Type = ?MODULE:bridge_v1_type_to_bridge_v2_type(BridgeV1Type),
|
||||||
case emqx_bridge_v2:is_valid_bridge_v1(BridgeV1Type, Name) of
|
case emqx_bridge_v2:bridge_v1_is_valid(BridgeV1Type, Name) of
|
||||||
true ->
|
true ->
|
||||||
connector_operation_helper_with_conf(
|
connector_operation_helper_with_conf(
|
||||||
BridgeV2Type,
|
BridgeV2Type,
|
||||||
|
|
|
@ -264,17 +264,17 @@ t_create_dry_run_connector_does_not_exist(_) ->
|
||||||
BridgeConf = (bridge_config())#{<<"connector">> => <<"connector_does_not_exist">>},
|
BridgeConf = (bridge_config())#{<<"connector">> => <<"connector_does_not_exist">>},
|
||||||
{error, _} = emqx_bridge_v2:create_dry_run(bridge_type(), BridgeConf).
|
{error, _} = emqx_bridge_v2:create_dry_run(bridge_type(), BridgeConf).
|
||||||
|
|
||||||
t_is_valid_bridge_v1(_) ->
|
t_bridge_v1_is_valid(_) ->
|
||||||
{ok, _} = emqx_bridge_v2:create(bridge_type(), my_test_bridge, bridge_config()),
|
{ok, _} = emqx_bridge_v2:create(bridge_type(), my_test_bridge, bridge_config()),
|
||||||
true = emqx_bridge_v2:is_valid_bridge_v1(bridge_v1_type, my_test_bridge),
|
true = emqx_bridge_v2:bridge_v1_is_valid(bridge_v1_type, my_test_bridge),
|
||||||
%% Add another channel/bridge to the connector
|
%% Add another channel/bridge to the connector
|
||||||
{ok, _} = emqx_bridge_v2:create(bridge_type(), my_test_bridge_2, bridge_config()),
|
{ok, _} = emqx_bridge_v2:create(bridge_type(), my_test_bridge_2, bridge_config()),
|
||||||
false = emqx_bridge_v2:is_valid_bridge_v1(bridge_v1_type, my_test_bridge),
|
false = emqx_bridge_v2:bridge_v1_is_valid(bridge_v1_type, my_test_bridge),
|
||||||
ok = emqx_bridge_v2:remove(bridge_type(), my_test_bridge),
|
ok = emqx_bridge_v2:remove(bridge_type(), my_test_bridge),
|
||||||
true = emqx_bridge_v2:is_valid_bridge_v1(bridge_v1_type, my_test_bridge_2),
|
true = emqx_bridge_v2:bridge_v1_is_valid(bridge_v1_type, my_test_bridge_2),
|
||||||
ok = emqx_bridge_v2:remove(bridge_type(), my_test_bridge_2),
|
ok = emqx_bridge_v2:remove(bridge_type(), my_test_bridge_2),
|
||||||
%% Non existing bridge is a valid Bridge V1
|
%% Non existing bridge is a valid Bridge V1
|
||||||
true = emqx_bridge_v2:is_valid_bridge_v1(bridge_v1_type, my_test_bridge),
|
true = emqx_bridge_v2:bridge_v1_is_valid(bridge_v1_type, my_test_bridge),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
t_manual_health_check(_) ->
|
t_manual_health_check(_) ->
|
||||||
|
|
Loading…
Reference in New Issue