Skip to content

Commit

Permalink
Add types
Browse files Browse the repository at this point in the history
  • Loading branch information
arcusfelis committed Jun 14, 2022
1 parent d1a9e5c commit da3fc47
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
1 change: 1 addition & 0 deletions src/graphql/admin/mongoose_graphql_metric_admin_query.erl
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ execute(_Ctx, _Obj, <<"getClusterMetricsAsDicts">>, Args) ->
Nodes = get_nodes(Args),
mongoose_metrics_api:get_cluster_metrics_as_dicts(Name, Keys, Nodes).

%% get_keys is a BIF, so we have a name conflict
get_keys2(Args) ->
Keys = get_list(<<"keys">>, Args),
lists:map(fun prepare_key/1, Keys).
Expand Down
18 changes: 14 additions & 4 deletions src/metrics/mongoose_metrics_api.erl
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,29 @@

-type name() :: [atom() | integer()].
-type key() :: atom().

-spec get_metrics(Name :: name()) -> {ok, list()}.
-type metric_result() ::
{ok, #{binary() => binary() | non_neg_integer()}}.
-type dict_result() :: #{binary() => binary() | non_neg_integer()}.
-type metric_dict_result() ::
{ok, #{binary() => binary() | [dict_result()]}}.
-type metric_node_dict_result() ::
{ok, #{binary() => binary() | [metric_dict_result()]}}
| {error, binary()}.

-spec get_metrics(Name :: name()) -> {ok, [metric_result()]}.
get_metrics(Name) ->
Values = exometer:get_values(Name),
{ok, lists:map(fun make_metric_result/1, Values)}.

-spec get_metrics_as_dicts(Name :: name(), Keys :: [key()]) -> {ok, list()}.
-spec get_metrics_as_dicts(Name :: name(), Keys :: [key()]) ->
{ok, [metric_dict_result()]}.
get_metrics_as_dicts(Name, Keys) ->
Values = exometer:get_values(Name),
{ok, [make_metric_dict_result(V, Keys) || V <- Values]}.

-spec get_cluster_metrics_as_dicts(Name :: name(), Keys :: [key()],
Nodes :: [node()]) -> {ok, list()}.
Nodes :: [node()]) ->
{ok, [metric_node_dict_result()]}.
get_cluster_metrics_as_dicts(Name, Keys, Nodes) ->
Nodes2 = existing_nodes(Nodes),
F = fun(Node) -> rpc:call(Node, exometer, get_values, [Name]) end,
Expand Down

0 comments on commit da3fc47

Please sign in to comment.