Przeglądaj źródła

fix(backup): fix data import/export problem

wwhai 5 lat temu
rodzic
commit
109b2f4e90
1 zmienionych plików z 36 dodań i 9 usunięć
  1. 36 9
      apps/emqx_management/src/emqx_mgmt_data_backup.erl

+ 36 - 9
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.