refactor(topic-metrics): refactor topic_metrics api
This commit is contained in:
parent
ffc9846744
commit
0cb5c3e6ec
|
@ -18,11 +18,11 @@
|
||||||
|
|
||||||
-behavior(minirest_api).
|
-behavior(minirest_api).
|
||||||
|
|
||||||
-import(emqx_mgmt_util, [ request_body_schema/1
|
-import(emqx_mgmt_util, [ properties/1
|
||||||
, response_schema/1
|
, schema/1
|
||||||
, response_schema/2
|
, object_schema/2
|
||||||
, response_array_schema/2
|
, object_array_schema/2
|
||||||
, response_error_schema/2
|
, error_schema/2
|
||||||
]).
|
]).
|
||||||
|
|
||||||
-export([api_spec/0]).
|
-export([api_spec/0]).
|
||||||
|
@ -49,113 +49,88 @@ api_spec() ->
|
||||||
reset_all_topic_metrics_api(),
|
reset_all_topic_metrics_api(),
|
||||||
reset_topic_metrics_api()
|
reset_topic_metrics_api()
|
||||||
],
|
],
|
||||||
[
|
[]
|
||||||
topic_metrics_schema()
|
|
||||||
]
|
|
||||||
}.
|
}.
|
||||||
|
|
||||||
topic_metrics_schema() ->
|
properties() ->
|
||||||
#{
|
properties([
|
||||||
topic_metrics => #{
|
{topic, string},
|
||||||
type => object,
|
{create_time, string, <<"Date time, rfc3339">>},
|
||||||
properties => #{
|
{reset_time, string, <<"Nullable. Date time, rfc3339.">>},
|
||||||
topic => #{type => string},
|
{metrics, object, [{'messages.dropped.count', integer},
|
||||||
create_time => #{
|
{'messages.dropped.rate', number},
|
||||||
type => string,
|
{'messages.in.count', integer},
|
||||||
description => <<"Date time, rfc3339">>
|
{'messages.in.rate', number},
|
||||||
},
|
{'messages.out.count', integer},
|
||||||
reset_time => #{
|
{'messages.out.rate', number},
|
||||||
type => string,
|
{'messages.qos0.in.count', integer},
|
||||||
description => <<"Nullable. Date time, rfc3339.">>
|
{'messages.qos0.in.rate', number},
|
||||||
},
|
{'messages.qos0.out.count', integer},
|
||||||
metrics => #{
|
{'messages.qos0.out.rate', number},
|
||||||
type => object,
|
{'messages.qos1.in.count', integer},
|
||||||
properties => #{
|
{'messages.qos1.in.rate', number},
|
||||||
'messages.dropped.count' => #{type => integer},
|
{'messages.qos1.out.count', integer},
|
||||||
'messages.dropped.rate' => #{type => number},
|
{'messages.qos1.out.rate', number},
|
||||||
'messages.in.count' => #{type => integer},
|
{'messages.qos2.in.count', integer},
|
||||||
'messages.in.rate' => #{type => number},
|
{'messages.qos2.in.rate', number},
|
||||||
'messages.out.count' => #{type => integer},
|
{'messages.qos2.out.count', integer},
|
||||||
'messages.out.rate' => #{type => number},
|
{'messages.qos2.out.rate', number}]}
|
||||||
'messages.qos0.in.count' => #{type => integer},
|
]).
|
||||||
'messages.qos0.in.rate' => #{type => number},
|
|
||||||
'messages.qos0.out.count' => #{type => integer},
|
|
||||||
'messages.qos0.out.rate' => #{type => number},
|
|
||||||
'messages.qos1.in.count' => #{type => integer},
|
|
||||||
'messages.qos1.in.rate' => #{type => number},
|
|
||||||
'messages.qos1.out.count' => #{type => integer},
|
|
||||||
'messages.qos1.out.rate' => #{type => number},
|
|
||||||
'messages.qos2.in.count' => #{type => integer},
|
|
||||||
'messages.qos2.in.rate' => #{type => number},
|
|
||||||
'messages.qos2.out.count' => #{type => integer},
|
|
||||||
'messages.qos2.out.rate' => #{type => number}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}.
|
|
||||||
|
|
||||||
list_topic_api() ->
|
list_topic_api() ->
|
||||||
Path = "/mqtt/topic_metrics",
|
Props = properties([{topic, string}]),
|
||||||
TopicSchema = #{
|
|
||||||
type => object,
|
|
||||||
properties => #{
|
|
||||||
topic => #{
|
|
||||||
type => string}}},
|
|
||||||
MetaData = #{
|
MetaData = #{
|
||||||
get => #{
|
get => #{
|
||||||
description => <<"List topic">>,
|
description => <<"List topic">>,
|
||||||
responses => #{
|
responses => #{<<"200">> => object_array_schema(Props, <<"List topic">>)}
|
||||||
<<"200">> =>
|
}
|
||||||
response_array_schema(<<"List topic">>, TopicSchema)}}},
|
},
|
||||||
{Path, MetaData, list_topic}.
|
{"/mqtt/topic_metrics", MetaData, list_topic}.
|
||||||
|
|
||||||
list_topic_metrics_api() ->
|
list_topic_metrics_api() ->
|
||||||
Path = "/mqtt/topic_metrics/metrics",
|
|
||||||
MetaData = #{
|
MetaData = #{
|
||||||
get => #{
|
get => #{
|
||||||
description => <<"List topic metrics">>,
|
description => <<"List topic metrics">>,
|
||||||
responses => #{
|
responses => #{
|
||||||
<<"200">> =>
|
<<"200">> => object_array_schema(properties(), <<"List topic metrics">>)
|
||||||
response_array_schema(<<"List topic metrics">>, topic_metrics)}}},
|
}
|
||||||
{Path, MetaData, list_topic_metrics}.
|
}
|
||||||
|
},
|
||||||
|
{"/mqtt/topic_metrics/metrics", MetaData, list_topic_metrics}.
|
||||||
|
|
||||||
get_topic_metrics_api() ->
|
get_topic_metrics_api() ->
|
||||||
Path = "/mqtt/topic_metrics/metrics/:topic",
|
|
||||||
MetaData = #{
|
MetaData = #{
|
||||||
get => #{
|
get => #{
|
||||||
description => <<"List topic metrics">>,
|
description => <<"List topic metrics">>,
|
||||||
parameters => [topic_param()],
|
parameters => [topic_param()],
|
||||||
responses => #{
|
responses => #{
|
||||||
<<"200">> =>
|
<<"200">> => object_schema(properties(), <<"List topic metrics">>)}},
|
||||||
response_schema(<<"List topic metrics">>, topic_metrics)}},
|
|
||||||
put => #{
|
put => #{
|
||||||
description => <<"Register topic metrics">>,
|
description => <<"Register topic metrics">>,
|
||||||
parameters => [topic_param()],
|
parameters => [topic_param()],
|
||||||
responses => #{
|
responses => #{
|
||||||
<<"200">> =>
|
<<"200">> => schema(<<"Register topic metrics">>),
|
||||||
response_schema(<<"Register topic metrics">>),
|
<<"409">> => error_schema(<<"Topic metrics max limit">>, [?EXCEED_LIMIT]),
|
||||||
<<"409">> =>
|
<<"400">> => error_schema(<<"Topic metrics already exist">>, [?BAD_REQUEST])
|
||||||
response_error_schema(<<"Topic metrics max limit">>, [?EXCEED_LIMIT]),
|
}
|
||||||
<<"400">> =>
|
},
|
||||||
response_error_schema(<<"Topic metrics already exist">>, [?BAD_REQUEST])}},
|
|
||||||
delete => #{
|
delete => #{
|
||||||
description => <<"Deregister topic metrics">>,
|
description => <<"Deregister topic metrics">>,
|
||||||
parameters => [topic_param()],
|
parameters => [topic_param()],
|
||||||
responses => #{
|
responses => #{ <<"200">> => schema(<<"Deregister topic metrics">>)}
|
||||||
<<"200">> =>
|
}
|
||||||
response_schema(<<"Deregister topic metrics">>)}}},
|
},
|
||||||
{Path, MetaData, operate_topic_metrics}.
|
{"/mqtt/topic_metrics/metrics/:topic", MetaData, operate_topic_metrics}.
|
||||||
|
|
||||||
reset_all_topic_metrics_api() ->
|
reset_all_topic_metrics_api() ->
|
||||||
Path = "/mqtt/topic_metrics/reset",
|
|
||||||
MetaData = #{
|
MetaData = #{
|
||||||
put => #{
|
put => #{
|
||||||
description => <<"Reset all topic metrics">>,
|
description => <<"Reset all topic metrics">>,
|
||||||
responses => #{
|
responses => #{<<"200">> => schema(<<"Reset all topic metrics">>)}
|
||||||
<<"200">> =>
|
}
|
||||||
response_schema(<<"Reset all topic metrics">>)}}},
|
},
|
||||||
{Path, MetaData, reset_all_topic_metrics}.
|
{"/mqtt/topic_metrics/reset", MetaData, reset_all_topic_metrics}.
|
||||||
|
|
||||||
reset_topic_metrics_api() ->
|
reset_topic_metrics_api() ->
|
||||||
Path = "/mqtt/topic_metrics/reset/:topic",
|
Path = "/mqtt/topic_metrics/reset/:topic",
|
||||||
|
@ -163,9 +138,9 @@ reset_topic_metrics_api() ->
|
||||||
put => #{
|
put => #{
|
||||||
description => <<"Reset topic metrics">>,
|
description => <<"Reset topic metrics">>,
|
||||||
parameters => [topic_param()],
|
parameters => [topic_param()],
|
||||||
responses => #{
|
responses => #{<<"200">> => schema(<<"Reset topic metrics">>)}
|
||||||
<<"200">> =>
|
}
|
||||||
response_schema(<<"Reset topic metrics">>)}}},
|
},
|
||||||
{Path, MetaData, reset_topic_metrics}.
|
{Path, MetaData, reset_topic_metrics}.
|
||||||
|
|
||||||
topic_param() ->
|
topic_param() ->
|
||||||
|
|
Loading…
Reference in New Issue