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