refactor(emqx_schema): use hoconsc:map type

This commit is contained in:
Zaiming Shi 2021-09-04 08:03:01 +02:00
parent a9cca84595
commit bbd1c142de
1 changed files with 20 additions and 31 deletions

View File

@ -76,7 +76,11 @@
namespace() -> undefined. namespace() -> undefined.
roots() -> roots() ->
["zones", [{"zones",
sc(map("name", ref("zone")),
#{ desc => "A zones is a set configs grouped per the zone's name, there is a builtin zone named 'default' "
"The name of a zone can be bound to listners to apply zone settings to connections accepted by the bound listener."
})},
"mqtt", "mqtt",
"flapping_detect", "flapping_detect",
"force_shutdown", "force_shutdown",
@ -94,8 +98,14 @@ roots() ->
"stats", "stats",
"sysmon", "sysmon",
"alarm", "alarm",
{"authentication",
sc(hoconsc:lazy(hoconsc:array(map())),
#{ desc => "Default authentication configs for all MQTT listeners.<br>"
"For per-listener overrides see <code>authentication</code> "
"in listener configs"
})},
"authorization", "authorization",
{"authentication", sc(hoconsc:lazy(hoconsc:array(map())), #{})} "flapping_detect"
]. ].
fields("stats") -> fields("stats") ->
@ -270,14 +280,7 @@ fields("mqtt") ->
})} })}
]; ];
fields("zones") -> fields("zone") ->
[ {"$name",
sc(ref("zone_settings"),
#{
}
)}];
fields("zone_settings") ->
Fields = ["mqtt", "stats", "flapping_detect", "force_shutdown", Fields = ["mqtt", "stats", "flapping_detect", "force_shutdown",
"conn_congestion", "rate_limit", "quota", "force_gc"], "conn_congestion", "rate_limit", "quota", "force_gc"],
[{F, ref(emqx_zone_schema, F)} || F <- Fields]; [{F, ref(emqx_zone_schema, F)} || F <- Fields];
@ -375,53 +378,37 @@ fields("force_gc") ->
fields("listeners") -> fields("listeners") ->
[ {"tcp", [ {"tcp",
sc(ref("tcp_listeners"), sc(map(name, ref("mqtt_tcp_listener")),
#{ desc => "TCP listeners" #{ desc => "TCP listeners"
, nullable => {true, recursive} , nullable => {true, recursive}
}) })
} }
, {"ssl", , {"ssl",
sc(ref("ssl_listeners"), sc(map(name, ref("mqtt_ssl_listener")),
#{ desc => "SSL listeners" #{ desc => "SSL listeners"
, nullable => {true, recursive} , nullable => {true, recursive}
}) })
} }
, {"ws", , {"ws",
sc(ref("ws_listeners"), sc(map(name, ref("mqtt_ws_listener")),
#{ desc => "HTTP websocket listeners" #{ desc => "HTTP websocket listeners"
, nullable => {true, recursive} , nullable => {true, recursive}
}) })
} }
, {"wss", , {"wss",
sc(ref("wss_listeners"), sc(map(name, ref("mqtt_wss_listener")),
#{ desc => "HTTPS websocket listeners" #{ desc => "HTTPS websocket listeners"
, nullable => {true, recursive} , nullable => {true, recursive}
}) })
} }
, {"quic", , {"quic",
sc(ref("quic_listeners"), sc(map(ref("mqtt_quic_listener")),
#{ desc => "QUIC listeners" #{ desc => "QUIC listeners"
, nullable => {true, recursive} , nullable => {true, recursive}
}) })
} }
]; ];
fields("tcp_listeners") ->
[ {"$name", ref("mqtt_tcp_listener")}
];
fields("ssl_listeners") ->
[ {"$name", ref("mqtt_ssl_listener")}
];
fields("ws_listeners") ->
[ {"$name", ref("mqtt_ws_listener")}
];
fields("wss_listeners") ->
[ {"$name", ref("mqtt_wss_listener")}
];
fields("quic_listeners") ->
[ {"$name", ref("mqtt_quic_listener")}
];
fields("mqtt_tcp_listener") -> fields("mqtt_tcp_listener") ->
[ {"tcp", [ {"tcp",
sc(ref("tcp_opts"), sc(ref("tcp_opts"),
@ -1016,6 +1003,8 @@ ceiling(X) ->
sc(Type, Meta) -> hoconsc:mk(Type, Meta). sc(Type, Meta) -> hoconsc:mk(Type, Meta).
map(Name, Type) -> hoconsc:map(Name, Type).
ref(Field) -> hoconsc:ref(?MODULE, Field). ref(Field) -> hoconsc:ref(?MODULE, Field).
ref(Module, Field) -> hoconsc:ref(Module, Field). ref(Module, Field) -> hoconsc:ref(Module, Field).