This repository has been archived on 2023-04-02. You can view files and clone it, but cannot push or open issues or pull requests.
gitops-tbrnt/monitoring/vendor/github.com/grafana/grafonnet-lib/grafonnet/influxdb.libsonnet

105 lines
3.0 KiB
Plaintext

{
/**
* Creates an [InfluxDB target](https://grafana.com/docs/grafana/latest/features/datasources/influxdb/)
*
* @name influxdb.target
*
* @param query Raw InfluxQL statement
*
* @param alias (optional) 'Alias By' pattern
* @param datasource (optional) Datasource
* @param hide (optional) Disable query on graph
*
* @param rawQuery (optional) Enable/disable raw query mode
*
* @param policy (default: `'default'`) Tagged query 'From' policy
* @param measurement (optional) Tagged query 'From' measurement
* @param group_time (default: `'$__interval'`) 'Group by' time condition (if set to null, do not groups by time)
* @param group_tags (optional) 'Group by' tags list
* @param fill (default: `'none'`) 'Group by' missing values fill mode (works only with 'Group by time()')
*
* @param resultFormat (default: `'time_series'`) Format results as 'Time series' or 'Table'
*
* @return Panel target
*/
target(
query=null,
alias=null,
datasource=null,
hide=null,
rawQuery=null,
policy='default',
measurement=null,
group_time='$__interval',
group_tags=[],
fill='none',
resultFormat='time_series',
):: {
local it = self,
[if alias != null then 'alias']: alias,
[if datasource != null then 'datasource']: datasource,
[if hide != null then 'hide']: hide,
[if query != null then 'query']: query,
[if rawQuery != null then 'rawQuery']: rawQuery,
[if rawQuery == null && query != null then 'rawQuery']: true,
policy: policy,
[if measurement != null then 'measurement']: measurement,
tags: [],
select: [],
groupBy:
if group_time != null then
[{ type: 'time', params: [group_time] }] +
[{ type: 'tag', params: [tag_name] } for tag_name in group_tags] +
[{ type: 'fill', params: [fill] }]
else
[{ type: 'tag', params: [tag_name] } for tag_name in group_tags],
resultFormat: resultFormat,
where(key, operator, value, condition=null):: self {
/*
* Adds query tag condition ('Where' section)
*/
tags:
if std.length(it.tags) == 0 then
[{ key: key, operator: operator, value: value }]
else
it.tags + [{
key: key,
operator: operator,
value: value,
condition: if condition == null then 'AND' else condition,
}],
},
selectField(value):: self {
/*
* Adds InfluxDB selection ('field(value)' part of 'Select' statement)
*/
select+: [[{ params: [value], type: 'field' }]],
},
addConverter(type, params=[]):: self {
/*
* Appends converter (aggregation, selector, etc.) to last added selection
*/
local len = std.length(it.select),
select:
if len == 1 then
[it.select[0] + [{ params: params, type: type }]]
else if len > 1 then
it.select[0:(len - 1)] + [it.select[len - 1] + [{ params: params, type: type }]]
else
[],
},
},
}