diff --git a/apps/emqx_management/src/emqx_mgmt_data_backup.erl b/apps/emqx_management/src/emqx_mgmt_data_backup.erl index cd6ef6fb9..b9c3d9933 100644 --- a/apps/emqx_management/src/emqx_mgmt_data_backup.erl +++ b/apps/emqx_management/src/emqx_mgmt_data_backup.erl @@ -17,6 +17,7 @@ -module(emqx_mgmt_data_backup). -include("emqx_mgmt.hrl"). +-include_lib("emqx_rule_engine/include/rule_engine.hrl"). -include_lib("emqx/include/emqx.hrl"). -include_lib("kernel/include/file.hrl"). @@ -59,7 +60,11 @@ %%-------------------------------------------------------------------- export_rules() -> - lists:map(fun({_, RuleId, _, RawSQL, _, _, _, _, _, _, Actions, Enabled, Desc}) -> + lists:map(fun(#rule{id = RuleId, + rawsql = RawSQL, + actions = Actions, + enabled = Enabled, + description = Desc}) -> [{id, RuleId}, {rawsql, RawSQL}, {actions, actions_to_prop_list(Actions)}, @@ -68,7 +73,11 @@ export_rules() -> end, emqx_rule_registry:get_rules()). export_resources() -> - lists:map(fun({_, Id, Type, Config, CreatedAt, Desc}) -> + lists:map(fun(#resource{id = Id, + type = Type, + config = Config, + created_at = CreatedAt, + description = Desc}) -> NCreatedAt = case CreatedAt of undefined -> null; _ -> CreatedAt @@ -236,18 +245,25 @@ import_resources_and_rules(Resources, Rules, FromVersion) when FromVersion =:= "4.0" orelse FromVersion =:= "4.1" orelse FromVersion =:= "4.2" -> Configs = lists:foldl(fun(#{<<"id">> := ID, <<"type">> := <<"web_hook">>, - <<"config">> := #{<<"content_type">> := ContentType, + <<"config">> := #{<<"connect_timeout">> := ConnectTimeout, + <<"content_type">> := ContentType, <<"headers">> := Headers, <<"method">> := Method, + <<"pool_size">> := PoolSize, + <<"request_timeout">> := RequestTimeout, <<"url">> := URL}} = Resource, Acc) -> - NConfig = #{<<"connect_timeout">> => 5, - <<"request_timeout">> => 5, + CovertFun = fun(Int) -> + list_to_binary(integer_to_list(Int) ++ "s") + end, + NConfig = #{<<"connect_timeout">> => CovertFun(ConnectTimeout), + <<"method">> => Method, + <<"pool_size">> => PoolSize, + <<"request_timeout">> => CovertFun(RequestTimeout), <<"cacertfile">> => <<>>, <<"certfile">> => <<>>, <<"keyfile">> => <<>>, - <<"pool_size">> => 8, - <<"url">> => URL, - <<"verify">> => true}, + <<"verify">> => true, + <<"url">> => URL}, NResource = Resource#{<<"config">> := NConfig}, {ok, _Resource} = import_resource(NResource), NHeaders = maps:put(<<"content-type">>, ContentType, Headers), @@ -284,7 +300,18 @@ apply_new_config([Action = #{<<"name">> := <<"data_to_webserver">>, <<"method">> => Method, <<"path">> => Path}, apply_new_config(More, Configs, [Action#{<<"args">> := Args} | Acc]) - end. + end; + +apply_new_config([Action = #{<<"args">> := #{<<"$resource">> := ResourceId, + <<"forward_topic">> := ForwardTopic, + <<"payload_tmpl">> := PayloadTmpl}, + <<"fallbacks">> := _Fallbacks, + <<"id">> := _Id, + <<"name">> := <<"data_to_mqtt_broker">>} | More], Configs, Acc) -> + Args = #{<<"$resource">> => ResourceId, + <<"payload_tmpl">> => PayloadTmpl, + <<"forward_topic">> => ForwardTopic}, + apply_new_config(More, Configs, [Action#{<<"args">> := Args} | Acc]). -endif.