fix(rebalance): fix swagger examples in api-doc
This commit is contained in:
parent
dca6fe6200
commit
f174cb656c
|
@ -897,15 +897,25 @@ typename_to_spec("json_binary()", _Mod) ->
|
||||||
typename_to_spec("port_number()", _Mod) ->
|
typename_to_spec("port_number()", _Mod) ->
|
||||||
range("1..65535");
|
range("1..65535");
|
||||||
typename_to_spec(Name, Mod) ->
|
typename_to_spec(Name, Mod) ->
|
||||||
Spec = range(Name),
|
try_convert_to_spec(Name, Mod, [
|
||||||
Spec1 = remote_module_type(Spec, Name, Mod),
|
fun try_remote_module_type/2,
|
||||||
Spec2 = typerefl_array(Spec1, Name, Mod),
|
fun try_typerefl_array/2,
|
||||||
Spec3 = integer(Spec2, Name),
|
fun try_range/2,
|
||||||
Spec3 =:= nomatch andalso
|
fun try_integer/2
|
||||||
throw({error, #{msg => <<"Unsupported Type">>, type => Name, module => Mod}}),
|
]).
|
||||||
Spec3.
|
|
||||||
|
|
||||||
range(Name) ->
|
range(Name) ->
|
||||||
|
#{} = try_range(Name, undefined).
|
||||||
|
|
||||||
|
try_convert_to_spec(Name, Mod, []) ->
|
||||||
|
throw({error, #{msg => <<"Unsupported Type">>, type => Name, module => Mod}});
|
||||||
|
try_convert_to_spec(Name, Mod, [Converter | Rest]) ->
|
||||||
|
case Converter(Name, Mod) of
|
||||||
|
nomatch -> try_convert_to_spec(Name, Mod, Rest);
|
||||||
|
Spec -> Spec
|
||||||
|
end.
|
||||||
|
|
||||||
|
try_range(Name, _Mod) ->
|
||||||
case string:split(Name, "..") of
|
case string:split(Name, "..") of
|
||||||
%% 1..10 1..inf -inf..10
|
%% 1..10 1..inf -inf..10
|
||||||
[MinStr, MaxStr] ->
|
[MinStr, MaxStr] ->
|
||||||
|
@ -917,39 +927,33 @@ range(Name) ->
|
||||||
end.
|
end.
|
||||||
|
|
||||||
%% Module:Type
|
%% Module:Type
|
||||||
remote_module_type(nomatch, Name, Mod) ->
|
try_remote_module_type(Name, Mod) ->
|
||||||
case string:split(Name, ":") of
|
case string:split(Name, ":") of
|
||||||
[_Module, Type] -> typename_to_spec(Type, Mod);
|
[_Module, Type] -> typename_to_spec(Type, Mod);
|
||||||
_ -> nomatch
|
_ -> nomatch
|
||||||
end;
|
end.
|
||||||
remote_module_type(Spec, _Name, _Mod) ->
|
|
||||||
Spec.
|
|
||||||
|
|
||||||
%% [string()] or [integer()] or [xxx].
|
%% [string()] or [integer()] or [xxx] or [xxx,...]
|
||||||
typerefl_array(nomatch, Name, Mod) ->
|
try_typerefl_array(Name, Mod) ->
|
||||||
case string:trim(Name, leading, "[") of
|
case string:trim(Name, leading, "[") of
|
||||||
Name ->
|
Name ->
|
||||||
nomatch;
|
nomatch;
|
||||||
Name1 ->
|
Name1 ->
|
||||||
case string:trim(Name1, trailing, "]") of
|
case string:trim(Name1, trailing, ",.]") of
|
||||||
Name1 ->
|
Name1 ->
|
||||||
notmatch;
|
notmatch;
|
||||||
Name2 ->
|
Name2 ->
|
||||||
Schema = typename_to_spec(Name2, Mod),
|
Schema = typename_to_spec(Name2, Mod),
|
||||||
#{type => array, items => Schema}
|
#{type => array, items => Schema}
|
||||||
end
|
end
|
||||||
end;
|
end.
|
||||||
typerefl_array(Spec, _Name, _Mod) ->
|
|
||||||
Spec.
|
|
||||||
|
|
||||||
%% integer(1)
|
%% integer(1)
|
||||||
integer(nomatch, Name) ->
|
try_integer(Name, _Mod) ->
|
||||||
case string:to_integer(Name) of
|
case string:to_integer(Name) of
|
||||||
{Int, []} -> #{type => integer, enum => [Int], default => Int};
|
{Int, []} -> #{type => integer, enum => [Int], default => Int};
|
||||||
_ -> nomatch
|
_ -> nomatch
|
||||||
end;
|
end.
|
||||||
integer(Spec, _Name) ->
|
|
||||||
Spec.
|
|
||||||
|
|
||||||
add_integer_prop(Schema, Key, Value) ->
|
add_integer_prop(Schema, Key, Value) ->
|
||||||
case string:to_integer(Value) of
|
case string:to_integer(Value) of
|
||||||
|
|
|
@ -105,6 +105,20 @@ t_deprecated(_Config) ->
|
||||||
emqx_dashboard_swagger:components([{?MODULE, deprecated_ref}], #{})
|
emqx_dashboard_swagger:components([{?MODULE, deprecated_ref}], #{})
|
||||||
).
|
).
|
||||||
|
|
||||||
|
t_nonempty_list(_Config) ->
|
||||||
|
?assertMatch(
|
||||||
|
[
|
||||||
|
#{
|
||||||
|
<<"emqx_swagger_requestBody_SUITE.nonempty_list_ref">> :=
|
||||||
|
#{
|
||||||
|
<<"properties">> :=
|
||||||
|
[{<<"list">>, #{items := #{type := string}, type := array}}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
emqx_dashboard_swagger:components([{?MODULE, nonempty_list_ref}], #{})
|
||||||
|
).
|
||||||
|
|
||||||
t_nest_object(_Config) ->
|
t_nest_object(_Config) ->
|
||||||
GoodRef = <<"#/components/schemas/emqx_swagger_requestBody_SUITE.good_ref">>,
|
GoodRef = <<"#/components/schemas/emqx_swagger_requestBody_SUITE.good_ref">>,
|
||||||
Spec = #{
|
Spec = #{
|
||||||
|
@ -829,6 +843,10 @@ fields(deprecated_ref) ->
|
||||||
{tag1, mk(binary(), #{desc => <<"tag1">>, deprecated => {since, "4.3.0"}})},
|
{tag1, mk(binary(), #{desc => <<"tag1">>, deprecated => {since, "4.3.0"}})},
|
||||||
{tag2, mk(binary(), #{desc => <<"tag2">>, deprecated => true})},
|
{tag2, mk(binary(), #{desc => <<"tag2">>, deprecated => true})},
|
||||||
{tag3, mk(binary(), #{desc => <<"tag3">>, deprecated => false})}
|
{tag3, mk(binary(), #{desc => <<"tag3">>, deprecated => false})}
|
||||||
|
];
|
||||||
|
fields(nonempty_list_ref) ->
|
||||||
|
[
|
||||||
|
{list, mk(nonempty_list(binary()), #{})}
|
||||||
].
|
].
|
||||||
|
|
||||||
enable(type) -> boolean();
|
enable(type) -> boolean();
|
||||||
|
|
|
@ -709,25 +709,30 @@ fields(global_status) ->
|
||||||
|
|
||||||
rebalance_example() ->
|
rebalance_example() ->
|
||||||
#{
|
#{
|
||||||
wait_health_check => <<"10s">>,
|
rebalance =>
|
||||||
conn_evict_rate => 10,
|
#{
|
||||||
sess_evict_rate => 20,
|
wait_health_check => <<"10s">>,
|
||||||
abs_conn_threshold => 10,
|
conn_evict_rate => 10,
|
||||||
rel_conn_threshold => 1.5,
|
sess_evict_rate => 20,
|
||||||
abs_sess_threshold => 10,
|
abs_conn_threshold => 10,
|
||||||
rel_sess_threshold => 1.5,
|
rel_conn_threshold => 1.5,
|
||||||
wait_takeover => <<"10s">>,
|
abs_sess_threshold => 10,
|
||||||
nodes => [<<"othernode@127.0.0.1">>]
|
rel_sess_threshold => 1.5,
|
||||||
|
wait_takeover => <<"10s">>,
|
||||||
|
nodes => [<<"othernode@127.0.0.1">>]
|
||||||
|
}
|
||||||
}.
|
}.
|
||||||
|
|
||||||
rebalance_evacuation_example() ->
|
rebalance_evacuation_example() ->
|
||||||
#{
|
#{
|
||||||
wait_health_check => <<"10s">>,
|
evacuation => #{
|
||||||
conn_evict_rate => 100,
|
wait_health_check => <<"10s">>,
|
||||||
sess_evict_rate => 100,
|
conn_evict_rate => 100,
|
||||||
redirect_to => <<"othernode:1883">>,
|
sess_evict_rate => 100,
|
||||||
wait_takeover => <<"10s">>,
|
redirect_to => <<"othernode:1883">>,
|
||||||
migrate_to => [<<"othernode@127.0.0.1">>]
|
wait_takeover => <<"10s">>,
|
||||||
|
migrate_to => [<<"othernode@127.0.0.1">>]
|
||||||
|
}
|
||||||
}.
|
}.
|
||||||
|
|
||||||
local_status_response_schema() ->
|
local_status_response_schema() ->
|
||||||
|
|
Loading…
Reference in New Issue