From f3648c5232320cd1509946731f18a83e953f24bb Mon Sep 17 00:00:00 2001 From: Stefan Strigler Date: Mon, 9 Oct 2023 17:18:04 +0200 Subject: [PATCH] fix: allow Type in resource-id and pass it on --- apps/emqx_connector/src/emqx_connector_resource.erl | 8 +++++--- apps/emqx_resource/src/emqx_resource.erl | 4 ++++ apps/emqx_resource/src/emqx_resource_manager.erl | 4 ++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/emqx_connector/src/emqx_connector_resource.erl b/apps/emqx_connector/src/emqx_connector_resource.erl index 1776dccd8..847665c15 100644 --- a/apps/emqx_connector/src/emqx_connector_resource.erl +++ b/apps/emqx_connector/src/emqx_connector_resource.erl @@ -241,11 +241,11 @@ recreate(Type, Name, Conf, Opts) -> ). create_dry_run(Type, Conf0) -> - TmpName = iolist_to_binary([?TEST_ID_PREFIX, emqx_utils:gen_id(8)]), - TmpPath = emqx_utils:safe_filename(TmpName), %% Already typechecked, no need to catch errors TypeBin = bin(Type), TypeAtom = safe_atom(Type), + TmpName = iolist_to_binary([?TEST_ID_PREFIX, TypeBin, ":", emqx_utils:gen_id(8)]), + TmpPath = emqx_utils:safe_filename(TmpName), Conf1 = maps:without([<<"name">>], Conf0), RawConf = #{<<"connectors">> => #{TypeBin => #{<<"temp_name">> => Conf1}}}, try @@ -260,7 +260,9 @@ create_dry_run(Type, Conf0) -> {error, Reason}; {ok, ConfNew} -> ParseConf = parse_confs(bin(Type), TmpName, ConfNew), - emqx_resource:create_dry_run_local(connector_to_resource_type(Type), ParseConf) + emqx_resource:create_dry_run_local( + TmpName, connector_to_resource_type(Type), ParseConf + ) end catch %% validation errors diff --git a/apps/emqx_resource/src/emqx_resource.erl b/apps/emqx_resource/src/emqx_resource.erl index cf8364e97..e66080c77 100644 --- a/apps/emqx_resource/src/emqx_resource.erl +++ b/apps/emqx_resource/src/emqx_resource.erl @@ -50,6 +50,7 @@ %% run start/2, health_check/2 and stop/1 sequentially create_dry_run/2, create_dry_run_local/2, + create_dry_run_local/3, %% this will do create_dry_run, stop the old instance and start a new one recreate/3, recreate/4, @@ -292,6 +293,9 @@ create_dry_run(ResourceType, Config) -> create_dry_run_local(ResourceType, Config) -> emqx_resource_manager:create_dry_run(ResourceType, Config). +create_dry_run_local(ResId, ResourceType, Config) -> + emqx_resource_manager:create_dry_run(ResId, ResourceType, Config). + -spec recreate(resource_id(), resource_type(), resource_config()) -> {ok, resource_data()} | {error, Reason :: term()}. recreate(ResId, ResourceType, Config) -> diff --git a/apps/emqx_resource/src/emqx_resource_manager.erl b/apps/emqx_resource/src/emqx_resource_manager.erl index 8f37bfa1a..b914300cf 100644 --- a/apps/emqx_resource/src/emqx_resource_manager.erl +++ b/apps/emqx_resource/src/emqx_resource_manager.erl @@ -26,6 +26,7 @@ recreate/4, remove/1, create_dry_run/2, + create_dry_run/3, restart/2, start/2, stop/1, @@ -159,6 +160,9 @@ create(ResId, Group, ResourceType, Config, Opts) -> ok | {error, Reason :: term()}. create_dry_run(ResourceType, Config) -> ResId = make_test_id(), + create_dry_run(ResId, ResourceType, Config). + +create_dry_run(ResId, ResourceType, Config) -> Opts = case is_map(Config) of true -> maps:get(resource_opts, Config, #{});