Просмотр исходного кода

refactor(emqx_connector_ssl): simplify implementation

Zaiming (Stone) Shi 3 лет назад
Родитель
Сommit
67cef65fdb
1 измененных файлов с 13 добавлено и 35 удалено
  1. 13 35
      apps/emqx_connector/src/emqx_connector_ssl.erl

+ 13 - 35
apps/emqx_connector/src/emqx_connector_ssl.erl

@@ -30,12 +30,12 @@
 convert_certs(RltvDir, #{<<"connector">> := Connector} = Config) when
 convert_certs(RltvDir, #{<<"connector">> := Connector} = Config) when
     is_map(Connector)
     is_map(Connector)
 ->
 ->
-    SSL = map_get_oneof([<<"ssl">>, ssl], Connector, undefined),
+    SSL = maps:get(<<"ssl">>, Connector, undefined),
     new_ssl_config(RltvDir, Config, SSL);
     new_ssl_config(RltvDir, Config, SSL);
 convert_certs(RltvDir, #{connector := Connector} = Config) when
 convert_certs(RltvDir, #{connector := Connector} = Config) when
     is_map(Connector)
     is_map(Connector)
 ->
 ->
-    SSL = map_get_oneof([<<"ssl">>, ssl], Connector, undefined),
+    SSL = maps:get(ssl, Connector, undefined),
     new_ssl_config(RltvDir, Config, SSL);
     new_ssl_config(RltvDir, Config, SSL);
 %% for bridges without `connector` field. i.e. webhook
 %% for bridges without `connector` field. i.e. webhook
 convert_certs(RltvDir, #{<<"ssl">> := SSL} = Config) ->
 convert_certs(RltvDir, #{<<"ssl">> := SSL} = Config) ->
@@ -52,7 +52,10 @@ clear_certs(RltvDir, Config) ->
 clear_certs2(RltvDir, #{<<"connector">> := Connector} = _Config) when
 clear_certs2(RltvDir, #{<<"connector">> := Connector} = _Config) when
     is_map(Connector)
     is_map(Connector)
 ->
 ->
-    OldSSL = map_get_oneof([<<"ssl">>, ssl], Connector, undefined),
+    %% TODO remove the 'connector' clause after dev/ee5.0 is merged back to master
+    %% The `connector` config layer will be removed.
+    %% for bridges with `connector` field. i.e. `mqtt_source` and `mqtt_sink`
+    OldSSL = maps:get(<<"ssl">>, Connector, undefined),
     ok = emqx_tls_lib:delete_ssl_files(RltvDir, undefined, OldSSL);
     ok = emqx_tls_lib:delete_ssl_files(RltvDir, undefined, OldSSL);
 clear_certs2(RltvDir, #{<<"ssl">> := OldSSL} = _Config) ->
 clear_certs2(RltvDir, #{<<"ssl">> := OldSSL} = _Config) ->
     ok = emqx_tls_lib:delete_ssl_files(RltvDir, undefined, OldSSL);
     ok = emqx_tls_lib:delete_ssl_files(RltvDir, undefined, OldSSL);
@@ -66,14 +69,11 @@ try_clear_certs(RltvDir, NewConf, OldConf) ->
         normalize_key_to_bin(OldConf)
         normalize_key_to_bin(OldConf)
     ).
     ).
 
 
-try_clear_certs2(RltvDir, #{<<"connector">> := NewConnector}, #{<<"connector">> := OldConnector}) when
-    is_map(NewConnector),
-    is_map(OldConnector)
-->
-    NewSSL = map_get_oneof([<<"ssl">>, ssl], NewConnector, undefined),
-    OldSSL = map_get_oneof([<<"ssl">>, ssl], OldConnector, undefined),
-    ok = emqx_tls_lib:delete_ssl_files(RltvDir, NewSSL, OldSSL);
-try_clear_certs2(RltvDir, #{<<"ssl">> := NewSSL}, #{<<"ssl">> := OldSSL}) ->
+try_clear_certs2(RltvDir, #{<<"connector">> := NewConnector}, #{<<"connector">> := OldConnector}) ->
+    try_clear_certs2(RltvDir, NewConnector, OldConnector);
+try_clear_certs2(RltvDir, NewSSL, OldSSL) when is_map(NewSSL) andalso is_map(OldSSL) ->
+    NewSSL = maps:get(<<"ssl">>, NewSSL, undefined),
+    OldSSL = maps:get(<<"ssl">>, OldSSL, undefined),
     ok = emqx_tls_lib:delete_ssl_files(RltvDir, NewSSL, OldSSL);
     ok = emqx_tls_lib:delete_ssl_files(RltvDir, NewSSL, OldSSL);
 try_clear_certs2(RltvDir, NewConf, OldConf) ->
 try_clear_certs2(RltvDir, NewConf, OldConf) ->
     ?SLOG(debug, #{msg => "unexpected_conf", path => RltvDir, new => NewConf, OldConf => OldConf}),
     ?SLOG(debug, #{msg => "unexpected_conf", path => RltvDir, new => NewConf, OldConf => OldConf}),
@@ -98,27 +98,5 @@ new_ssl_config(#{<<"ssl">> := _} = Config, NewSSL) ->
 new_ssl_config(Config, _NewSSL) ->
 new_ssl_config(Config, _NewSSL) ->
     Config.
     Config.
 
 
-map_get_oneof([], _Map, Default) ->
-    Default;
-map_get_oneof([Key | Keys], Map, Default) ->
-    case maps:find(Key, Map) of
-        error ->
-            map_get_oneof(Keys, Map, Default);
-        {ok, Value} ->
-            Value
-    end.
-
-normalize_key_to_bin(Map) when is_map(Map) ->
-    maps:fold(
-        fun
-            (K, V, Acc) when is_atom(K) ->
-                Bin = erlang:atom_to_binary(K, utf8),
-                Acc#{Bin => V};
-            (K, V, Acc) ->
-                Acc#{K => V}
-        end,
-        #{},
-        Map
-    );
-normalize_key_to_bin(Any) ->
-    Any.
+normalize_key_to_bin(Map) ->
+    emqx_map_lib:binary_key_map(Map).