kindsys: Adapt to new flattened lineage syntax in Thema (#68034)

* Update all core kinds to flattened lineages

* Regen Go types, without any

* Regen Go types, s/interface{}/any/

* Update generated core typescript

* Update generate docs

* Fix defaults gen in veneer index jenny

* Flatten plugindef lineage

* Convert all plugin kinds to flattened form

* Switch back to interface{} for now

* Switch to fs.Sub in plugin DeclParser

* Mostly undesirable codegen changes, to be fixed

* Update mod and sum

* Update pfs tests to flattened lineages

* Update thema to latest, regen docs
This commit is contained in:
sam boyer 2023-05-24 04:47:25 -04:00 committed by GitHub
parent 2ceed6a169
commit 323cbe1997
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
80 changed files with 3296 additions and 3205 deletions

View File

@ -13,19 +13,17 @@ title: ElasticsearchDataQuery kind
It extends [DataQuery](#dataquery).
| Property | Type | Required | Default | Description |
|--------------|-------------------------------------------|----------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `refId` | string | **Yes** | | *(Inherited from [DataQuery](#dataquery))*<br/>A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `alias` | string | No | | Alias pattern |
| `bucketAggs` | [BucketAggregation](#bucketaggregation)[] | No | | List of bucket aggregations |
| `datasource` | | No | | *(Inherited from [DataQuery](#dataquery))*<br/>For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `hide` | boolean | No | | *(Inherited from [DataQuery](#dataquery))*<br/>true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `metrics` | [MetricAggregation](#metricaggregation)[] | No | | List of metric aggregations |
| `queryType` | string | No | | *(Inherited from [DataQuery](#dataquery))*<br/>Specify the query flavor<br/>TODO make this required and give it a default |
| `query` | string | No | | Lucene query |
| `timeField` | string | No | | Name of time field |
| Property | Type | Required | Default | Description |
|--------------|-------------------------------------------|----------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `refId` | string | **Yes** | | A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `alias` | string | No | | Alias pattern |
| `bucketAggs` | [BucketAggregation](#bucketaggregation)[] | No | | List of bucket aggregations |
| `datasource` | | No | | For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `hide` | boolean | No | | true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `metrics` | [MetricAggregation](#metricaggregation)[] | No | | List of metric aggregations |
| `queryType` | string | No | | Specify the query flavor<br/>TODO make this required and give it a default |
| `query` | string | No | | Lucene query |
| `timeField` | string | No | | Name of time field |
### BucketAggregation
@ -117,19 +115,6 @@ It extends [BucketAggregationWithField](#bucketaggregationwithfield).
| `id` | string | No | | *(Inherited from [BucketAggregationWithField](#bucketaggregationwithfield))* |
| `settings` | | No | | *(Inherited from [BucketAggregationWithField](#bucketaggregationwithfield))* |
### DataQuery
These are the common properties available to all queries in all datasources.
Specific implementations will *extend* this interface, adding the required
properties for the given context.
| Property | Type | Required | Default | Description |
|--------------|---------|----------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `refId` | string | **Yes** | | A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `hide` | boolean | No | | true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `queryType` | string | No | | Specify the query flavor<br/>TODO make this required and give it a default |
### MetricAggregation
| Property | Type | Required | Default | Description |

View File

@ -13,30 +13,15 @@ title: GrafanaPyroscopeDataQuery kind
It extends [DataQuery](#dataquery).
| Property | Type | Required | Default | Description |
|-----------------|----------|----------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `groupBy` | string[] | **Yes** | | Allows to group the results. |
| `labelSelector` | string | **Yes** | `{}` | Specifies the query label selectors. |
| `profileTypeId` | string | **Yes** | | Specifies the type of profile to query. |
| `refId` | string | **Yes** | | *(Inherited from [DataQuery](#dataquery))*<br/>A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | *(Inherited from [DataQuery](#dataquery))*<br/>For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `hide` | boolean | No | | *(Inherited from [DataQuery](#dataquery))*<br/>true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `maxNodes` | integer | No | | Sets the maximum number of nodes in the flamegraph. |
| `queryType` | string | No | | *(Inherited from [DataQuery](#dataquery))*<br/>Specify the query flavor<br/>TODO make this required and give it a default |
### DataQuery
These are the common properties available to all queries in all datasources.
Specific implementations will *extend* this interface, adding the required
properties for the given context.
| Property | Type | Required | Default | Description |
|--------------|---------|----------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `refId` | string | **Yes** | | A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `hide` | boolean | No | | true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `queryType` | string | No | | Specify the query flavor<br/>TODO make this required and give it a default |
| Property | Type | Required | Default | Description |
|-----------------|----------|----------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `groupBy` | string[] | **Yes** | | Allows to group the results. |
| `labelSelector` | string | **Yes** | `{}` | Specifies the query label selectors. |
| `profileTypeId` | string | **Yes** | | Specifies the type of profile to query. |
| `refId` | string | **Yes** | | A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `hide` | boolean | No | | true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `maxNodes` | integer | No | | Sets the maximum number of nodes in the flamegraph. |
| `queryType` | string | No | | Specify the query flavor<br/>TODO make this required and give it a default |

View File

@ -13,33 +13,18 @@ title: LokiDataQuery kind
It extends [DataQuery](#dataquery).
| Property | Type | Required | Default | Description |
|----------------|---------|----------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `expr` | string | **Yes** | | The LogQL query. |
| `refId` | string | **Yes** | | *(Inherited from [DataQuery](#dataquery))*<br/>A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | *(Inherited from [DataQuery](#dataquery))*<br/>For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `editorMode` | string | No | | Possible values are: `code`, `builder`. |
| `hide` | boolean | No | | *(Inherited from [DataQuery](#dataquery))*<br/>true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `instant` | boolean | No | | @deprecated, now use queryType. |
| `legendFormat` | string | No | | Used to override the name of the series. |
| `maxLines` | integer | No | | Used to limit the number of log rows returned. |
| `queryType` | string | No | | *(Inherited from [DataQuery](#dataquery))*<br/>Specify the query flavor<br/>TODO make this required and give it a default |
| `range` | boolean | No | | @deprecated, now use queryType. |
| `resolution` | integer | No | | Used to scale the interval value. |
### DataQuery
These are the common properties available to all queries in all datasources.
Specific implementations will *extend* this interface, adding the required
properties for the given context.
| Property | Type | Required | Default | Description |
|--------------|---------|----------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `refId` | string | **Yes** | | A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `hide` | boolean | No | | true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `queryType` | string | No | | Specify the query flavor<br/>TODO make this required and give it a default |
| Property | Type | Required | Default | Description |
|----------------|---------|----------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `expr` | string | **Yes** | | The LogQL query. |
| `refId` | string | **Yes** | | A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `editorMode` | string | No | | Possible values are: `code`, `builder`. |
| `hide` | boolean | No | | true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `instant` | boolean | No | | @deprecated, now use queryType. |
| `legendFormat` | string | No | | Used to override the name of the series. |
| `maxLines` | integer | No | | Used to limit the number of log rows returned. |
| `queryType` | string | No | | Specify the query flavor<br/>TODO make this required and give it a default |
| `range` | boolean | No | | @deprecated, now use queryType. |
| `resolution` | integer | No | | Used to scale the interval value. |

View File

@ -13,28 +13,13 @@ title: ParcaDataQuery kind
It extends [DataQuery](#dataquery).
| Property | Type | Required | Default | Description |
|-----------------|---------|----------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `labelSelector` | string | **Yes** | `{}` | Specifies the query label selectors. |
| `profileTypeId` | string | **Yes** | | Specifies the type of profile to query. |
| `refId` | string | **Yes** | | *(Inherited from [DataQuery](#dataquery))*<br/>A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | *(Inherited from [DataQuery](#dataquery))*<br/>For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `hide` | boolean | No | | *(Inherited from [DataQuery](#dataquery))*<br/>true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `queryType` | string | No | | *(Inherited from [DataQuery](#dataquery))*<br/>Specify the query flavor<br/>TODO make this required and give it a default |
### DataQuery
These are the common properties available to all queries in all datasources.
Specific implementations will *extend* this interface, adding the required
properties for the given context.
| Property | Type | Required | Default | Description |
|--------------|---------|----------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `refId` | string | **Yes** | | A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `hide` | boolean | No | | true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `queryType` | string | No | | Specify the query flavor<br/>TODO make this required and give it a default |
| Property | Type | Required | Default | Description |
|-----------------|---------|----------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `labelSelector` | string | **Yes** | `{}` | Specifies the query label selectors. |
| `profileTypeId` | string | **Yes** | | Specifies the type of profile to query. |
| `refId` | string | **Yes** | | A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `hide` | boolean | No | | true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `queryType` | string | No | | Specify the query flavor<br/>TODO make this required and give it a default |

View File

@ -13,34 +13,19 @@ title: PrometheusDataQuery kind
It extends [DataQuery](#dataquery).
| Property | Type | Required | Default | Description |
|------------------|---------|----------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `expr` | string | **Yes** | | The actual expression/query that will be evaluated by Prometheus |
| `refId` | string | **Yes** | | *(Inherited from [DataQuery](#dataquery))*<br/>A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | *(Inherited from [DataQuery](#dataquery))*<br/>For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `editorMode` | string | No | | Possible values are: `code`, `builder`. |
| `exemplar` | boolean | No | | Execute an additional query to identify interesting raw samples relevant for the given expr |
| `format` | string | No | | Possible values are: `time_series`, `table`, `heatmap`. |
| `hide` | boolean | No | | *(Inherited from [DataQuery](#dataquery))*<br/>true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `instant` | boolean | No | | Returns only the latest value that Prometheus has scraped for the requested time series |
| `intervalFactor` | number | No | | @deprecated Used to specify how many times to divide max data points by. We use max data points under query options<br/>See https://github.com/grafana/grafana/issues/48081 |
| `legendFormat` | string | No | | Series name override or template. Ex. {{hostname}} will be replaced with label value for hostname |
| `queryType` | string | No | | *(Inherited from [DataQuery](#dataquery))*<br/>Specify the query flavor<br/>TODO make this required and give it a default |
| `range` | boolean | No | | Returns a Range vector, comprised of a set of time series containing a range of data points over time for each time series |
### DataQuery
These are the common properties available to all queries in all datasources.
Specific implementations will *extend* this interface, adding the required
properties for the given context.
| Property | Type | Required | Default | Description |
|--------------|---------|----------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `refId` | string | **Yes** | | A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `hide` | boolean | No | | true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `queryType` | string | No | | Specify the query flavor<br/>TODO make this required and give it a default |
| Property | Type | Required | Default | Description |
|------------------|---------|----------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `expr` | string | **Yes** | | The actual expression/query that will be evaluated by Prometheus |
| `refId` | string | **Yes** | | A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `editorMode` | string | No | | Possible values are: `code`, `builder`. |
| `exemplar` | boolean | No | | Execute an additional query to identify interesting raw samples relevant for the given expr |
| `format` | string | No | | Possible values are: `time_series`, `table`, `heatmap`. |
| `hide` | boolean | No | | true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `instant` | boolean | No | | Returns only the latest value that Prometheus has scraped for the requested time series |
| `intervalFactor` | number | No | | @deprecated Used to specify how many times to divide max data points by. We use max data points under query options<br/>See https://github.com/grafana/grafana/issues/48081 |
| `legendFormat` | string | No | | Series name override or template. Ex. {{hostname}} will be replaced with label value for hostname |
| `queryType` | string | No | | Specify the query flavor<br/>TODO make this required and give it a default |
| `range` | boolean | No | | Returns a Range vector, comprised of a set of time series containing a range of data points over time for each time series |

View File

@ -13,26 +13,24 @@ title: TestDataDataQuery kind
It extends [DataQuery](#dataquery).
| Property | Type | Required | Default | Description |
|-------------------|-------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `refId` | string | **Yes** | | *(Inherited from [DataQuery](#dataquery))*<br/>A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `refId` | string | **Yes** | | A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `alias` | string | No | | |
| `channel` | string | No | | |
| `csvContent` | string | No | | |
| `csvFileName` | string | No | | |
| `csvWave` | [CSVWave](#csvwave)[] | No | | |
| `datasource` | | No | | *(Inherited from [DataQuery](#dataquery))*<br/>For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `datasource` | | No | | For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `errorType` | string | No | | Possible values are: `server_panic`, `frontend_exception`, `frontend_observable`. |
| `hide` | boolean | No | | *(Inherited from [DataQuery](#dataquery))*<br/>true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `hide` | boolean | No | | true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `labels` | string | No | | |
| `levelColumn` | boolean | No | | |
| `lines` | integer | No | | |
| `nodes` | [NodesQuery](#nodesquery) | No | | |
| `points` | array[] | No | | |
| `pulseWave` | [PulseWaveQuery](#pulsewavequery) | No | | |
| `queryType` | string | No | | *(Inherited from [DataQuery](#dataquery))*<br/>Specify the query flavor<br/>TODO make this required and give it a default |
| `queryType` | string | No | | Specify the query flavor<br/>TODO make this required and give it a default |
| `rawFrameContent` | string | No | | |
| `scenarioId` | string | No | | Possible values are: `random_walk`, `slow_query`, `random_walk_with_error`, `random_walk_table`, `exponential_heatmap_bucket_data`, `linear_heatmap_bucket_data`, `no_data_points`, `datapoints_outside_range`, `csv_metric_values`, `predictable_pulse`, `predictable_csv_wave`, `streaming_client`, `simulation`, `usa`, `live`, `grafana_api`, `arrow`, `annotations`, `table_static`, `server_error_500`, `logs`, `node_graph`, `flame_graph`, `raw_frame`, `csv_file`, `csv_content`, `trace`, `manual_entry`, `variables-query`. |
| `seriesCount` | integer | No | | |
@ -51,19 +49,6 @@ It extends [DataQuery](#dataquery).
| `timeStep` | integer | No | | |
| `valuesCSV` | string | No | | |
### DataQuery
These are the common properties available to all queries in all datasources.
Specific implementations will *extend* this interface, adding the required
properties for the given context.
| Property | Type | Required | Default | Description |
|--------------|---------|----------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `refId` | string | **Yes** | | A unique identifier for the query within the list of targets.<br/>In server side expressions, the refId is used as a variable name to identify results.<br/>By default, the UI will assign A->Z; however setting meaningful names may be useful. |
| `datasource` | | No | | For mixed data sources the selected datasource is on the query level.<br/>For non mixed scenarios this is undefined.<br/>TODO find a better way to do this ^ that's friendly to schema<br/>TODO this shouldn't be unknown but DataSourceRef &#124; null |
| `hide` | boolean | No | | true if query is disabled (ie should not be returned to the dashboard)<br/>Note this does not always imply that the query should not be executed since<br/>the results from a hidden query may be used as the input to other queries (SSE etc) |
| `queryType` | string | No | | Specify the query flavor<br/>TODO make this required and give it a default |
### NodesQuery
| Property | Type | Required | Default | Description |

View File

@ -661,10 +661,10 @@ TODO this appears to be spread all over in the frontend. Concepts will likely ne
### Status
| Property | Type | Required | Default | Description |
|--------------------|----------------------------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][joinSchema.status.#OperatorState](#joinschema.status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
| Property | Type | Required | Default | Description |
|--------------------|------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][status.#OperatorState](#status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
### AdditionalFields
@ -673,7 +673,7 @@ additionalFields is reserved for future use
| Property | Type | Required | Default | Description |
|----------|------|----------|---------|-------------|
### JoinSchema.Status.#OperatorState
### Status.#OperatorState
| Property | Type | Required | Default | Description |
|--------------------|--------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

View File

@ -16,7 +16,7 @@ A folder is a collection of resources that are grouped together and can share pe
| Property | Type | Required | Default | Description |
|------------|---------------------|----------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `metadata` | [object](#metadata) | **Yes** | | metadata contains embedded CommonMetadata and can be extended with custom string fields<br/>TODO: use CommonMetadata instead of redefining here; currently needs to be defined here<br/>without external reference as using the CommonMetadata reference breaks thema codegen. |
| `spec` | [object](#spec) | **Yes** | | |
| `spec` | [object](#spec) | **Yes** | | TODO:<br/>common metadata will soon support setting the parent folder in the metadata |
| `status` | [object](#status) | **Yes** | | |
### Metadata
@ -64,6 +64,9 @@ extraFields is reserved for any fields that are pulled from the API server metad
### Spec
TODO:
common metadata will soon support setting the parent folder in the metadata
| Property | Type | Required | Default | Description |
|---------------|--------|----------|---------|--------------------------------------|
| `title` | string | **Yes** | | Folder title |
@ -72,10 +75,10 @@ extraFields is reserved for any fields that are pulled from the API server metad
### Status
| Property | Type | Required | Default | Description |
|--------------------|----------------------------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][joinSchema.status.#OperatorState](#joinschema.status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
| Property | Type | Required | Default | Description |
|--------------------|------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][status.#OperatorState](#status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
### AdditionalFields
@ -84,7 +87,7 @@ additionalFields is reserved for future use
| Property | Type | Required | Default | Description |
|----------|------|----------|---------|-------------|
### JoinSchema.Status.#OperatorState
### Status.#OperatorState
| Property | Type | Required | Default | Description |
|--------------------|--------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

View File

@ -106,10 +106,10 @@ Typescript: Omit<Panel, 'gridPos' | 'id' | 'libraryPanel'>;
### Status
| Property | Type | Required | Default | Description |
|--------------------|----------------------------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][joinSchema.status.#OperatorState](#joinschema.status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
| Property | Type | Required | Default | Description |
|--------------------|------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][status.#OperatorState](#status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
### AdditionalFields
@ -118,7 +118,7 @@ additionalFields is reserved for future use
| Property | Type | Required | Default | Description |
|----------|------|----------|---------|-------------|
### JoinSchema.Status.#OperatorState
### Status.#OperatorState
| Property | Type | Required | Default | Description |
|--------------------|--------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

View File

@ -81,10 +81,10 @@ extraFields is reserved for any fields that are pulled from the API server metad
### Status
| Property | Type | Required | Default | Description |
|--------------------|----------------------------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][joinSchema.status.#OperatorState](#joinschema.status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
| Property | Type | Required | Default | Description |
|--------------------|------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][status.#OperatorState](#status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
### AdditionalFields
@ -93,7 +93,7 @@ additionalFields is reserved for future use
| Property | Type | Required | Default | Description |
|----------|------|----------|---------|-------------|
### JoinSchema.Status.#OperatorState
### Status.#OperatorState
| Property | Type | Required | Default | Description |
|--------------------|--------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

View File

@ -81,10 +81,10 @@ extraFields is reserved for any fields that are pulled from the API server metad
### Status
| Property | Type | Required | Default | Description |
|--------------------|----------------------------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][joinSchema.status.#OperatorState](#joinschema.status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
| Property | Type | Required | Default | Description |
|--------------------|------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][status.#OperatorState](#status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
### AdditionalFields
@ -93,7 +93,7 @@ additionalFields is reserved for future use
| Property | Type | Required | Default | Description |
|----------|------|----------|---------|-------------|
### JoinSchema.Status.#OperatorState
### Status.#OperatorState
| Property | Type | Required | Default | Description |
|--------------------|--------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

View File

@ -75,10 +75,10 @@ extraFields is reserved for any fields that are pulled from the API server metad
### Status
| Property | Type | Required | Default | Description |
|--------------------|----------------------------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][joinSchema.status.#OperatorState](#joinschema.status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
| Property | Type | Required | Default | Description |
|--------------------|------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][status.#OperatorState](#status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
### AdditionalFields
@ -87,7 +87,7 @@ additionalFields is reserved for future use
| Property | Type | Required | Default | Description |
|----------|------|----------|---------|-------------|
### JoinSchema.Status.#OperatorState
### Status.#OperatorState
| Property | Type | Required | Default | Description |
|--------------------|--------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

View File

@ -79,10 +79,10 @@ extraFields is reserved for any fields that are pulled from the API server metad
### Status
| Property | Type | Required | Default | Description |
|--------------------|----------------------------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][joinSchema.status.#OperatorState](#joinschema.status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
| Property | Type | Required | Default | Description |
|--------------------|------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][status.#OperatorState](#status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
### AdditionalFields
@ -91,7 +91,7 @@ additionalFields is reserved for future use
| Property | Type | Required | Default | Description |
|----------|------|----------|---------|-------------|
### JoinSchema.Status.#OperatorState
### Status.#OperatorState
| Property | Type | Required | Default | Description |
|--------------------|--------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

View File

@ -71,10 +71,10 @@ extraFields is reserved for any fields that are pulled from the API server metad
### Status
| Property | Type | Required | Default | Description |
|--------------------|----------------------------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][joinSchema.status.#OperatorState](#joinschema.status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
| Property | Type | Required | Default | Description |
|--------------------|------------------------------------------------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `additionalFields` | [object](#additionalfields) | No | | additionalFields is reserved for future use |
| `operatorStates` | map[string][status.#OperatorState](#status.#operatorstate) | No | | operatorStates is a map of operator ID to operator state evaluations.<br/>Any operator which consumes this kind SHOULD add its state evaluation information to this field. |
### AdditionalFields
@ -83,7 +83,7 @@ additionalFields is reserved for future use
| Property | Type | Required | Default | Description |
|----------|------|----------|---------|-------------|
### JoinSchema.Status.#OperatorState
### Status.#OperatorState
| Property | Type | Required | Default | Description |
|--------------------|--------------------|----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

11
go.mod
View File

@ -264,8 +264,8 @@ require (
github.com/grafana/dataplane/examples v0.0.0-20230404174214-4d6fd58a18ad
github.com/grafana/dataplane/sdata v0.0.6
github.com/grafana/go-mssqldb v0.9.1
github.com/grafana/kindsys v0.0.0-20230508175818-7ad73516220b
github.com/grafana/thema v0.0.0-20230417103609-99b482c479fe
github.com/grafana/kindsys v0.0.0-20230508162304-452481b63482
github.com/grafana/thema v0.0.0-20230523123227-db9596a7096e
github.com/redis/go-redis/v9 v9.0.2
github.com/weaveworks/common v0.0.0-20230208133027-16871410fca4
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f
@ -285,6 +285,9 @@ require (
github.com/bmatcuk/doublestar v1.1.1 // indirect
github.com/buildkite/yaml v2.1.0+incompatible // indirect
github.com/cloudflare/circl v1.1.0 // indirect
github.com/cockroachdb/errors v1.9.1 // indirect
github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect
github.com/cockroachdb/redact v1.1.3 // indirect
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
@ -294,6 +297,7 @@ require (
github.com/drone/drone-go v1.7.1 // indirect
github.com/drone/envsubst v1.0.3 // indirect
github.com/drone/runner-go v1.12.0 // indirect
github.com/getsentry/sentry-go v0.12.0 // indirect
github.com/go-asn1-ber/asn1-ber v1.5.4 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect
@ -303,6 +307,7 @@ require (
github.com/hashicorp/golang-lru/v2 v2.0.2 // indirect
github.com/hashicorp/memberlist v0.5.0 // indirect
github.com/invopop/yaml v0.1.0 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-ieproxy v0.0.3 // indirect
@ -314,6 +319,7 @@ require (
github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect
github.com/perimeterx/marshmallow v1.1.4 // indirect
github.com/rivo/uniseg v0.3.4 // indirect
github.com/rogpeppe/go-internal v1.9.0 // indirect
github.com/rueian/rueidis v0.0.100-go1.18 // indirect
github.com/russross/blackfriday/v2 v2.1.0 // indirect
github.com/segmentio/asm v1.2.0 // indirect
@ -380,7 +386,6 @@ require (
github.com/wk8/go-ordered-map v1.0.0
github.com/xanzy/ssh-agent v0.3.0 // indirect
github.com/xlab/treeprint v1.1.0
github.com/yudai/pp v2.0.1+incompatible // indirect
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0 // indirect
go.opentelemetry.io/proto/otlp v0.19.0 // indirect
golang.org/x/mod v0.9.0 // indirect

89
go.sum
View File

@ -111,6 +111,7 @@ filippo.io/age v1.1.1/go.mod h1:l03SrzDUrBkdBx8+IILdnn2KZysqQdbEBUQ4p3sqEQE=
gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8=
github.com/99designs/basicauth-go v0.0.0-20160802081356-2a93ba0f464d/go.mod h1:3cARGAK9CfW3HoxCy1a0G4TKrdiKke8ftOMEOHyySYs=
github.com/99designs/httpsignatures-go v0.0.0-20170731043157-88528bf4ca7e/go.mod h1:Xa6lInWHNQnuWoF0YPSsx+INFA9qk7/7pTjwb3PInkY=
github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
github.com/Azure/azure-amqp-common-go/v3 v3.2.1/go.mod h1:O6X1iYHP7s2x7NjUKsXVhkwWrQhxrd+d8/3rRadj4CI=
github.com/Azure/azure-amqp-common-go/v3 v3.2.2/go.mod h1:O6X1iYHP7s2x7NjUKsXVhkwWrQhxrd+d8/3rRadj4CI=
github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U=
@ -177,6 +178,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno=
github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo=
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
@ -187,6 +190,7 @@ github.com/HdrHistogram/hdrhistogram-go v0.9.0/go.mod h1:nxrse8/Tzg2tg3DZcZjm6qE
github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=
github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM=
github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=
github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY=
github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
@ -204,7 +208,6 @@ github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2B
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ=
github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
github.com/ProtonMail/go-crypto v0.0.0-20230426101702-58e86b294756 h1:L6S7kR7SlhQKplIBpkra3s6yhcZV51lhRnXmYc4HohI=
github.com/ProtonMail/go-crypto v0.0.0-20230426101702-58e86b294756/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE=
@ -217,6 +220,7 @@ github.com/RoaringBitmap/real-roaring-datasets v0.0.0-20190726190000-eb7c87156f7
github.com/RoaringBitmap/roaring v0.9.1/go.mod h1:h1B7iIUOmnAeb5ytYMvnHJwxMc6LUrwBnzXWRuqTQUc=
github.com/RoaringBitmap/roaring v0.9.4 h1:ckvZSX5gwCRaJYBNe7syNawCU5oruY9gQmjXlp4riwo=
github.com/RoaringBitmap/roaring v0.9.4/go.mod h1:icnadbWcNyfEHlYdr+tDlOTih1Bf/h+rzPpv4sbomAA=
github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0=
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
github.com/Shopify/sarama v1.29.1/go.mod h1:mdtqvCSg8JOxk8PmpTNGyo6wzd4BMm4QXSfDnTXmgkE=
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
@ -228,6 +232,7 @@ github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk
github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
github.com/alecthomas/kingpin/v2 v2.3.1/go.mod h1:oYL5vtsvEHZGHxU7DMp32Dvx+qL+ptGn6lWaot2vCNE=
github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
@ -339,6 +344,7 @@ github.com/aws/smithy-go v1.11.2 h1:eG/N+CcUMAvsdffgMvjMKwfyDzIkjM6pfxMJ8Mzc6mE=
github.com/aws/smithy-go v1.11.2/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM=
github.com/axiomhq/hyperloglog v0.0.0-20191112132149-a4c4c47bc57f h1:y06x6vGnFYfXUoVMbrcP1Uzpj4JG01eB5vRps9G8agM=
github.com/axiomhq/hyperloglog v0.0.0-20191112132149-a4c4c47bc57f/go.mod h1:2stgcRjl6QmW+gU2h5E7BQXg4HU0gzxKWDuT5HviN9s=
github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g=
github.com/beevik/etree v1.1.0 h1:T0xke/WvNtMoCqgzPhkX2r4rjY3GDZFi+FjpRZY2Jbs=
github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
@ -438,7 +444,15 @@ github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b80
github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw=
github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk=
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU=
github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8=
github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk=
github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f h1:6jduT9Hfc0njg5jJ1DdKCFPdMBrp/mdZfCpa5h+WM74=
github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs=
github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ=
github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg=
github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM=
github.com/containerd/containerd v1.2.7/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA=
github.com/containerd/containerd v1.3.4/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA=
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
@ -494,6 +508,7 @@ github.com/deepmap/oapi-codegen v1.12.4/go.mod h1:3lgHGMu6myQ2vqbbTXH2H1o4eXFTGn
github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE=
github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA=
github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY=
github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4=
github.com/dgraph-io/badger/v3 v3.2103.0/go.mod h1:GHMCYxuDWyzbHkh4k3yyg4PM61tJPFfEGSMbE3Vd5QE=
github.com/dgraph-io/ristretto v0.0.4-0.20210309073149-3836124cdc5a/go.mod h1:MIonLggsKgZLUSt414ExgwNtlOL5MuEoAJP514mwGe8=
github.com/dgraph-io/ristretto v0.1.0/go.mod h1:fux0lOrBhrVCJd3lcTHsIJhq1T2rokOu6v9Vcb3Q9ug=
@ -549,6 +564,7 @@ github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt
github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ=
github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q=
github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM=
github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
github.com/elazarl/goproxy v0.0.0-20220115173737-adb46da277ac h1:XDAn206aIqKPdF5YczuuJXSQPx+WOen0Pxbxp5Fq8Pg=
github.com/elazarl/goproxy v0.0.0-20220115173737-adb46da277ac/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
@ -567,7 +583,9 @@ github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCw
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/envoyproxy/protoc-gen-validate v0.9.1 h1:PS7VIOgmSVhWUEeZwTe7z7zouA22Cr590PzXKbZHOVY=
github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w=
github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw=
github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
@ -600,6 +618,7 @@ github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmV
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
github.com/fsouza/fake-gcs-server v1.7.0/go.mod h1:5XIRs4YvwNbNoz+1JF8j6KLAyDh7RHGAyAK3EP2EsNk=
github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc=
github.com/gchaincl/sqlhooks v1.3.0 h1:yKPXxW9a5CjXaVf2HkQn6wn7TZARvbAOAelr3H8vK2Y=
github.com/gchaincl/sqlhooks v1.3.0/go.mod h1:9BypXnereMT0+Ys8WGWHqzgkkOfHIhyeUCqXC24ra34=
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
@ -608,10 +627,14 @@ github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW
github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg=
github.com/getkin/kin-openapi v0.115.0 h1:c8WHRLVY3G8m9jQTy0/DnIuljgRwTCB5twZytQS4JyU=
github.com/getkin/kin-openapi v0.115.0/go.mod h1:l5e9PaFUo9fyLJCPGQeXI2ML8c3P8BHOEV2VaAVf/pc=
github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk=
github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ERFA1PUxfmGpolnw2v0bKOREu5ew=
github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I=
github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s=
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM=
github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do=
github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
github.com/gin-gonic/gin v1.7.3/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY=
@ -621,7 +644,10 @@ github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0
github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
github.com/go-asn1-ber/asn1-ber v1.5.4 h1:vXT6d/FNDiELJnLb6hGNa309LMsrCoYFvpwHDF0+Y1A=
github.com/go-asn1-ber/asn1-ber v1.5.4/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98=
github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs=
github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w=
github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g=
github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks=
github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY=
@ -668,6 +694,7 @@ github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0=
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8=
github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI=
github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
@ -855,6 +882,7 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x
github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA=
github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4=
github.com/gogo/protobuf v0.0.0-20170307180453-100ba4e88506/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
@ -865,6 +893,8 @@ github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/gogo/status v1.0.3/go.mod h1:SavQ51ycCLnc7dGyJxp8YAmudx8xqiVrRf+6IXRsugc=
github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM=
github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.4.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
@ -922,6 +952,7 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219 h1:utua3L2IbQJmauC5IXdEA547bcoU5dozgQAfc8Onsg4=
github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA=
@ -1065,18 +1096,10 @@ github.com/grafana/grafana-google-sdk-go v0.1.0 h1:LKGY8z2DSxKjYfr2flZsWgTRTZ6HG
github.com/grafana/grafana-google-sdk-go v0.1.0/go.mod h1:Vo2TKWfDVmNTELBUM+3lkrZvFtBws0qSZdXhQxRdJrE=
github.com/grafana/grafana-plugin-sdk-go v0.94.0/go.mod h1:3VXz4nCv6wH5SfgB3mlW39s+c+LetqSCjFj7xxPC5+M=
github.com/grafana/grafana-plugin-sdk-go v0.114.0/go.mod h1:D7x3ah+1d4phNXpbnOaxa/osSaZlwh9/ZUnGGzegRbk=
github.com/grafana/grafana-plugin-sdk-go v0.160.0 h1:jELbsqee5kRz9vD1hZeP8+984xMZDU/M6uGv0RhOR34=
github.com/grafana/grafana-plugin-sdk-go v0.160.0/go.mod h1:dPhljkVno3Bg/ZYafMrR/BfYjtCRJD2hU2719Nl3QzM=
github.com/grafana/grafana-plugin-sdk-go v0.162.0 h1:ij2ARWohf0IoK9yCVC1Wup4Gp6zwBq2AueVXRYsv/to=
github.com/grafana/grafana-plugin-sdk-go v0.162.0/go.mod h1:dPhljkVno3Bg/ZYafMrR/BfYjtCRJD2hU2719Nl3QzM=
github.com/grafana/kindsys v0.0.0-20230323180930-c2a9ced5c751 h1:X5jwaMcpUMQ+xv7fKhs9U+oBxfo2x+x8GpHWybDSgk0=
github.com/grafana/kindsys v0.0.0-20230323180930-c2a9ced5c751/go.mod h1:213a3clTiegHfheYcLPLeEyHv/azK/fAF67OEbzuLzw=
github.com/grafana/kindsys v0.0.0-20230427152021-bb328815be7a h1:i2YhC6eTyDp+7Ftv5c6VZDUQskmKX4oIPGf38qfiZiU=
github.com/grafana/kindsys v0.0.0-20230427152021-bb328815be7a/go.mod h1:GNcfpy5+SY6RVbNGQW264gC0r336Dm+0zgQ5vt6+M8Y=
github.com/grafana/kindsys v0.0.0-20230508172648-19fc432f045a h1:L8Qph5iUyVnLGinQzPmtJYUtPDG4TyT6vGDFT9EdCTU=
github.com/grafana/kindsys v0.0.0-20230508172648-19fc432f045a/go.mod h1:GNcfpy5+SY6RVbNGQW264gC0r336Dm+0zgQ5vt6+M8Y=
github.com/grafana/kindsys v0.0.0-20230508175818-7ad73516220b h1:x3gw5zsWZ2vxQ0GYucB2PFQ6eISAoWkba5MrQd8ZK0E=
github.com/grafana/kindsys v0.0.0-20230508175818-7ad73516220b/go.mod h1:GNcfpy5+SY6RVbNGQW264gC0r336Dm+0zgQ5vt6+M8Y=
github.com/grafana/kindsys v0.0.0-20230508162304-452481b63482 h1:1YNoeIhii4UIIQpCPU+EXidnqf449d0C3ZntAEt4KSo=
github.com/grafana/kindsys v0.0.0-20230508162304-452481b63482/go.mod h1:GNcfpy5+SY6RVbNGQW264gC0r336Dm+0zgQ5vt6+M8Y=
github.com/grafana/phlare/api v0.1.4-0.20230426005640-f90edba05413 h1:bBzCezZNRyYlJpXTkyZdY4fpPxHZUdyeyRWzhtw/P6I=
github.com/grafana/phlare/api v0.1.4-0.20230426005640-f90edba05413/go.mod h1:IvwuGG9xa/h96UH/exgvsfy3zE+ZpctkNT9o5aaGdrU=
github.com/grafana/prometheus-alertmanager v0.25.1-0.20230508090422-7d5630522a53 h1:X3Jl4PBIGCtlPSMa6Uiu2+3FDNWmddSjivp+1DDznQs=
@ -1087,8 +1110,8 @@ github.com/grafana/saml v0.4.13-0.20230331080031-67cbfa09c7b6 h1:oHn/OOUkECNX06D
github.com/grafana/saml v0.4.13-0.20230331080031-67cbfa09c7b6/go.mod h1:igEejV+fihTIlHXYP8zOec3V5A8y3lws5bQBFsTm4gA=
github.com/grafana/sqlds/v2 v2.3.10 h1:HWKhE0vR6LoEiE+Is8CSZOgaB//D1yqb2ntkass9Fd4=
github.com/grafana/sqlds/v2 v2.3.10/go.mod h1:c6ibxnxRVGxV/0YkEgvy7QpQH/lyifFyV7K/14xvdIs=
github.com/grafana/thema v0.0.0-20230417103609-99b482c479fe h1:Ws23A0XH6XYNaF/XhrOhNiC09rqGisvflCf0aHRhpTM=
github.com/grafana/thema v0.0.0-20230417103609-99b482c479fe/go.mod h1:hjlPua8wL3HO188Qg6GhTeYOPaUOneC04sFYRtcxSNw=
github.com/grafana/thema v0.0.0-20230523123227-db9596a7096e h1:pg6l/d7m7tsmlMQ6JCRI8AHFuqT41I7MWVPj8IADXzE=
github.com/grafana/thema v0.0.0-20230523123227-db9596a7096e/go.mod h1:Pn9nfzCk7nV0mvNgwusgCjCROZP6nm4GpwTnmEhLT24=
github.com/grafana/xorm v0.8.3-0.20220614223926-2fcda7565af6 h1:I9dh1MXGX0wGyxdV/Sl7+ugnki4Dfsy8lv2s5Yf887o=
github.com/grafana/xorm v0.8.3-0.20220614223926-2fcda7565af6/go.mod h1:ZkJLEYLoVyg7amJK/5r779bHyzs2AU8f8VMiP6BM7uY=
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
@ -1213,6 +1236,7 @@ github.com/huandu/xstrings v1.3.1 h1:4jgBlKK6tLKFvO8u5pmYjG91cqytmDCDvGh7ECVFfFs
github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo=
github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE=
github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
@ -1224,6 +1248,7 @@ github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
github.com/influxdata/influxdb v1.7.6/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY=
github.com/influxdata/influxdb-client-go/v2 v2.6.0 h1:bIOaGTgvvv1Na2hG+nIvqyv7PK2UiU2WrJN1ck1ykyM=
@ -1237,6 +1262,11 @@ github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
github.com/ionos-cloud/sdk-go/v6 v6.1.4 h1:BJHhFA8Q1SZC7VOXqKKr2BV2ysQ2/4hlk1e4hZte7GY=
github.com/ionos-cloud/sdk-go/v6 v6.1.4/go.mod h1:Ox3W0iiEz0GHnfY9e5LmAxwklsxguuNFEUSu0gVRTME=
github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI=
github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0=
github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk=
github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g=
github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw=
github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo=
github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk=
@ -1327,9 +1357,15 @@ github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+
github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
github.com/jung-kurt/gofpdf v1.16.2 h1:jgbatWHfRlPYiK85qgevsZTHviWXKwB1TTiKdz5PtRc=
github.com/jung-kurt/gofpdf v1.16.2/go.mod h1:1hl7y57EsiPAkLbOwzpzqgx1A30nQCk/YmFV8S2vmK0=
github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k=
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4=
github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA=
github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8=
github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE=
github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE=
github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro=
github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8=
github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg=
github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck=
github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
@ -1337,7 +1373,9 @@ github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvW
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/compress v1.12.2/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg=
@ -1347,6 +1385,7 @@ github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47e
github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/klauspost/compress v1.15.13 h1:NFn1Wr8cfnenSJSA46lLq4wHCcBzKTSjnBIexDMMOV0=
github.com/klauspost/compress v1.15.13/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM=
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/knadh/koanf v1.2.0/go.mod h1:xpPTwMhsA/aaQLAilyCCqfpEiY1gpa160AiCuWHJUjY=
github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b h1:udzkj9S/zlT5X367kqJis0QP7YMxobob6zhzq6Yre00=
github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM=
@ -1372,6 +1411,7 @@ github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LE
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg=
github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y=
github.com/labstack/echo/v4 v4.10.2 h1:n1jAhnq/elIFTHr1EYpiYtyKgx4RW9ccVgkqByZaN2M=
github.com/labstack/echo/v4 v4.10.2/go.mod h1:OEyqf2//K1DFdE57vw2DRgWY0M7s65IVQO2FzvI4J5k=
github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
@ -1458,10 +1498,13 @@ github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsO
github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo=
github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8=
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc=
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=
@ -1521,6 +1564,7 @@ github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJ
github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ=
github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk=
github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de h1:D5x39vF5KCwKQaw+OC9ZPiLVHXz3UFw2+psEX+gYcto=
github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de/go.mod h1:kJun4WP5gFuHZgRjZUWWuH1DTxCtxbHDOIJsudS8jzY=
@ -1568,6 +1612,7 @@ github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6
github.com/olivere/elastic v6.2.35+incompatible/go.mod h1:J+q1zQJTgAz9woqsbVRqGeB5G1iqDKVBWLNSYW8yfJ8=
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg=
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E=
@ -1641,6 +1686,8 @@ github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi
github.com/pierrec/lz4/v4 v4.1.8/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0=
github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4=
github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8=
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU=
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@ -1753,6 +1800,7 @@ github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o=
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/rs/cors v1.8.0/go.mod h1:EBwu+T5AvHOcXwvZIkQFjUN6s8Czyqw12GL/Y0tUyRM=
@ -1779,6 +1827,7 @@ github.com/sanity-io/litter v1.2.0/go.mod h1:JF6pZUFgu2Q0sBZ+HSV35P8TVPI1TTzEwyu
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.14 h1:yFl3jyaSVLNYXlnNYM5z2pagEk1dYQhfr1p20T1NyKY=
github.com/scaleway/scaleway-sdk-go v1.0.0-beta.14/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg=
github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g=
github.com/sdboyer/cue v0.5.0-beta.2.0.20230419165817-251c3ae823d8 h1:R7AphSCwo1rqpRCftz9wn2azIGAtdgn1AjxTiSdFJ1o=
github.com/sdboyer/cue v0.5.0-beta.2.0.20230419165817-251c3ae823d8/go.mod h1:okjJBHFQFer+a41sAe2SaGm1glWS8oEb6CmJvn5Zdws=
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I=
@ -1922,12 +1971,15 @@ github.com/urfave/cli v1.22.12 h1:igJgVw1JdKH+trcLWLeLwZjU9fEfPesQ+9/e4MQ44S8=
github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8=
github.com/urfave/cli/v2 v2.24.4 h1:0gyJJEBYtCV87zI/x2nZCPyDxD51K6xM8SkwjHFCNEU=
github.com/urfave/cli/v2 v2.24.4/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc=
github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w=
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio=
github.com/vectordotdev/go-datemath v0.1.1-0.20220323213446-f3954d0b18ae h1:oyiy3uBj1F4O3AaFh7hUGBrJjAssJhKyAbwxtkslxqo=
github.com/vectordotdev/go-datemath v0.1.1-0.20220323213446-f3954d0b18ae/go.mod h1:PnwzbSst7KD3vpBzzlntZU5gjVa455Uqa5QPiKSYJzQ=
github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw=
@ -1968,6 +2020,7 @@ github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI=
github.com/yalue/merged_fs v1.2.2 h1:vXHTpJBluJryju7BBpytr3PDIkzsPMpiEknxVGPhN/I=
github.com/yalue/merged_fs v1.2.2/go.mod h1:WqqchfVYQyclV2tnR7wtRhBddzBvLVR83Cjw9BKQw0M=
github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
@ -2138,6 +2191,7 @@ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@ -2240,6 +2294,7 @@ golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73r
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190424112056-4829fb13d2c6/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@ -2292,6 +2347,7 @@ golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qx
golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211020060615-d418f374d309/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
@ -2404,6 +2460,7 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@ -2569,11 +2626,13 @@ golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGm
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181112210238-4b1f3b6b1646/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
@ -2784,10 +2843,12 @@ gopkg.in/fsnotify/fsnotify.v1 v1.4.7 h1:XNNYLJHt73EyYiCZi6+xjupS9CpvmiDgjPTAjrBl
gopkg.in/fsnotify/fsnotify.v1 v1.4.7/go.mod h1:Fyux9zXlo4rWoMSIzpn9fDAYjalPqJ/K1qJ27s+7ltE=
gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y=
gopkg.in/go-playground/validator.v9 v9.29.1/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ=
gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
@ -2795,6 +2856,7 @@ gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/mail.v2 v2.3.1 h1:WYFn/oANrAGP2C0dcV6/pbkPzv8yGzqTjPmTeO7qoXk=
gopkg.in/mail.v2 v2.3.1/go.mod h1:htwXN1Qh09vZJ1NVKxQqHPBaCBbzKhp5GzuJEA4VJWw=
gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
gopkg.in/telebot.v3 v3.1.3/go.mod h1:GJKwwWqp9nSkIVN51eRKU78aB5f5OnQuWdwiIZfPbko=
@ -2812,6 +2874,7 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

File diff suppressed because it is too large Load Diff

View File

@ -4,27 +4,22 @@ name: "Folder"
maturity: "merged"
description: "A folder is a collection of resources that are grouped together and can share permissions."
lineage: seqs: [
{
schemas: [
//0.0
{
lineage: schemas: [{
version: [0, 0]
schema: {
spec: {
// Unique folder id. (will be k8s name)
uid: string
spec: {
// Unique folder id. (will be k8s name)
uid: string
// Folder title
title: string
// Folder title
title: string
// Description of the folder.
description?: string
} @cuetsy(kind="interface")
//
// TODO:
// common metadata will soon support setting the parent folder in the metadata
//
},
]
},
]
// Description of the folder.
description?: string
} @cuetsy(kind="interface")
//
// TODO:
// common metadata will soon support setting the parent folder in the metadata
//
}
}]

View File

@ -9,59 +9,55 @@ name: "LibraryPanel"
maturity: "experimental"
description: "A standalone panel"
lineage: seqs: [
{
schemas: [
// 0.0
{
spec: {
// Folder UID
folderUid?: string @grafanamaturity(ToMetadata="sys")
lineage: schemas: [{
version: [0, 0]
schema: {
spec: {
// Folder UID
folderUid?: string @grafanamaturity(ToMetadata="sys")
// Library element UID
uid: string
// Library element UID
uid: string
// Panel name (also saved in the model)
name: string & strings.MinRunes(1)
// Panel name (also saved in the model)
name: string & strings.MinRunes(1)
// Panel description
description?: string
// Panel description
description?: string
// The panel type (from inside the model)
type: string & strings.MinRunes(1)
// The panel type (from inside the model)
type: string & strings.MinRunes(1)
// Dashboard version when this was saved (zero if unknown)
schemaVersion?: uint16
// Dashboard version when this was saved (zero if unknown)
schemaVersion?: uint16
// panel version, incremented each time the dashboard is updated.
version: int64 @grafanamaturity(NeedsExpertReview)
// panel version, incremented each time the dashboard is updated.
version: int64 @grafanamaturity(NeedsExpertReview)
// TODO: should be the same panel schema defined in dashboard
// Typescript: Omit<Panel, 'gridPos' | 'id' | 'libraryPanel'>;
model: {...}
// TODO: should be the same panel schema defined in dashboard
// Typescript: Omit<Panel, 'gridPos' | 'id' | 'libraryPanel'>;
model: {...}
// Object storage metadata
meta?: #LibraryElementDTOMeta @grafanamaturity(ToMetadata="sys")
} @cuetsy(kind="interface") @grafana(TSVeneer="type")
// Object storage metadata
meta?: #LibraryElementDTOMeta @grafanamaturity(ToMetadata="sys")
} @cuetsy(kind="interface") @grafana(TSVeneer="type")
#LibraryElementDTOMetaUser: {
id: int64
name: string
avatarUrl: string
} @cuetsy(kind="interface") @grafanamaturity(NeedsExpertReview)
#LibraryElementDTOMetaUser: {
id: int64
name: string
avatarUrl: string
} @cuetsy(kind="interface") @grafanamaturity(NeedsExpertReview)
#LibraryElementDTOMeta: {
folderName: string
folderUid: string @grafanamaturity(ToMetadata="sys")
connectedDashboards: int64
#LibraryElementDTOMeta: {
folderName: string
folderUid: string @grafanamaturity(ToMetadata="sys")
connectedDashboards: int64
created: string & time.Time
updated: string & time.Time
created: string & time.Time
updated: string & time.Time
createdBy: #LibraryElementDTOMetaUser @grafanamaturity(ToMetadata="sys")
updatedBy: #LibraryElementDTOMetaUser @grafanamaturity(ToMetadata="sys")
} @cuetsy(kind="interface") @grafanamaturity(NeedsExpertReview)
},
]
},
]
createdBy: #LibraryElementDTOMetaUser @grafanamaturity(ToMetadata="sys")
updatedBy: #LibraryElementDTOMetaUser @grafanamaturity(ToMetadata="sys")
} @cuetsy(kind="interface") @grafanamaturity(NeedsExpertReview)
}
}]

View File

@ -4,48 +4,44 @@ name: "Playlist"
maturity: "merged"
description: "A playlist is a series of dashboards that is automatically rotated in the browser, on a configurable interval."
lineage: seqs: [
{
schemas: [
//0.0
{
spec: {
// Unique playlist identifier. Generated on creation, either by the
// creator of the playlist of by the application.
uid: string
lineage: schemas: [{
version: [0, 0]
schema: {
spec: {
// Unique playlist identifier. Generated on creation, either by the
// creator of the playlist of by the application.
uid: string
// Name of the playlist.
name: string
// Name of the playlist.
name: string
// Interval sets the time between switching views in a playlist.
// FIXME: Is this based on a standardized format or what options are available? Can datemath be used?
interval: string | *"5m"
// Interval sets the time between switching views in a playlist.
// FIXME: Is this based on a standardized format or what options are available? Can datemath be used?
interval: string | *"5m"
// The ordered list of items that the playlist will iterate over.
// FIXME! This should not be optional, but changing it makes the godegen awkward
items?: [...#PlaylistItem]
} @cuetsy(kind="interface")
// The ordered list of items that the playlist will iterate over.
// FIXME! This should not be optional, but changing it makes the godegen awkward
items?: [...#PlaylistItem]
} @cuetsy(kind="interface")
///////////////////////////////////////
// Definitions (referenced above) are declared below
///////////////////////////////////////
// Definitions (referenced above) are declared below
#PlaylistItem: {
// Type of the item.
type: "dashboard_by_uid" | "dashboard_by_id" | "dashboard_by_tag"
// Value depends on type and describes the playlist item.
//
// - dashboard_by_id: The value is an internal numerical identifier set by Grafana. This
// is not portable as the numerical identifier is non-deterministic between different instances.
// Will be replaced by dashboard_by_uid in the future. (deprecated)
// - dashboard_by_tag: The value is a tag which is set on any number of dashboards. All
// dashboards behind the tag will be added to the playlist.
// - dashboard_by_uid: The value is the dashboard UID
value: string
#PlaylistItem: {
// Type of the item.
type: "dashboard_by_uid" | "dashboard_by_id" | "dashboard_by_tag"
// Value depends on type and describes the playlist item.
//
// - dashboard_by_id: The value is an internal numerical identifier set by Grafana. This
// is not portable as the numerical identifier is non-deterministic between different instances.
// Will be replaced by dashboard_by_uid in the future. (deprecated)
// - dashboard_by_tag: The value is a tag which is set on any number of dashboards. All
// dashboards behind the tag will be added to the playlist.
// - dashboard_by_uid: The value is the dashboard UID
value: string
// Title is an unused property -- it will be removed in the future
title?: string
} @cuetsy(kind="interface")
},
]
},
]
// Title is an unused property -- it will be removed in the future
title?: string
} @cuetsy(kind="interface")
}
}]

View File

@ -4,36 +4,33 @@ name: "Preferences"
maturity: "merged"
description: "The user or team frontend preferences"
lineage: seqs: [
{
schemas: [
{
spec: {
// UID for the home dashboard
homeDashboardUID?: string
lineage: schemas: [{
version: [0, 0]
schema: {
spec: {
// UID for the home dashboard
homeDashboardUID?: string
// The timezone selection
// TODO: this should use the timezone defined in common
timezone?: string
// The timezone selection
// TODO: this should use the timezone defined in common
timezone?: string
// day of the week (sunday, monday, etc)
weekStart?: string
// day of the week (sunday, monday, etc)
weekStart?: string
// light, dark, empty is default
theme?: string
// light, dark, empty is default
theme?: string
// Selected language (beta)
language?: string
// Selected language (beta)
language?: string
// Explore query history preferences
queryHistory?: #QueryHistoryPreference
} @cuetsy(kind="interface")
// Explore query history preferences
queryHistory?: #QueryHistoryPreference
} @cuetsy(kind="interface")
#QueryHistoryPreference: {
// one of: '' | 'query' | 'starred';
homeTab?: string
} @cuetsy(kind="interface")
},
]
},
]
#QueryHistoryPreference: {
// one of: '' | 'query' | 'starred';
homeTab?: string
} @cuetsy(kind="interface")
}
}]

View File

@ -4,26 +4,22 @@ name: "PublicDashboard"
maturity: "merged"
description: "Public dashboard configuration"
lineage: seqs: [
{
schemas: [
// 0.0
{
spec: {
// Unique public dashboard identifier
uid: string
// Dashboard unique identifier referenced by this public dashboard
dashboardUid: string
// Unique public access token
accessToken?: string
// Flag that indicates if the public dashboard is enabled
isEnabled: bool
// Flag that indicates if annotations are enabled
annotationsEnabled: bool
// Flag that indicates if the time range picker is enabled
timeSelectionEnabled: bool
} @cuetsy(kind="interface")
},
]
},
]
lineage: schemas: [{
version: [0, 0]
schema: {
spec: {
// Unique public dashboard identifier
uid: string
// Dashboard unique identifier referenced by this public dashboard
dashboardUid: string
// Unique public access token
accessToken?: string
// Flag that indicates if the public dashboard is enabled
isEnabled: bool
// Flag that indicates if annotations are enabled
annotationsEnabled: bool
// Flag that indicates if the time range picker is enabled
timeSelectionEnabled: bool
} @cuetsy(kind="interface")
}
}]

View File

@ -4,42 +4,38 @@ name: "ServiceAccount"
maturity: "merged"
description: "system account"
lineage: seqs: [
{
schemas: [
// v0.0
{
spec: {
// ID is the unique identifier of the service account in the database.
id: int64 @grafanamaturity(ToMetadata="sys")
// OrgId is the ID of an organisation the service account belongs to.
orgId: int64 @grafanamaturity(ToMetadata="sys")
// Name of the service account.
name: string
// Login of the service account.
login: string
// IsDisabled indicates if the service account is disabled.
isDisabled: bool
// Role is the Grafana organization role of the service account which can be 'Viewer', 'Editor', 'Admin'.
role: #OrgRole @grafanamaturity(ToMetadata="kind")
// Tokens is the number of active tokens for the service account.
// Tokens are used to authenticate the service account against Grafana.
tokens: int64 @grafanamaturity(ToMetadata="kind")
// AvatarUrl is the service account's avatar URL. It allows the frontend to display a picture in front
// of the service account.
avatarUrl: string @grafanamaturity(ToMetadata="kind")
// AccessControl metadata associated with a given resource.
accessControl?: {
[string]: bool @grafanamaturity(ToMetadata="sys")
}
lineage: schemas: [{
version: [0, 0]
schema: {
spec: {
// ID is the unique identifier of the service account in the database.
id: int64 @grafanamaturity(ToMetadata="sys")
// OrgId is the ID of an organisation the service account belongs to.
orgId: int64 @grafanamaturity(ToMetadata="sys")
// Name of the service account.
name: string
// Login of the service account.
login: string
// IsDisabled indicates if the service account is disabled.
isDisabled: bool
// Role is the Grafana organization role of the service account which can be 'Viewer', 'Editor', 'Admin'.
role: #OrgRole @grafanamaturity(ToMetadata="kind")
// Tokens is the number of active tokens for the service account.
// Tokens are used to authenticate the service account against Grafana.
tokens: int64 @grafanamaturity(ToMetadata="kind")
// AvatarUrl is the service account's avatar URL. It allows the frontend to display a picture in front
// of the service account.
avatarUrl: string @grafanamaturity(ToMetadata="kind")
// AccessControl metadata associated with a given resource.
accessControl?: {
[string]: bool @grafanamaturity(ToMetadata="sys")
}
// Teams is a list of teams the service account belongs to.
teams?: [...string] @grafanamaturity(ToMetadata="sys")
} @cuetsy(kind="interface")
// Teams is a list of teams the service account belongs to.
teams?: [...string] @grafanamaturity(ToMetadata="sys")
} @cuetsy(kind="interface")
// OrgRole is a Grafana Organization Role which can be 'Viewer', 'Editor', 'Admin'.
#OrgRole: "Admin" | "Editor" | "Viewer" @cuetsy(kind="type")
},
]
},
]
// OrgRole is a Grafana Organization Role which can be 'Viewer', 'Editor', 'Admin'.
#OrgRole: "Admin" | "Editor" | "Viewer" @cuetsy(kind="type")
}
}]

View File

@ -4,18 +4,14 @@ name: "Team"
maturity: "merged"
description: "A team is a named grouping of Grafana users to which access control rules may be assigned."
lineage: seqs: [
{
schemas: [
// v0.0
{
spec: {
// Name of the team.
name: string
// Email of the team.
email?: string
} @cuetsy(kind="interface")
},
]
},
]
lineage: schemas: [{
version: [0, 0]
schema: {
spec: {
// Name of the team.
name: string
// Email of the team.
email?: string
} @cuetsy(kind="interface")
}
}]

View File

@ -8,6 +8,10 @@
//
// Run 'make gen-cue' from repository root to regenerate.
/**
* TODO:
* common metadata will soon support setting the parent folder in the metadata
*/
export interface Folder {
/**
* Description of the folder.

View File

@ -13,6 +13,8 @@ import (
"github.com/grafana/thema/encoding/openapi"
)
var schPath = cue.MakePath(cue.Hid("_#schema", "github.com/grafana/thema"))
type ResourceGoTypesJenny struct {
ApplyFuncs []dstutil.ApplyFunc
ExpandReferences bool
@ -31,7 +33,7 @@ func (ag *ResourceGoTypesJenny) Generate(kind kindsys.Kind) (*codejen.File, erro
}
sch := sfg.Schema
iter, err := sch.Underlying().Fields()
iter, err := sch.Underlying().LookupPath(schPath).Fields()
if err != nil {
return nil, err
}
@ -77,7 +79,7 @@ func (g *SubresourceGoTypesJenny) Generate(kind kindsys.Kind) (codejen.Files, er
// Iterate through all top-level fields and make go types for them
// (this should consist of "spec" and arbitrary subresources)
i, err := sch.Underlying().Fields()
i, err := sch.Underlying().LookupPath(schPath).Fields()
if err != nil {
return nil, err
}

View File

@ -50,7 +50,13 @@ func (gen *genTSVeneerIndex) Generate(kinds ...kindsys.Kind) (*codejen.File, err
if err != nil {
return nil, fmt.Errorf("%s: %w", def.Props().Common().Name, err)
}
renameSpecNode(def.Props().Common().Name, f)
// The obvious approach would be calling renameSpecNode() here, same as in the ts resource jenny,
// to rename the "spec" field to the name of the kind. But that was causing extra
// default elements to generate that didn't actually exist. Instead,
// findDeclNode() is aware of "spec" and does the change on the fly. Preserving this
// as a reminder in case we want to switch back, though.
// renameSpecNode(def.Props().Common().Name, f)
elems, err := gen.extractTSIndexVeneerElements(def, f)
if err != nil {
return nil, fmt.Errorf("%s: %w", def.Props().Common().Name, err)
@ -66,7 +72,7 @@ func (gen *genTSVeneerIndex) extractTSIndexVeneerElements(def kindsys.Kind, tf *
comm := def.Props().Common()
// Check the root, then walk the tree
rootv := lin.Latest().Underlying()
rootv := lin.Latest().Underlying().LookupPath(schPath)
var raw, custom, rawD, customD ast.Idents
@ -85,18 +91,14 @@ func (gen *genTSVeneerIndex) extractTSIndexVeneerElements(def kindsys.Kind, tf *
if !(sels[0].IsDefinition() || sels[0].String() == "spec") {
return false
}
// It might seem to make sense that we'd strip replaceout the leading # here for
// It might seem to make sense that we'd strip out the leading # here for
// definitions. However, cuetsy's tsast actually has the # still present in its
// Ident types, stripping it replaceout on the fly when stringifying.
// Ident types, stripping it out on the fly when stringifying.
name = sels[0].String()
}
if name == "spec" {
name = comm.Name
}
// Search the generated TS AST for the type and default def nodes
pair := findDeclNode(name, tf)
pair := findDeclNode(name, comm.Name, tf)
if pair.T == nil {
// No generated type for this item, skip it
return false
@ -208,8 +210,13 @@ type tsVeneerAttr struct {
target string
}
func findDeclNode(name string, tf *ast.File) declPair {
func findDeclNode(name, basename string, tf *ast.File) declPair {
var p declPair
if name == basename {
return declPair{}
}
for _, def := range tf.Nodes {
// Peer through export keywords
if ex, is := def.(ast.ExportKeyword); is {
@ -221,10 +228,16 @@ func findDeclNode(name string, tf *ast.File) declPair {
if x.Name.Name == name {
p.T = &x.Name
_, p.isEnum = x.Type.(ast.EnumType)
if name == "spec" {
p.T.Name = basename
}
}
case ast.VarDecl:
if x.Names.Idents[0].Name == "default"+name {
p.D = &x.Names.Idents[0]
if name == "spec" {
p.D.Name = "default" + basename
}
}
}
}

View File

@ -16,6 +16,13 @@ const (
OperatorStateStateSuccess OperatorStateState = "success"
)
// Defines values for StatusOperatorStateState.
const (
StatusOperatorStateStateFailed StatusOperatorStateState = "failed"
StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress"
StatusOperatorStateStateSuccess StatusOperatorStateState = "success"
)
// OperatorState defines model for OperatorState.
type OperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
@ -43,5 +50,25 @@ type Status struct {
// operatorStates is a map of operator ID to operator state evaluations.
// Any operator which consumes this kind SHOULD add its state evaluation information to this field.
OperatorStates map[string]OperatorState `json:"operatorStates,omitempty"`
OperatorStates map[string]StatusOperatorState `json:"operatorStates,omitempty"`
}
// StatusOperatorState defines model for status.#OperatorState.
type StatusOperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
DescriptiveState *string `json:"descriptiveState,omitempty"`
// details contains any extra information that is operator-specific
Details map[string]interface{} `json:"details,omitempty"`
// lastEvaluation is the ResourceVersion last evaluated
LastEvaluation string `json:"lastEvaluation"`
// state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
State StatusOperatorStateState `json:"state"`
}
// StatusOperatorStateState state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
type StatusOperatorStateState string

View File

@ -9,7 +9,8 @@
package folder
// Spec defines model for Spec.
// TODO:
// common metadata will soon support setting the parent folder in the metadata
type Spec struct {
// Description of the folder.
Description *string `json:"description,omitempty"`

View File

@ -16,6 +16,13 @@ const (
OperatorStateStateSuccess OperatorStateState = "success"
)
// Defines values for StatusOperatorStateState.
const (
StatusOperatorStateStateFailed StatusOperatorStateState = "failed"
StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress"
StatusOperatorStateStateSuccess StatusOperatorStateState = "success"
)
// OperatorState defines model for OperatorState.
type OperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
@ -43,5 +50,25 @@ type Status struct {
// operatorStates is a map of operator ID to operator state evaluations.
// Any operator which consumes this kind SHOULD add its state evaluation information to this field.
OperatorStates map[string]OperatorState `json:"operatorStates,omitempty"`
OperatorStates map[string]StatusOperatorState `json:"operatorStates,omitempty"`
}
// StatusOperatorState defines model for status.#OperatorState.
type StatusOperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
DescriptiveState *string `json:"descriptiveState,omitempty"`
// details contains any extra information that is operator-specific
Details map[string]interface{} `json:"details,omitempty"`
// lastEvaluation is the ResourceVersion last evaluated
LastEvaluation string `json:"lastEvaluation"`
// state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
State StatusOperatorStateState `json:"state"`
}
// StatusOperatorStateState state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
type StatusOperatorStateState string

View File

@ -16,6 +16,13 @@ const (
OperatorStateStateSuccess OperatorStateState = "success"
)
// Defines values for StatusOperatorStateState.
const (
StatusOperatorStateStateFailed StatusOperatorStateState = "failed"
StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress"
StatusOperatorStateStateSuccess StatusOperatorStateState = "success"
)
// OperatorState defines model for OperatorState.
type OperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
@ -43,5 +50,25 @@ type Status struct {
// operatorStates is a map of operator ID to operator state evaluations.
// Any operator which consumes this kind SHOULD add its state evaluation information to this field.
OperatorStates map[string]OperatorState `json:"operatorStates,omitempty"`
OperatorStates map[string]StatusOperatorState `json:"operatorStates,omitempty"`
}
// StatusOperatorState defines model for status.#OperatorState.
type StatusOperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
DescriptiveState *string `json:"descriptiveState,omitempty"`
// details contains any extra information that is operator-specific
Details map[string]interface{} `json:"details,omitempty"`
// lastEvaluation is the ResourceVersion last evaluated
LastEvaluation string `json:"lastEvaluation"`
// state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
State StatusOperatorStateState `json:"state"`
}
// StatusOperatorStateState state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
type StatusOperatorStateState string

View File

@ -16,6 +16,13 @@ const (
OperatorStateStateSuccess OperatorStateState = "success"
)
// Defines values for StatusOperatorStateState.
const (
StatusOperatorStateStateFailed StatusOperatorStateState = "failed"
StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress"
StatusOperatorStateStateSuccess StatusOperatorStateState = "success"
)
// OperatorState defines model for OperatorState.
type OperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
@ -43,5 +50,25 @@ type Status struct {
// operatorStates is a map of operator ID to operator state evaluations.
// Any operator which consumes this kind SHOULD add its state evaluation information to this field.
OperatorStates map[string]OperatorState `json:"operatorStates,omitempty"`
OperatorStates map[string]StatusOperatorState `json:"operatorStates,omitempty"`
}
// StatusOperatorState defines model for status.#OperatorState.
type StatusOperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
DescriptiveState *string `json:"descriptiveState,omitempty"`
// details contains any extra information that is operator-specific
Details map[string]interface{} `json:"details,omitempty"`
// lastEvaluation is the ResourceVersion last evaluated
LastEvaluation string `json:"lastEvaluation"`
// state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
State StatusOperatorStateState `json:"state"`
}
// StatusOperatorStateState state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
type StatusOperatorStateState string

View File

@ -16,6 +16,13 @@ const (
OperatorStateStateSuccess OperatorStateState = "success"
)
// Defines values for StatusOperatorStateState.
const (
StatusOperatorStateStateFailed StatusOperatorStateState = "failed"
StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress"
StatusOperatorStateStateSuccess StatusOperatorStateState = "success"
)
// OperatorState defines model for OperatorState.
type OperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
@ -43,5 +50,25 @@ type Status struct {
// operatorStates is a map of operator ID to operator state evaluations.
// Any operator which consumes this kind SHOULD add its state evaluation information to this field.
OperatorStates map[string]OperatorState `json:"operatorStates,omitempty"`
OperatorStates map[string]StatusOperatorState `json:"operatorStates,omitempty"`
}
// StatusOperatorState defines model for status.#OperatorState.
type StatusOperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
DescriptiveState *string `json:"descriptiveState,omitempty"`
// details contains any extra information that is operator-specific
Details map[string]interface{} `json:"details,omitempty"`
// lastEvaluation is the ResourceVersion last evaluated
LastEvaluation string `json:"lastEvaluation"`
// state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
State StatusOperatorStateState `json:"state"`
}
// StatusOperatorStateState state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
type StatusOperatorStateState string

View File

@ -16,6 +16,13 @@ const (
OperatorStateStateSuccess OperatorStateState = "success"
)
// Defines values for StatusOperatorStateState.
const (
StatusOperatorStateStateFailed StatusOperatorStateState = "failed"
StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress"
StatusOperatorStateStateSuccess StatusOperatorStateState = "success"
)
// OperatorState defines model for OperatorState.
type OperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
@ -43,5 +50,25 @@ type Status struct {
// operatorStates is a map of operator ID to operator state evaluations.
// Any operator which consumes this kind SHOULD add its state evaluation information to this field.
OperatorStates map[string]OperatorState `json:"operatorStates,omitempty"`
OperatorStates map[string]StatusOperatorState `json:"operatorStates,omitempty"`
}
// StatusOperatorState defines model for status.#OperatorState.
type StatusOperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
DescriptiveState *string `json:"descriptiveState,omitempty"`
// details contains any extra information that is operator-specific
Details map[string]interface{} `json:"details,omitempty"`
// lastEvaluation is the ResourceVersion last evaluated
LastEvaluation string `json:"lastEvaluation"`
// state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
State StatusOperatorStateState `json:"state"`
}
// StatusOperatorStateState state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
type StatusOperatorStateState string

View File

@ -16,6 +16,13 @@ const (
OperatorStateStateSuccess OperatorStateState = "success"
)
// Defines values for StatusOperatorStateState.
const (
StatusOperatorStateStateFailed StatusOperatorStateState = "failed"
StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress"
StatusOperatorStateStateSuccess StatusOperatorStateState = "success"
)
// OperatorState defines model for OperatorState.
type OperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
@ -43,5 +50,25 @@ type Status struct {
// operatorStates is a map of operator ID to operator state evaluations.
// Any operator which consumes this kind SHOULD add its state evaluation information to this field.
OperatorStates map[string]OperatorState `json:"operatorStates,omitempty"`
OperatorStates map[string]StatusOperatorState `json:"operatorStates,omitempty"`
}
// StatusOperatorState defines model for status.#OperatorState.
type StatusOperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
DescriptiveState *string `json:"descriptiveState,omitempty"`
// details contains any extra information that is operator-specific
Details map[string]interface{} `json:"details,omitempty"`
// lastEvaluation is the ResourceVersion last evaluated
LastEvaluation string `json:"lastEvaluation"`
// state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
State StatusOperatorStateState `json:"state"`
}
// StatusOperatorStateState state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
type StatusOperatorStateState string

View File

@ -16,6 +16,13 @@ const (
OperatorStateStateSuccess OperatorStateState = "success"
)
// Defines values for StatusOperatorStateState.
const (
StatusOperatorStateStateFailed StatusOperatorStateState = "failed"
StatusOperatorStateStateInProgress StatusOperatorStateState = "in_progress"
StatusOperatorStateStateSuccess StatusOperatorStateState = "success"
)
// OperatorState defines model for OperatorState.
type OperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
@ -43,5 +50,25 @@ type Status struct {
// operatorStates is a map of operator ID to operator state evaluations.
// Any operator which consumes this kind SHOULD add its state evaluation information to this field.
OperatorStates map[string]OperatorState `json:"operatorStates,omitempty"`
OperatorStates map[string]StatusOperatorState `json:"operatorStates,omitempty"`
}
// StatusOperatorState defines model for status.#OperatorState.
type StatusOperatorState struct {
// descriptiveState is an optional more descriptive state field which has no requirements on format
DescriptiveState *string `json:"descriptiveState,omitempty"`
// details contains any extra information that is operator-specific
Details map[string]interface{} `json:"details,omitempty"`
// lastEvaluation is the ResourceVersion last evaluated
LastEvaluation string `json:"lastEvaluation"`
// state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
State StatusOperatorStateState `json:"state"`
}
// StatusOperatorStateState state describes the state of the lastEvaluation.
// It is limited to three possible states for machine evaluation.
type StatusOperatorStateState string

View File

@ -1,13 +1,12 @@
package grafanaplugin
composableKinds: DataQuery: lineage: {
seqs: [
schemas: [
{
schemas: [
{
foo: string
},
]
version: [0, 0]
schema: {
foo: string
}
},
]
}

View File

@ -1,13 +1,12 @@
package grafanaplugin
composableKinds: DataQuery: lineage: {
seqs: [
schemas: [
{
schemas: [
{
foo: string
},
]
version: [0, 0]
schema: {
foo: string
}
},
]
}

View File

@ -1,18 +1,17 @@
package grafanaplugin
composableKinds: DataSourceCfg: lineage: {
seqs: [
schemas: [
{
schemas: [
{
Options: {
foo: string
}
SecureOptions: {
bar: string
}
},
]
version: [0, 0]
schema: {
Options: {
foo: string
}
SecureOptions: {
bar: string
}
}
},
]
}

View File

@ -1,15 +1,14 @@
package grafanaplugin
composableKinds: PanelCfg: lineage: {
seqs: [
schemas: [
{
schemas: [
{
Options: {
foo: string
} @cuetsy(kind="interface")
},
]
version: [0, 0]
schema: {
Options: {
foo: string
} @cuetsy(kind="interface")
}
},
]
}

View File

@ -3,7 +3,6 @@ package pfs
import (
"fmt"
"io/fs"
"os"
"path/filepath"
"sort"
@ -39,7 +38,7 @@ func (psr *declParser) Parse(root fs.FS) ([]*PluginDecl, error) {
continue
}
dir := os.DirFS(path)
dir, _ := fs.Sub(root, path)
pp, err := ParsePluginFS(dir, psr.rt)
if err != nil {
return nil, fmt.Errorf("parsing plugin failed for %s: %s", dir, err)

View File

@ -205,7 +205,13 @@ func ParsePluginFS(fsys fs.FS, rt *thema.Runtime) (ParsedPlugin, error) {
})
bi.Files = append(bi.Files, f)
gpi := ctx.BuildInstance(bi).Unify(gpv)
gpi := ctx.BuildInstance(bi)
// Temporary hack while we figure out what in the elasticsearch lineage turns
// this into an endless loop in thema, and why unifying twice is anything other
// than a total no-op.
if pp.Properties.Id != "elasticsearch" {
gpi = gpi.Unify(gpv)
}
if gpi.Err() != nil {
return ParsedPlugin{}, errors.Wrap(errors.Promote(ErrInvalidGrafanaPluginInstance, pp.Properties.Id), gpi.Err())
}

View File

@ -9,404 +9,402 @@ import (
thema.#Lineage
name: "plugindef"
seqs: [
{
schemas: [
{
// Unique name of the plugin. If the plugin is published on
// grafana.com, then the plugin `id` has to follow the naming
// conventions.
id: string & strings.MinRunes(1)
id: =~"^([0-9a-z]+\\-([0-9a-z]+\\-)?(\(strings.Join([ for t in _types {t}], "|"))))|(alertGroups|alertlist|annolist|barchart|bargauge|candlestick|canvas|dashlist|debug|datagrid|gauge|geomap|gettingstarted|graph|heatmap|histogram|icon|live|logs|news|nodeGraph|piechart|pluginlist|stat|state-timeline|status-history|table|table-old|text|timeseries|trend|traces|welcome|xychart|alertmanager|cloudwatch|dashboard|elasticsearch|grafana|grafana-azure-monitor-datasource|graphite|influxdb|jaeger|loki|mixed|mssql|mysql|opentsdb|postgres|prometheus|stackdriver|tempo|testdata|zipkin|phlare|parca)$"
// Human-readable name of the plugin that is shown to the user in
// the UI.
name: string
// The set of all plugin types. This hidden field exists solely
// so that the set can be string-interpolated into other fields.
_types: ["app", "datasource", "panel", "renderer", "secretsmanager"]
// type indicates which type of Grafana plugin this is, of the defined
// set of Grafana plugin types.
type: or(_types)
// IncludeType is a string identifier of a plugin include type, which is
// a superset of plugin types.
#IncludeType: type | "dashboard" | "page"
// Metadata about the plugin
info: #Info
// Metadata about a Grafana plugin. Some fields are used on the plugins
// page in Grafana and others on grafana.com, if the plugin is published.
#Info: {
// Information about the plugin author
author?: {
// Author's name
name?: string
// Author's name
email?: string
// Link to author's website
url?: string
}
// Build information
build?: #BuildInfo
// Description of plugin. Used on the plugins page in Grafana and
// for search on grafana.com.
description?: string
// Array of plugin keywords. Used for search on grafana.com.
keywords: [...string]
// should be this, but CUE to openapi converter screws this up
// by inserting a non-concrete default.
// keywords: [string, ...string]
// An array of link objects to be displayed on this plugin's
// project page in the form `{name: 'foo', url:
// 'http://example.com'}`
links?: [...{
name?: string
url?: string
}]
// SVG images that are used as plugin icons
logos?: {
// Link to the "small" version of the plugin logo, which must be
// an SVG image. "Large" and "small" logos can be the same image.
small: string
// Link to the "large" version of the plugin logo, which must be
// an SVG image. "Large" and "small" logos can be the same image.
large: string
}
// An array of screenshot objects in the form `{name: 'bar', path:
// 'img/screenshot.png'}`
screenshots?: [...{
name?: string
path?: string
}]
// Date when this plugin was built
updated?: =~"^(\\d{4}-\\d{2}-\\d{2}|\\%TODAY\\%)$"
// Project version of this commit, e.g. `6.7.x`
version?: =~"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)|(\\%VERSION\\%)$"
}
#BuildInfo: {
// Time when the plugin was built, as a Unix timestamp
time?: int64
repo?: string
// Git branch the plugin was built from
branch?: string
// Git hash of the commit the plugin was built from
hash?: string
"number"?: int64
// GitHub pull request the plugin was built from
pr?: int32
}
// Dependency information related to Grafana and other plugins
dependencies: #Dependencies
#Dependencies: {
// (Deprecated) Required Grafana version for this plugin, e.g.
// `6.x.x 7.x.x` to denote plugin requires Grafana v6.x.x or
// v7.x.x.
grafanaVersion?: =~"^([0-9]+)(\\.[0-9x]+)?(\\.[0-9x])?$"
// Required Grafana version for this plugin. Validated using
// https://github.com/npm/node-semver.
grafanaDependency: =~"^(<=|>=|<|>|=|~|\\^)?([0-9]+)(\\.[0-9x\\*]+)(\\.[0-9x\\*]+)?(\\s(<=|>=|<|=>)?([0-9]+)(\\.[0-9x]+)(\\.[0-9x]+))?$"
// An array of required plugins on which this plugin depends
plugins?: [...#Dependency]
}
// Dependency describes another plugin on which a plugin depends.
// The id refers to the plugin package identifier, as given on
// the grafana.com plugin marketplace.
#Dependency: {
id: =~"^[0-9a-z]+\\-([0-9a-z]+\\-)?(app|panel|datasource)$"
type: "app" | "datasource" | "panel"
name: string
version: string
...
}
// Schema definition for the plugin.json file. Used primarily for schema validation.
$schema?: string
// For data source plugins, if the plugin supports alerting. Requires `backend` to be set to `true`.
alerting?: bool
// For data source plugins, if the plugin supports annotation
// queries.
annotations?: bool
// Set to true for app plugins that should be enabled and pinned to the navigation bar in all orgs.
autoEnabled?: bool
// If the plugin has a backend component.
backend?: bool
// [internal only] Indicates whether the plugin is developed and shipped as part
// of Grafana. Also known as a 'core plugin'.
builtIn: bool | *false
// Plugin category used on the Add data source page.
category?: "tsdb" | "logging" | "cloud" | "tracing" | "profiling" | "sql" | "enterprise" | "iot" | "other"
// Grafana Enterprise specific features.
enterpriseFeatures?: {
// Enable/Disable health diagnostics errors. Requires Grafana
// >=7.5.5.
healthDiagnosticsErrors?: bool | *false
...
}
// The first part of the file name of the backend component
// executable. There can be multiple executables built for
// different operating system and architecture. Grafana will
// check for executables named `<executable>_<$GOOS>_<lower case
// $GOARCH><.exe for Windows>`, e.g. `plugin_linux_amd64`.
// Combination of $GOOS and $GOARCH can be found here:
// https://golang.org/doc/install/source#environment.
executable?: string
// [internal only] Excludes the plugin from listings in Grafana's UI. Only
// allowed for `builtIn` plugins.
hideFromList: bool | *false
// Resources to include in plugin.
includes?: [...#Include]
// A resource to be included in a plugin.
#Include: {
// Unique identifier of the included resource
uid?: string
type: #IncludeType
name?: string
// (Legacy) The Angular component to use for a page.
component?: string
// The minimum role a user must have to see this page in the navigation menu.
role?: "Admin" | "Editor" | "Viewer"
// RBAC action the user must have to access the route
action?: string
// Used for app plugins.
path?: string
// Add the include to the navigation menu.
addToNav?: bool
// Page or dashboard when user clicks the icon in the side menu.
defaultNav?: bool
// Icon to use in the side menu. For information on available
// icon, refer to [Icons
// Overview](https://developers.grafana.com/ui/latest/index.html?path=/story/docs-overview-icon--icons-overview).
icon?: string
...
}
// For data source plugins, if the plugin supports logs. It may be used to filter logs only features.
logs?: bool
// For data source plugins, if the plugin supports metric queries.
// Used to enable the plugin in the panel editor.
metrics?: bool
// FIXME there appears to be a bug in thema that prevents this from working. Maybe it'd
// help to refer to it with an alias, but thema can't support using current list syntax.
// syntax (fixed by grafana/thema#82). Either way, for now, pascalName gets populated in Go.
let sani = (strings.ToTitle(regexp.ReplaceAllLiteral("[^a-zA-Z]+", name, "")))
// [internal only] The PascalCase name for the plugin. Used for creating machine-friendly
// identifiers, typically in code generation.
//
// If not provided, defaults to name, but title-cased and sanitized (only
// alphabetical characters allowed).
pascalName: string & =~"^([A-Z][a-zA-Z]{1,62})$" | *sani
// Initialize plugin on startup. By default, the plugin
// initializes on first use.
preload?: bool
// For data source plugins. There is a query options section in
// the plugin's query editor and these options can be turned on
// if needed.
queryOptions?: {
// For data source plugins. If the `max data points` option should
// be shown in the query options section in the query editor.
maxDataPoints?: bool
// For data source plugins. If the `min interval` option should be
// shown in the query options section in the query editor.
minInterval?: bool
// For data source plugins. If the `cache timeout` option should
// be shown in the query options section in the query editor.
cacheTimeout?: bool
}
// Routes is a list of proxy routes, if any. For datasource plugins only.
routes?: [...#Route]
// For panel plugins. Hides the query editor.
skipDataQuery?: bool
// Marks a plugin as a pre-release.
state?: #ReleaseState
// ReleaseState indicates release maturity state of a plugin.
#ReleaseState: "alpha" | "beta" | "deprecated" | *"stable"
// For data source plugins, if the plugin supports streaming. Used in Explore to start live streaming.
streaming?: bool
// For data source plugins, if the plugin supports tracing. Used for example to link logs (e.g. Loki logs) with tracing plugins.
tracing?: bool
// Optional list of RBAC RoleRegistrations.
// Describes and organizes the default permissions associated with any of the Grafana basic roles,
// which characterizes what viewers, editors, admins, or grafana admins can do on the plugin.
// The Admin basic role inherits its default permissions from the Editor basic role which in turn
// inherits them from the Viewer basic role.
roles?: [...#RoleRegistration]
// RoleRegistration describes an RBAC role and its assignments to basic roles.
// It organizes related RBAC permissions on the plugin into a role and defines which basic roles
// will get them by default.
// Example: the role 'Schedules Reader' bundles permissions to view all schedules of the plugin
// which will be granted to Admins by default.
#RoleRegistration: {
// RBAC role definition to bundle related RBAC permissions on the plugin.
role: #Role
// Default assignment of the role to Grafana basic roles (Viewer, Editor, Admin, Grafana Admin)
// The Admin basic role inherits its default permissions from the Editor basic role which in turn
// inherits them from the Viewer basic role.
grants: [...#BasicRole]
}
// Role describes an RBAC role which allows grouping multiple related permissions on the plugin,
// each of which has an action and an optional scope.
// Example: the role 'Schedules Reader' bundles permissions to view all schedules of the plugin.
#Role: {
name: string
name: =~"^([A-Z][0-9A-Za-z ]+)$"
description: string
permissions: [...#Permission]
}
// Permission describes an RBAC permission on the plugin. A permission has an action and an optional
// scope.
// Example: action: 'test-app.schedules:read', scope: 'test-app.schedules:*'
#Permission: {
action: string
scope?: string
}
// BasicRole is a Grafana basic role, which can be 'Viewer', 'Editor', 'Admin' or 'Grafana Admin'.
// With RBAC, the Admin basic role inherits its default permissions from the Editor basic role which
// in turn inherits them from the Viewer basic role.
#BasicRole: "Grafana Admin" | "Admin" | "Editor" | "Viewer"
// Header describes an HTTP header that is forwarded with a proxied request for
// a plugin route.
#Header: {
name: string
content: string
}
// URLParam describes query string parameters for
// a url in a plugin route
#URLParam: {
name: string
content: string
}
// A proxy route used in datasource plugins for plugin authentication
// and adding headers to HTTP requests made by the plugin.
// For more information, refer to [Authentication for data source
// plugins](https://grafana.com/docs/grafana/latest/developers/plugins/authentication/).
#Route: {
// For data source plugins. The route path that is replaced by the
// route URL field when proxying the call.
path?: string
// For data source plugins. Route method matches the HTTP verb
// like GET or POST. Multiple methods can be provided as a
// comma-separated list.
method?: string
// For data source plugins. Route URL is where the request is
// proxied to.
url?: string
urlParams?: [...#URLParam]
reqSignedIn?: bool
reqRole?: string
// For data source plugins. Route headers adds HTTP headers to the
// proxied request.
headers?: [...#Header]
// For data source plugins. Route headers set the body content and
// length to the proxied request.
body?: {
...
}
// For data source plugins. Token authentication section used with
// an OAuth API.
tokenAuth?: #TokenAuth
// For data source plugins. Token authentication section used with
// an JWT OAuth API.
jwtTokenAuth?: #JWTTokenAuth
}
// TODO docs
#TokenAuth: {
// URL to fetch the authentication token.
url?: string
// The list of scopes that your application should be granted
// access to.
scopes?: [...string]
// Parameters for the token authentication request.
params: [string]: string
}
// TODO docs
// TODO should this really be separate from TokenAuth?
#JWTTokenAuth: {
// URL to fetch the JWT token.
url: string
// The list of scopes that your application should be granted
// access to.
scopes: [...string]
// Parameters for the JWT token authentication request.
params: [string]: string
}
},
]
},
]
schemas: [{
version: [0, 0]
schema: {
// Unique name of the plugin. If the plugin is published on
// grafana.com, then the plugin `id` has to follow the naming
// conventions.
id: string & strings.MinRunes(1)
id: =~"^([0-9a-z]+\\-([0-9a-z]+\\-)?(\(strings.Join([ for t in _types {t}], "|"))))|(alertGroups|alertlist|annolist|barchart|bargauge|candlestick|canvas|dashlist|debug|datagrid|gauge|geomap|gettingstarted|graph|heatmap|histogram|icon|live|logs|news|nodeGraph|piechart|pluginlist|stat|state-timeline|status-history|table|table-old|text|timeseries|trend|traces|welcome|xychart|alertmanager|cloudwatch|dashboard|elasticsearch|grafana|grafana-azure-monitor-datasource|graphite|influxdb|jaeger|loki|mixed|mssql|mysql|opentsdb|postgres|prometheus|stackdriver|tempo|testdata|zipkin|phlare|parca)$"
// Human-readable name of the plugin that is shown to the user in
// the UI.
name: string
// The set of all plugin types. This hidden field exists solely
// so that the set can be string-interpolated into other fields.
_types: ["app", "datasource", "panel", "renderer", "secretsmanager"]
// type indicates which type of Grafana plugin this is, of the defined
// set of Grafana plugin types.
type: or(_types)
// IncludeType is a string identifier of a plugin include type, which is
// a superset of plugin types.
#IncludeType: type | "dashboard" | "page"
// Metadata about the plugin
info: #Info
// Metadata about a Grafana plugin. Some fields are used on the plugins
// page in Grafana and others on grafana.com, if the plugin is published.
#Info: {
// Information about the plugin author
author?: {
// Author's name
name?: string
// Author's name
email?: string
// Link to author's website
url?: string
}
// Build information
build?: #BuildInfo
// Description of plugin. Used on the plugins page in Grafana and
// for search on grafana.com.
description?: string
// Array of plugin keywords. Used for search on grafana.com.
keywords: [...string]
// should be this, but CUE to openapi converter screws this up
// by inserting a non-concrete default.
// keywords: [string, ...string]
// An array of link objects to be displayed on this plugin's
// project page in the form `{name: 'foo', url:
// 'http://example.com'}`
links?: [...{
name?: string
url?: string
}]
// SVG images that are used as plugin icons
logos?: {
// Link to the "small" version of the plugin logo, which must be
// an SVG image. "Large" and "small" logos can be the same image.
small: string
// Link to the "large" version of the plugin logo, which must be
// an SVG image. "Large" and "small" logos can be the same image.
large: string
}
// An array of screenshot objects in the form `{name: 'bar', path:
// 'img/screenshot.png'}`
screenshots?: [...{
name?: string
path?: string
}]
// Date when this plugin was built
updated?: =~"^(\\d{4}-\\d{2}-\\d{2}|\\%TODAY\\%)$"
// Project version of this commit, e.g. `6.7.x`
version?: =~"^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)|(\\%VERSION\\%)$"
}
#BuildInfo: {
// Time when the plugin was built, as a Unix timestamp
time?: int64
repo?: string
// Git branch the plugin was built from
branch?: string
// Git hash of the commit the plugin was built from
hash?: string
number?: int64
// GitHub pull request the plugin was built from
pr?: int32
}
// Dependency information related to Grafana and other plugins
dependencies: #Dependencies
#Dependencies: {
// (Deprecated) Required Grafana version for this plugin, e.g.
// `6.x.x 7.x.x` to denote plugin requires Grafana v6.x.x or
// v7.x.x.
grafanaVersion?: =~"^([0-9]+)(\\.[0-9x]+)?(\\.[0-9x])?$"
// Required Grafana version for this plugin. Validated using
// https://github.com/npm/node-semver.
grafanaDependency: =~"^(<=|>=|<|>|=|~|\\^)?([0-9]+)(\\.[0-9x\\*]+)(\\.[0-9x\\*]+)?(\\s(<=|>=|<|=>)?([0-9]+)(\\.[0-9x]+)(\\.[0-9x]+))?$"
// An array of required plugins on which this plugin depends
plugins?: [...#Dependency]
}
// Dependency describes another plugin on which a plugin depends.
// The id refers to the plugin package identifier, as given on
// the grafana.com plugin marketplace.
#Dependency: {
id: =~"^[0-9a-z]+\\-([0-9a-z]+\\-)?(app|panel|datasource)$"
type: "app" | "datasource" | "panel"
name: string
version: string
...
}
// Schema definition for the plugin.json file. Used primarily for schema validation.
$schema?: string
// For data source plugins, if the plugin supports alerting. Requires `backend` to be set to `true`.
alerting?: bool
// For data source plugins, if the plugin supports annotation
// queries.
annotations?: bool
// Set to true for app plugins that should be enabled and pinned to the navigation bar in all orgs.
autoEnabled?: bool
// If the plugin has a backend component.
backend?: bool
// [internal only] Indicates whether the plugin is developed and shipped as part
// of Grafana. Also known as a 'core plugin'.
builtIn: bool | *false
// Plugin category used on the Add data source page.
category?: "tsdb" | "logging" | "cloud" | "tracing" | "profiling" | "sql" | "enterprise" | "iot" | "other"
// Grafana Enterprise specific features.
enterpriseFeatures?: {
// Enable/Disable health diagnostics errors. Requires Grafana
// >=7.5.5.
healthDiagnosticsErrors?: bool | *false
...
}
// The first part of the file name of the backend component
// executable. There can be multiple executables built for
// different operating system and architecture. Grafana will
// check for executables named `<executable>_<$GOOS>_<lower case
// $GOARCH><.exe for Windows>`, e.g. `plugin_linux_amd64`.
// Combination of $GOOS and $GOARCH can be found here:
// https://golang.org/doc/install/source#environment.
executable?: string
// [internal only] Excludes the plugin from listings in Grafana's UI. Only
// allowed for `builtIn` plugins.
hideFromList: bool | *false
// Resources to include in plugin.
includes?: [...#Include]
// A resource to be included in a plugin.
#Include: {
// Unique identifier of the included resource
uid?: string
type: #IncludeType
name?: string
// (Legacy) The Angular component to use for a page.
component?: string
// The minimum role a user must have to see this page in the navigation menu.
role?: "Admin" | "Editor" | "Viewer"
// RBAC action the user must have to access the route
action?: string
// Used for app plugins.
path?: string
// Add the include to the navigation menu.
addToNav?: bool
// Page or dashboard when user clicks the icon in the side menu.
defaultNav?: bool
// Icon to use in the side menu. For information on available
// icon, refer to [Icons
// Overview](https://developers.grafana.com/ui/latest/index.html?path=/story/docs-overview-icon--icons-overview).
icon?: string
...
}
// For data source plugins, if the plugin supports logs. It may be used to filter logs only features.
logs?: bool
// For data source plugins, if the plugin supports metric queries.
// Used to enable the plugin in the panel editor.
metrics?: bool
// FIXME there appears to be a bug in thema that prevents this from working. Maybe it'd
// help to refer to it with an alias, but thema can't support using current list syntax.
// syntax (fixed by grafana/thema#82). Either way, for now, pascalName gets populated in Go.
let sani = (strings.ToTitle(regexp.ReplaceAllLiteral("[^a-zA-Z]+", name, "")))
// [internal only] The PascalCase name for the plugin. Used for creating machine-friendly
// identifiers, typically in code generation.
//
// If not provided, defaults to name, but title-cased and sanitized (only
// alphabetical characters allowed).
pascalName: string & =~"^([A-Z][a-zA-Z]{1,62})$" | *sani
// Initialize plugin on startup. By default, the plugin
// initializes on first use.
preload?: bool
// For data source plugins. There is a query options section in
// the plugin's query editor and these options can be turned on
// if needed.
queryOptions?: {
// For data source plugins. If the `max data points` option should
// be shown in the query options section in the query editor.
maxDataPoints?: bool
// For data source plugins. If the `min interval` option should be
// shown in the query options section in the query editor.
minInterval?: bool
// For data source plugins. If the `cache timeout` option should
// be shown in the query options section in the query editor.
cacheTimeout?: bool
}
// Routes is a list of proxy routes, if any. For datasource plugins only.
routes?: [...#Route]
// For panel plugins. Hides the query editor.
skipDataQuery?: bool
// Marks a plugin as a pre-release.
state?: #ReleaseState
// ReleaseState indicates release maturity state of a plugin.
#ReleaseState: "alpha" | "beta" | "deprecated" | *"stable"
// For data source plugins, if the plugin supports streaming. Used in Explore to start live streaming.
streaming?: bool
// For data source plugins, if the plugin supports tracing. Used for example to link logs (e.g. Loki logs) with tracing plugins.
tracing?: bool
// Optional list of RBAC RoleRegistrations.
// Describes and organizes the default permissions associated with any of the Grafana basic roles,
// which characterizes what viewers, editors, admins, or grafana admins can do on the plugin.
// The Admin basic role inherits its default permissions from the Editor basic role which in turn
// inherits them from the Viewer basic role.
roles?: [...#RoleRegistration]
// RoleRegistration describes an RBAC role and its assignments to basic roles.
// It organizes related RBAC permissions on the plugin into a role and defines which basic roles
// will get them by default.
// Example: the role 'Schedules Reader' bundles permissions to view all schedules of the plugin
// which will be granted to Admins by default.
#RoleRegistration: {
// RBAC role definition to bundle related RBAC permissions on the plugin.
role: #Role
// Default assignment of the role to Grafana basic roles (Viewer, Editor, Admin, Grafana Admin)
// The Admin basic role inherits its default permissions from the Editor basic role which in turn
// inherits them from the Viewer basic role.
grants: [...#BasicRole]
}
// Role describes an RBAC role which allows grouping multiple related permissions on the plugin,
// each of which has an action and an optional scope.
// Example: the role 'Schedules Reader' bundles permissions to view all schedules of the plugin.
#Role: {
name: string
name: =~"^([A-Z][0-9A-Za-z ]+)$"
description: string
permissions: [...#Permission]
}
// Permission describes an RBAC permission on the plugin. A permission has an action and an optional
// scope.
// Example: action: 'test-app.schedules:read', scope: 'test-app.schedules:*'
#Permission: {
action: string
scope?: string
}
// BasicRole is a Grafana basic role, which can be 'Viewer', 'Editor', 'Admin' or 'Grafana Admin'.
// With RBAC, the Admin basic role inherits its default permissions from the Editor basic role which
// in turn inherits them from the Viewer basic role.
#BasicRole: "Grafana Admin" | "Admin" | "Editor" | "Viewer"
// Header describes an HTTP header that is forwarded with a proxied request for
// a plugin route.
#Header: {
name: string
content: string
}
// URLParam describes query string parameters for
// a url in a plugin route
#URLParam: {
name: string
content: string
}
// A proxy route used in datasource plugins for plugin authentication
// and adding headers to HTTP requests made by the plugin.
// For more information, refer to [Authentication for data source
// plugins](https://grafana.com/docs/grafana/latest/developers/plugins/authentication/).
#Route: {
// For data source plugins. The route path that is replaced by the
// route URL field when proxying the call.
path?: string
// For data source plugins. Route method matches the HTTP verb
// like GET or POST. Multiple methods can be provided as a
// comma-separated list.
method?: string
// For data source plugins. Route URL is where the request is
// proxied to.
url?: string
urlParams?: [...#URLParam]
reqSignedIn?: bool
reqRole?: string
// For data source plugins. Route headers adds HTTP headers to the
// proxied request.
headers?: [...#Header]
// For data source plugins. Route headers set the body content and
// length to the proxied request.
body?: {
...
}
// For data source plugins. Token authentication section used with
// an OAuth API.
tokenAuth?: #TokenAuth
// For data source plugins. Token authentication section used with
// an JWT OAuth API.
jwtTokenAuth?: #JWTTokenAuth
}
// TODO docs
#TokenAuth: {
// URL to fetch the authentication token.
url?: string
// The list of scopes that your application should be granted
// access to.
scopes?: [...string]
// Parameters for the token authentication request.
params: [string]: string
}
// TODO docs
// TODO should this really be separate from TokenAuth?
#JWTTokenAuth: {
// URL to fetch the JWT token.
url: string
// The list of scopes that your application should be granted
// access to.
scopes: [...string]
// Parameters for the JWT token authentication request.
params: [string]: string
}
}
}]
lenses: []

View File

@ -287,6 +287,9 @@ const (
)
// Shape of a CloudWatch Annotation query
//
// TS type is CloudWatchDefaultQuery = Omit<CloudWatchLogsQuery, 'queryMode'> & CloudWatchMetricsQuery, declared in veneer
// #CloudWatchDefaultQuery: #CloudWatchLogsQuery & #CloudWatchMetricsQuery @cuetsy(kind="type")
type CloudWatchAnnotationQuery struct {
// The ID of the AWS account to query for the metric, specifying `all` will query all accounts that the monitoring account is permitted to query.
AccountId *string `json:"accountId,omitempty"`

View File

@ -26,216 +26,214 @@ composableKinds: DataQuery: {
maturity: "merged"
lineage: {
seqs: [
{
schemas: [
{
#AzureMonitorQuery: common.DataQuery & {
// Azure subscription containing the resource(s) to be queried.
subscription?: string
schemas: [{
version: [0, 0]
schema: {
#AzureMonitorQuery: common.DataQuery & {
// Azure subscription containing the resource(s) to be queried.
subscription?: string
// Subscriptions to be queried via Azure Resource Graph.
subscriptions?: [...string]
// Subscriptions to be queried via Azure Resource Graph.
subscriptions?: [...string]
// Azure Monitor Metrics sub-query properties.
azureMonitor?: #AzureMetricQuery
// Azure Monitor Logs sub-query properties.
azureLogAnalytics?: #AzureLogsQuery
// Azure Resource Graph sub-query properties.
azureResourceGraph?: #AzureResourceGraphQuery
// Application Insights Traces sub-query properties.
azureTraces?: #AzureTracesQuery
// @deprecated Legacy template variable support.
grafanaTemplateVariableFn?: #GrafanaTemplateVariableQuery
// Azure Monitor Metrics sub-query properties.
azureMonitor?: #AzureMetricQuery
// Azure Monitor Logs sub-query properties.
azureLogAnalytics?: #AzureLogsQuery
// Azure Resource Graph sub-query properties.
azureResourceGraph?: #AzureResourceGraphQuery
// Application Insights Traces sub-query properties.
azureTraces?: #AzureTracesQuery
// @deprecated Legacy template variable support.
grafanaTemplateVariableFn?: #GrafanaTemplateVariableQuery
// Template variables params. These exist for backwards compatiblity with legacy template variables.
resourceGroup?: string
namespace?: string
resource?: string
region?: string
// Azure Monitor query type.
// queryType: #AzureQueryType
} @cuetsy(kind="interface") @grafana(TSVeneer="type")
// Template variables params. These exist for backwards compatiblity with legacy template variables.
resourceGroup?: string
namespace?: string
resource?: string
region?: string
// Azure Monitor query type.
// queryType: #AzureQueryType
} @cuetsy(kind="interface") @grafana(TSVeneer="type")
// Defines the supported queryTypes. GrafanaTemplateVariableFn is deprecated
#AzureQueryType: "Azure Monitor" | "Azure Log Analytics" | "Azure Resource Graph" | "Azure Traces" | "Azure Subscriptions" | "Azure Resource Groups" | "Azure Namespaces" | "Azure Resource Names" | "Azure Metric Names" | "Azure Workspaces" | "Azure Regions" | "Grafana Template Variable Function" @cuetsy(kind="enum", memberNames="AzureMonitor|LogAnalytics|AzureResourceGraph|AzureTraces|SubscriptionsQuery|ResourceGroupsQuery|NamespacesQuery|ResourceNamesQuery|MetricNamesQuery|WorkspacesQuery|LocationsQuery|GrafanaTemplateVariableFn")
// Defines the supported queryTypes. GrafanaTemplateVariableFn is deprecated
#AzureQueryType: "Azure Monitor" | "Azure Log Analytics" | "Azure Resource Graph" | "Azure Traces" | "Azure Subscriptions" | "Azure Resource Groups" | "Azure Namespaces" | "Azure Resource Names" | "Azure Metric Names" | "Azure Workspaces" | "Azure Regions" | "Grafana Template Variable Function" @cuetsy(kind="enum", memberNames="AzureMonitor|LogAnalytics|AzureResourceGraph|AzureTraces|SubscriptionsQuery|ResourceGroupsQuery|NamespacesQuery|ResourceNamesQuery|MetricNamesQuery|WorkspacesQuery|LocationsQuery|GrafanaTemplateVariableFn")
#AzureMetricQuery: {
// Array of resource URIs to be queried.
resources?: [...#AzureMonitorResource]
// metricNamespace is used as the resource type (or resource namespace).
// It's usually equal to the target metric namespace. e.g. microsoft.storage/storageaccounts
// Kept the name of the variable as metricNamespace to avoid backward incompatibility issues.
metricNamespace?: string
// Used as the value for the metricNamespace property when it's different from the resource namespace.
customNamespace?: string
// The metric to query data for within the specified metricNamespace. e.g. UsedCapacity
metricName?: string
// The Azure region containing the resource(s).
region?: string
// The granularity of data points to be queried. Defaults to auto.
timeGrain?: string
// The aggregation to be used within the query. Defaults to the primaryAggregationType defined by the metric.
aggregation?: string
// Filters to reduce the set of data returned. Dimensions that can be filtered on are defined by the metric.
dimensionFilters?: [...#AzureMetricDimension]
// Maximum number of records to return. Defaults to 10.
top?: string
// Time grains that are supported by the metric.
allowedTimeGrainsMs?: [...int64]
#AzureMetricQuery: {
// Array of resource URIs to be queried.
resources?: [...#AzureMonitorResource]
// metricNamespace is used as the resource type (or resource namespace).
// It's usually equal to the target metric namespace. e.g. microsoft.storage/storageaccounts
// Kept the name of the variable as metricNamespace to avoid backward incompatibility issues.
metricNamespace?: string
// Used as the value for the metricNamespace property when it's different from the resource namespace.
customNamespace?: string
// The metric to query data for within the specified metricNamespace. e.g. UsedCapacity
metricName?: string
// The Azure region containing the resource(s).
region?: string
// The granularity of data points to be queried. Defaults to auto.
timeGrain?: string
// The aggregation to be used within the query. Defaults to the primaryAggregationType defined by the metric.
aggregation?: string
// Filters to reduce the set of data returned. Dimensions that can be filtered on are defined by the metric.
dimensionFilters?: [...#AzureMetricDimension]
// Maximum number of records to return. Defaults to 10.
top?: string
// Time grains that are supported by the metric.
allowedTimeGrainsMs?: [...int64]
// Aliases can be set to modify the legend labels. e.g. {{ resourceGroup }}. See docs for more detail.
alias?: string
// Aliases can be set to modify the legend labels. e.g. {{ resourceGroup }}. See docs for more detail.
alias?: string
// @deprecated
timeGrainUnit?: string
// @deprecated
timeGrainUnit?: string
// @deprecated This property was migrated to dimensionFilters and should only be accessed in the migration
dimension?: string
// @deprecated This property was migrated to dimensionFilters and should only be accessed in the migration
dimension?: string
// @deprecated This property was migrated to dimensionFilters and should only be accessed in the migration
dimensionFilter?: string
// @deprecated This property was migrated to dimensionFilters and should only be accessed in the migration
dimensionFilter?: string
// @deprecated Use metricNamespace instead
metricDefinition?: string
// @deprecated Use metricNamespace instead
metricDefinition?: string
// @deprecated Use resourceGroup, resourceName and metricNamespace instead
resourceUri?: string
// @deprecated Use resourceGroup, resourceName and metricNamespace instead
resourceUri?: string
// @deprecated Use resources instead
resourceGroup?: string
// @deprecated Use resources instead
resourceName?: string
} @cuetsy(kind="interface")
// @deprecated Use resources instead
resourceGroup?: string
// @deprecated Use resources instead
resourceName?: string
} @cuetsy(kind="interface")
// Azure Monitor Logs sub-query properties
#AzureLogsQuery: {
// KQL query to be executed.
query?: string
// Specifies the format results should be returned as.
resultFormat?: #ResultFormat
// Array of resource URIs to be queried.
resources?: [...string]
// Workspace ID. This was removed in Grafana 8, but remains for backwards compat
workspace?: string
// Azure Monitor Logs sub-query properties
#AzureLogsQuery: {
// KQL query to be executed.
query?: string
// Specifies the format results should be returned as.
resultFormat?: #ResultFormat
// Array of resource URIs to be queried.
resources?: [...string]
// Workspace ID. This was removed in Grafana 8, but remains for backwards compat
workspace?: string
// @deprecated Use resources instead
resource?: string
} @cuetsy(kind="interface")
// @deprecated Use resources instead
resource?: string
} @cuetsy(kind="interface")
// Application Insights Traces sub-query properties
#AzureTracesQuery: {
// Specifies the format results should be returned as.
resultFormat?: #ResultFormat
// Array of resource URIs to be queried.
resources?: [...string]
// Operation ID. Used only for Traces queries.
operationId?: string
// Types of events to filter by.
traceTypes?: [...string]
// Filters for property values.
filters?: [...#AzureTracesFilter]
// KQL query to be executed.
query?: string
} @cuetsy(kind="interface")
// Application Insights Traces sub-query properties
#AzureTracesQuery: {
// Specifies the format results should be returned as.
resultFormat?: #ResultFormat
// Array of resource URIs to be queried.
resources?: [...string]
// Operation ID. Used only for Traces queries.
operationId?: string
// Types of events to filter by.
traceTypes?: [...string]
// Filters for property values.
filters?: [...#AzureTracesFilter]
// KQL query to be executed.
query?: string
} @cuetsy(kind="interface")
#AzureTracesFilter: {
// Property name, auto-populated based on available traces.
property: string
// Comparison operator to use. Either equals or not equals.
operation: string
// Values to filter by.
filters: [...string]
} @cuetsy(kind="interface")
#AzureTracesFilter: {
// Property name, auto-populated based on available traces.
property: string
// Comparison operator to use. Either equals or not equals.
operation: string
// Values to filter by.
filters: [...string]
} @cuetsy(kind="interface")
#ResultFormat: "table" | "time_series" | "trace" @cuetsy(kind="enum", memberNames="Table|TimeSeries|Trace")
#ResultFormat: "table" | "time_series" | "trace" @cuetsy(kind="enum", memberNames="Table|TimeSeries|Trace")
#AzureResourceGraphQuery: {
// Azure Resource Graph KQL query to be executed.
query?: string
// Specifies the format results should be returned as. Defaults to table.
resultFormat?: string
} @cuetsy(kind="interface")
#AzureResourceGraphQuery: {
// Azure Resource Graph KQL query to be executed.
query?: string
// Specifies the format results should be returned as. Defaults to table.
resultFormat?: string
} @cuetsy(kind="interface")
#AzureMonitorResource: {
subscription?: string
resourceGroup?: string
resourceName?: string
metricNamespace?: string
region?: string
} @cuetsy(kind="interface")
#AzureMonitorResource: {
subscription?: string
resourceGroup?: string
resourceName?: string
metricNamespace?: string
region?: string
} @cuetsy(kind="interface")
#AzureMetricDimension: {
// Name of Dimension to be filtered on.
dimension?: string
// String denoting the filter operation. Supports 'eq' - equals,'ne' - not equals, 'sw' - starts with. Note that some dimensions may not support all operators.
operator?: string
// Values to match with the filter.
filters?: [...string]
// @deprecated filter is deprecated in favour of filters to support multiselect.
filter?: string
} @cuetsy(kind="interface")
#AzureMetricDimension: {
// Name of Dimension to be filtered on.
dimension?: string
// String denoting the filter operation. Supports 'eq' - equals,'ne' - not equals, 'sw' - starts with. Note that some dimensions may not support all operators.
operator?: string
// Values to match with the filter.
filters?: [...string]
// @deprecated filter is deprecated in favour of filters to support multiselect.
filter?: string
} @cuetsy(kind="interface")
#GrafanaTemplateVariableQueryType: "AppInsightsMetricNameQuery" | "AppInsightsGroupByQuery" | "SubscriptionsQuery" | "ResourceGroupsQuery" | "ResourceNamesQuery" | "MetricNamespaceQuery" | "MetricNamesQuery" | "WorkspacesQuery" | "UnknownQuery" @cuetsy(kind="type")
#BaseGrafanaTemplateVariableQuery: {
rawQuery?: string
...
} @cuetsy(kind="interface")
#UnknownQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "UnknownQuery"
} @cuetsy(kind="interface")
#AppInsightsMetricNameQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "AppInsightsMetricNameQuery"
} @cuetsy(kind="interface")
#AppInsightsGroupByQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "AppInsightsGroupByQuery"
metricName: string
} @cuetsy(kind="interface")
#SubscriptionsQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "SubscriptionsQuery"
} @cuetsy(kind="interface")
#ResourceGroupsQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "ResourceGroupsQuery"
subscription: string
} @cuetsy(kind="interface")
#ResourceNamesQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "ResourceNamesQuery"
subscription: string
resourceGroup: string
metricNamespace: string
} @cuetsy(kind="interface")
#MetricNamespaceQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "MetricNamespaceQuery"
#GrafanaTemplateVariableQueryType: "AppInsightsMetricNameQuery" | "AppInsightsGroupByQuery" | "SubscriptionsQuery" | "ResourceGroupsQuery" | "ResourceNamesQuery" | "MetricNamespaceQuery" | "MetricNamesQuery" | "WorkspacesQuery" | "UnknownQuery" @cuetsy(kind="type")
#BaseGrafanaTemplateVariableQuery: {
rawQuery?: string
...
} @cuetsy(kind="interface")
#UnknownQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "UnknownQuery"
} @cuetsy(kind="interface")
#AppInsightsMetricNameQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "AppInsightsMetricNameQuery"
} @cuetsy(kind="interface")
#AppInsightsGroupByQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "AppInsightsGroupByQuery"
metricName: string
} @cuetsy(kind="interface")
#SubscriptionsQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "SubscriptionsQuery"
} @cuetsy(kind="interface")
#ResourceGroupsQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "ResourceGroupsQuery"
subscription: string
} @cuetsy(kind="interface")
#ResourceNamesQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "ResourceNamesQuery"
subscription: string
resourceGroup: string
metricNamespace: string
} @cuetsy(kind="interface")
#MetricNamespaceQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "MetricNamespaceQuery"
subscription: string
resourceGroup: string
metricNamespace?: string
resourceName?: string
} @cuetsy(kind="interface")
// @deprecated Use MetricNamespaceQuery instead
#MetricDefinitionsQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "MetricDefinitionsQuery"
subscription: string
resourceGroup: string
metricNamespace?: string
resourceName?: string
} @cuetsy(kind="interface")
} @cuetsy(kind="interface")
#MetricNamesQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "MetricNamesQuery"
subscription: string
resourceGroup: string
resourceName: string
metricNamespace: string
} @cuetsy(kind="interface")
#WorkspacesQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "WorkspacesQuery"
subscription: string
} @cuetsy(kind="interface")
// @deprecated Use MetricNamespaceQuery instead
#MetricDefinitionsQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "MetricDefinitionsQuery"
subscription: string
resourceGroup: string
metricNamespace?: string
resourceName?: string
} @cuetsy(kind="interface")
#MetricNamesQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "MetricNamesQuery"
subscription: string
resourceGroup: string
resourceName: string
metricNamespace: string
} @cuetsy(kind="interface")
#WorkspacesQuery: #BaseGrafanaTemplateVariableQuery & {
kind: "WorkspacesQuery"
subscription: string
} @cuetsy(kind="interface")
#GrafanaTemplateVariableQuery: #AppInsightsMetricNameQuery | #AppInsightsGroupByQuery | #SubscriptionsQuery | #ResourceGroupsQuery | #ResourceNamesQuery | #MetricNamespaceQuery | #MetricDefinitionsQuery | #MetricNamesQuery | #WorkspacesQuery | #UnknownQuery @cuetsy(kind="type")
},
]
},
]
#GrafanaTemplateVariableQuery: #AppInsightsMetricNameQuery | #AppInsightsGroupByQuery | #SubscriptionsQuery | #ResourceGroupsQuery | #ResourceNamesQuery | #MetricNamespaceQuery | #MetricDefinitionsQuery | #MetricNamesQuery | #WorkspacesQuery | #UnknownQuery @cuetsy(kind="type")
}
}]
lenses: []
}
}

View File

@ -25,173 +25,170 @@ composableKinds: DataQuery: {
maturity: "merged"
lineage: {
seqs: [
{
schemas: [
{
#CloudMonitoringQuery: common.DataQuery & {
// Aliases can be set to modify the legend labels. e.g. {{metric.label.xxx}}. See docs for more detail.
aliasBy?: string
// GCM query type.
// queryType: #QueryType
// Time Series List sub-query properties.
timeSeriesList?: #TimeSeriesList | #AnnotationQuery
// Time Series sub-query properties.
timeSeriesQuery?: #TimeSeriesQuery
// SLO sub-query properties.
sloQuery?: #SLOQuery
// Time interval in milliseconds.
intervalMs?: number
} @cuetsy(kind="interface")
schemas: [{
version: [0, 0]
schema: {
#CloudMonitoringQuery: common.DataQuery & {
// Aliases can be set to modify the legend labels. e.g. {{metric.label.xxx}}. See docs for more detail.
aliasBy?: string
// GCM query type.
// queryType: #QueryType
// Time Series List sub-query properties.
timeSeriesList?: #TimeSeriesList | #AnnotationQuery
// Time Series sub-query properties.
timeSeriesQuery?: #TimeSeriesQuery
// SLO sub-query properties.
sloQuery?: #SLOQuery
// Time interval in milliseconds.
intervalMs?: number
} @cuetsy(kind="interface")
// Defines the supported queryTypes.
#QueryType: "timeSeriesList" | "timeSeriesQuery" | "slo" | "annotation" @cuetsy(kind="enum", memberNames="TIME_SERIES_LIST|TIME_SERIES_QUERY|SLO|ANNOTATION")
// Defines the supported queryTypes.
#QueryType: "timeSeriesList" | "timeSeriesQuery" | "slo" | "annotation" @cuetsy(kind="enum", memberNames="TIME_SERIES_LIST|TIME_SERIES_QUERY|SLO|ANNOTATION")
// Time Series List sub-query properties.
#TimeSeriesList: {
// GCP project to execute the query against.
projectName: string
// Reducer applied across a set of time-series values. Defaults to REDUCE_NONE.
crossSeriesReducer: string
// Alignment period to use when regularizing data. Defaults to cloud-monitoring-auto.
alignmentPeriod?: string
// Alignment function to be used. Defaults to ALIGN_MEAN.
perSeriesAligner?: string
// Array of labels to group data by.
groupBys?: [...string]
// Array of filters to query data by. Labels that can be filtered on are defined by the metric.
filters?: [...string]
// Data view, defaults to FULL.
view?: string
// Time Series List sub-query properties.
#TimeSeriesList: {
// GCP project to execute the query against.
projectName: string
// Reducer applied across a set of time-series values. Defaults to REDUCE_NONE.
crossSeriesReducer: string
// Alignment period to use when regularizing data. Defaults to cloud-monitoring-auto.
alignmentPeriod?: string
// Alignment function to be used. Defaults to ALIGN_MEAN.
perSeriesAligner?: string
// Array of labels to group data by.
groupBys?: [...string]
// Array of filters to query data by. Labels that can be filtered on are defined by the metric.
filters?: [...string]
// Data view, defaults to FULL.
view?: string
// Only present if a preprocessor is selected. Reducer applied across a set of time-series values. Defaults to REDUCE_NONE.
secondaryCrossSeriesReducer?: string
// Only present if a preprocessor is selected. Alignment period to use when regularizing data. Defaults to cloud-monitoring-auto.
secondaryAlignmentPeriod?: string
// Only present if a preprocessor is selected. Alignment function to be used. Defaults to ALIGN_MEAN.
secondaryPerSeriesAligner?: string
// Only present if a preprocessor is selected. Array of labels to group data by.
secondaryGroupBys?: [...string]
// Only present if a preprocessor is selected. Reducer applied across a set of time-series values. Defaults to REDUCE_NONE.
secondaryCrossSeriesReducer?: string
// Only present if a preprocessor is selected. Alignment period to use when regularizing data. Defaults to cloud-monitoring-auto.
secondaryAlignmentPeriod?: string
// Only present if a preprocessor is selected. Alignment function to be used. Defaults to ALIGN_MEAN.
secondaryPerSeriesAligner?: string
// Only present if a preprocessor is selected. Array of labels to group data by.
secondaryGroupBys?: [...string]
// Preprocessor is not part of the API, but is used to store the preprocessor and not affect the UI for the rest of parameters
preprocessor?: #PreprocessorType
...
} @cuetsy(kind="interface")
// Preprocessor is not part of the API, but is used to store the preprocessor and not affect the UI for the rest of parameters
preprocessor?: #PreprocessorType
...
} @cuetsy(kind="interface")
// Types of pre-processor available. Defined by the metric.
#PreprocessorType: "none" | "rate" | "delta" @cuetsy(kind="enum")
// Types of pre-processor available. Defined by the metric.
#PreprocessorType: "none" | "rate" | "delta" @cuetsy(kind="enum")
// Annotation sub-query properties.
#AnnotationQuery: #TimeSeriesList & {
// Annotation title.
title?: string
// Annotation text.
text?: string
} @cuetsy(kind="interface")
// Annotation sub-query properties.
#AnnotationQuery: #TimeSeriesList & {
// Annotation title.
title?: string
// Annotation text.
text?: string
} @cuetsy(kind="interface")
// Time Series sub-query properties.
#TimeSeriesQuery: {
// GCP project to execute the query against.
projectName: string
// MQL query to be executed.
query: string
// To disable the graphPeriod, it should explictly be set to 'disabled'.
graphPeriod?: "disabled" | string
} @cuetsy(kind="interface")
// Time Series sub-query properties.
#TimeSeriesQuery: {
// GCP project to execute the query against.
projectName: string
// MQL query to be executed.
query: string
// To disable the graphPeriod, it should explictly be set to 'disabled'.
graphPeriod?: "disabled" | string
} @cuetsy(kind="interface")
// SLO sub-query properties.
#SLOQuery: {
// GCP project to execute the query against.
projectName: string
// Alignment function to be used. Defaults to ALIGN_MEAN.
perSeriesAligner?: string
// Alignment period to use when regularizing data. Defaults to cloud-monitoring-auto.
alignmentPeriod?: string
// SLO selector.
selectorName: string
// ID for the service the SLO is in.
serviceId: string
// Name for the service the SLO is in.
serviceName: string
// ID for the SLO.
sloId: string
// Name of the SLO.
sloName: string
// SLO goal value.
goal?: number
// Specific lookback period for the SLO.
lookbackPeriod?: string
} @cuetsy(kind="interface")
// SLO sub-query properties.
#SLOQuery: {
// GCP project to execute the query against.
projectName: string
// Alignment function to be used. Defaults to ALIGN_MEAN.
perSeriesAligner?: string
// Alignment period to use when regularizing data. Defaults to cloud-monitoring-auto.
alignmentPeriod?: string
// SLO selector.
selectorName: string
// ID for the service the SLO is in.
serviceId: string
// Name for the service the SLO is in.
serviceName: string
// ID for the SLO.
sloId: string
// Name of the SLO.
sloName: string
// SLO goal value.
goal?: number
// Specific lookback period for the SLO.
lookbackPeriod?: string
} @cuetsy(kind="interface")
// @deprecated This type is for migration purposes only. Replaced by TimeSeriesList Metric sub-query properties.
#MetricQuery: {
// GCP project to execute the query against.
projectName: string
// Alignment function to be used. Defaults to ALIGN_MEAN.
perSeriesAligner?: string
// Alignment period to use when regularizing data. Defaults to cloud-monitoring-auto.
alignmentPeriod?: string
// Aliases can be set to modify the legend labels. e.g. {{metric.label.xxx}}. See docs for more detail.
aliasBy?: string
editorMode: string
metricType: string
// Reducer applied across a set of time-series values. Defaults to REDUCE_NONE.
crossSeriesReducer: string
// Array of labels to group data by.
groupBys?: [...string]
// Array of filters to query data by. Labels that can be filtered on are defined by the metric.
filters?: [...string]
metricKind?: #MetricKind
valueType?: string
view?: string
// MQL query to be executed.
query: string
// Preprocessor is not part of the API, but is used to store the preprocessor and not affect the UI for the rest of parameters
preprocessor?: #PreprocessorType
// To disable the graphPeriod, it should explictly be set to 'disabled'.
graphPeriod?: "disabled" | string
} @cuetsy(kind="interface")
// @deprecated This type is for migration purposes only. Replaced by TimeSeriesList Metric sub-query properties.
#MetricQuery: {
// GCP project to execute the query against.
projectName: string
// Alignment function to be used. Defaults to ALIGN_MEAN.
perSeriesAligner?: string
// Alignment period to use when regularizing data. Defaults to cloud-monitoring-auto.
alignmentPeriod?: string
// Aliases can be set to modify the legend labels. e.g. {{metric.label.xxx}}. See docs for more detail.
aliasBy?: string
editorMode: string
metricType: string
// Reducer applied across a set of time-series values. Defaults to REDUCE_NONE.
crossSeriesReducer: string
// Array of labels to group data by.
groupBys?: [...string]
// Array of filters to query data by. Labels that can be filtered on are defined by the metric.
filters?: [...string]
metricKind?: #MetricKind
valueType?: string
view?: string
// MQL query to be executed.
query: string
// Preprocessor is not part of the API, but is used to store the preprocessor and not affect the UI for the rest of parameters
preprocessor?: #PreprocessorType
// To disable the graphPeriod, it should explictly be set to 'disabled'.
graphPeriod?: "disabled" | string
} @cuetsy(kind="interface")
#MetricKind: "METRIC_KIND_UNSPECIFIED" | "GAUGE" | "DELTA" | "CUMULATIVE" @cuetsy(kind="enum")
#MetricKind: "METRIC_KIND_UNSPECIFIED" | "GAUGE" | "DELTA" | "CUMULATIVE" @cuetsy(kind="enum")
#ValueTypes: "VALUE_TYPE_UNSPECIFIED" | "BOOL" | "INT64" | "DOUBLE" | "STRING" | "DISTRIBUTION" | "MONEY" @cuetsy(kind="enum")
#ValueTypes: "VALUE_TYPE_UNSPECIFIED" | "BOOL" | "INT64" | "DOUBLE" | "STRING" | "DISTRIBUTION" | "MONEY" @cuetsy(kind="enum")
#AlignmentTypes: "ALIGN_DELTA" | "ALIGN_RATE" | "ALIGN_INTERPOLATE" | "ALIGN_NEXT_OLDER" | "ALIGN_MIN" | "ALIGN_MAX" | "ALIGN_MEAN" | "ALIGN_COUNT" | "ALIGN_SUM" | "ALIGN_STDDEV" | "ALIGN_COUNT_TRUE" | "ALIGN_COUNT_FALSE" | "ALIGN_FRACTION_TRUE" | "ALIGN_PERCENTILE_99" | "ALIGN_PERCENTILE_95" | "ALIGN_PERCENTILE_50" | "ALIGN_PERCENTILE_05" | "ALIGN_PERCENT_CHANGE" | "ALIGN_NONE" @cuetsy(kind="enum")
#AlignmentTypes: "ALIGN_DELTA" | "ALIGN_RATE" | "ALIGN_INTERPOLATE" | "ALIGN_NEXT_OLDER" | "ALIGN_MIN" | "ALIGN_MAX" | "ALIGN_MEAN" | "ALIGN_COUNT" | "ALIGN_SUM" | "ALIGN_STDDEV" | "ALIGN_COUNT_TRUE" | "ALIGN_COUNT_FALSE" | "ALIGN_FRACTION_TRUE" | "ALIGN_PERCENTILE_99" | "ALIGN_PERCENTILE_95" | "ALIGN_PERCENTILE_50" | "ALIGN_PERCENTILE_05" | "ALIGN_PERCENT_CHANGE" | "ALIGN_NONE" @cuetsy(kind="enum")
// @deprecated Use AnnotationQuery instead. Legacy annotation query properties for migration purposes.
#LegacyCloudMonitoringAnnotationQuery: {
// GCP project to execute the query against.
projectName: string
metricType: string
// Query refId.
refId: string
// Array of filters to query data by. Labels that can be filtered on are defined by the metric.
filters: [...string]
metricKind: #MetricKind
valueType: string
// Annotation title.
title: string
// Annotation text.
text: string
} @cuetsy(kind="interface")
// @deprecated Use AnnotationQuery instead. Legacy annotation query properties for migration purposes.
#LegacyCloudMonitoringAnnotationQuery: {
// GCP project to execute the query against.
projectName: string
metricType: string
// Query refId.
refId: string
// Array of filters to query data by. Labels that can be filtered on are defined by the metric.
filters: [...string]
metricKind: #MetricKind
valueType: string
// Annotation title.
title: string
// Annotation text.
text: string
} @cuetsy(kind="interface")
// Query filter representation.
#Filter: {
// Filter key.
key: string
// Filter operator.
operator: string
// Filter value.
value: string
// Filter condition.
condition?: string
} @cuetsy(kind="interface")
// Query filter representation.
#Filter: {
// Filter key.
key: string
// Filter operator.
operator: string
// Filter value.
value: string
// Filter condition.
condition?: string
} @cuetsy(kind="interface")
#MetricFindQueryTypes: "projects" | "services" | "defaultProject" | "metricTypes" | "labelKeys" | "labelValues" | "resourceTypes" | "aggregations" | "aligners" | "alignmentPeriods" | "selectors" | "sloServices" | "slo" @cuetsy(kind="enum", memberNames="Projects|Services|DefaultProject|MetricTypes|LabelKeys|LabelValues|ResourceTypes|Aggregations|Aligners|AlignmentPeriods|Selectors|SLOServices|SLO")
},
]
},
]
#MetricFindQueryTypes: "projects" | "services" | "defaultProject" | "metricTypes" | "labelKeys" | "labelValues" | "resourceTypes" | "aggregations" | "aligners" | "alignmentPeriods" | "selectors" | "sloServices" | "slo" @cuetsy(kind="enum", memberNames="Projects|Services|DefaultProject|MetricTypes|LabelKeys|LabelValues|ResourceTypes|Aggregations|Aligners|AlignmentPeriods|Selectors|SLOServices|SLO")
}
}]
lenses: []
}
}

View File

@ -26,189 +26,187 @@ composableKinds: DataQuery: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
#MetricStat: {
// AWS region to query for the metric
region: string
// A namespace is a container for CloudWatch metrics. Metrics in different namespaces are isolated from each other, so that metrics from different applications are not mistakenly aggregated into the same statistics. For example, Amazon EC2 uses the AWS/EC2 namespace.
namespace: string
// Name of the metric
metricName?: string
// The dimensions of the metric
dimensions?: #Dimensions
// Only show metrics that exactly match all defined dimension names.
matchExact?: bool
// The length of time associated with a specific Amazon CloudWatch statistic. Can be specified by a number of seconds, 'auto', or as a duration string e.g. '15m' being 15 minutes
period?: string
// The ID of the AWS account to query for the metric, specifying `all` will query all accounts that the monitoring account is permitted to query.
accountId?: string
// Metric data aggregations over specified periods of time. For detailed definitions of the statistics supported by CloudWatch, see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.
statistic?: string
// @deprecated use statistic
statistics?: [...string]
} @cuetsy(kind="interface")
schemas: [{
version: [0, 0]
schema: {
#MetricStat: {
// AWS region to query for the metric
region: string
// A namespace is a container for CloudWatch metrics. Metrics in different namespaces are isolated from each other, so that metrics from different applications are not mistakenly aggregated into the same statistics. For example, Amazon EC2 uses the AWS/EC2 namespace.
namespace: string
// Name of the metric
metricName?: string
// The dimensions of the metric
dimensions?: #Dimensions
// Only show metrics that exactly match all defined dimension names.
matchExact?: bool
// The length of time associated with a specific Amazon CloudWatch statistic. Can be specified by a number of seconds, 'auto', or as a duration string e.g. '15m' being 15 minutes
period?: string
// The ID of the AWS account to query for the metric, specifying `all` will query all accounts that the monitoring account is permitted to query.
accountId?: string
// Metric data aggregations over specified periods of time. For detailed definitions of the statistics supported by CloudWatch, see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.
statistic?: string
// @deprecated use statistic
statistics?: [...string]
} @cuetsy(kind="interface")
// A name/value pair that is part of the identity of a metric. For example, you can get statistics for a specific EC2 instance by specifying the InstanceId dimension when you search for metrics.
#Dimensions: {[string]: string | [...string]} @cuetsy(kind="type")
// A name/value pair that is part of the identity of a metric. For example, you can get statistics for a specific EC2 instance by specifying the InstanceId dimension when you search for metrics.
#Dimensions: {[string]: string | [...string]} @cuetsy(kind="type")
// Shape of a CloudWatch Metrics query
#CloudWatchMetricsQuery: {
common.DataQuery
#MetricStat
// Shape of a CloudWatch Metrics query
#CloudWatchMetricsQuery: {
common.DataQuery
#MetricStat
// Whether a query is a Metrics, Logs, or Annotations query
queryMode?: #CloudWatchQueryMode
// Whether to use a metric search or metric query. Metric query is referred to as "Metrics Insights" in the AWS console.
metricQueryType?: #MetricQueryType
// Whether to use the query builder or code editor to create the query
metricEditorMode?: #MetricEditorMode
// ID can be used to reference other queries in math expressions. The ID can include numbers, letters, and underscore, and must start with a lowercase letter.
id: string
// Deprecated: use label
// @deprecated use label
alias?: string
// Change the time series legend names using dynamic labels. See https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph-dynamic-labels.html for more details.
label?: string
// Math expression query
expression?: string
// When the metric query type is `metricQueryType` is set to `Query`, this field is used to specify the query string.
sqlExpression?: string
// When the metric query type is `metricQueryType` is set to `Query` and the `metricEditorMode` is set to `Builder`, this field is used to build up an object representation of a SQL query.
sql?: #SQLExpression
} @cuetsy(kind="interface")
// Whether a query is a Metrics, Logs, or Annotations query
queryMode?: #CloudWatchQueryMode
// Whether to use a metric search or metric query. Metric query is referred to as "Metrics Insights" in the AWS console.
metricQueryType?: #MetricQueryType
// Whether to use the query builder or code editor to create the query
metricEditorMode?: #MetricEditorMode
// ID can be used to reference other queries in math expressions. The ID can include numbers, letters, and underscore, and must start with a lowercase letter.
id: string
// Deprecated: use label
// @deprecated use label
alias?: string
// Change the time series legend names using dynamic labels. See https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph-dynamic-labels.html for more details.
label?: string
// Math expression query
expression?: string
// When the metric query type is `metricQueryType` is set to `Query`, this field is used to specify the query string.
sqlExpression?: string
// When the metric query type is `metricQueryType` is set to `Query` and the `metricEditorMode` is set to `Builder`, this field is used to build up an object representation of a SQL query.
sql?: #SQLExpression
} @cuetsy(kind="interface")
#CloudWatchQueryMode: "Metrics" | "Logs" | "Annotations" @cuetsy(kind="type")
#MetricQueryType: 0 | 1 @cuetsy(kind="enum", memberNames="Search|Query")
#MetricEditorMode: 0 | 1 @cuetsy(kind="enum", memberNames="Builder|Code")
#SQLExpression: {
// SELECT part of the SQL expression
select?: #QueryEditorFunctionExpression
// FROM part of the SQL expression
from?: #QueryEditorPropertyExpression | #QueryEditorFunctionExpression
// WHERE part of the SQL expression
where?: #QueryEditorArrayExpression
// GROUP BY part of the SQL expression
groupBy?: #QueryEditorArrayExpression
// ORDER BY part of the SQL expression
orderBy?: #QueryEditorFunctionExpression
// The sort order of the SQL expression, `ASC` or `DESC`
orderByDirection?: string
// LIMIT part of the SQL expression
limit?: int64
} @cuetsy(kind="interface")
#QueryEditorFunctionExpression: {
type: #QueryEditorExpressionType & "function"
name?: string
parameters?: [...#QueryEditorFunctionParameterExpression]
} @cuetsy(kind="interface")
#CloudWatchQueryMode: "Metrics" | "Logs" | "Annotations" @cuetsy(kind="type")
#MetricQueryType: 0 | 1 @cuetsy(kind="enum", memberNames="Search|Query")
#MetricEditorMode: 0 | 1 @cuetsy(kind="enum", memberNames="Builder|Code")
#SQLExpression: {
// SELECT part of the SQL expression
select?: #QueryEditorFunctionExpression
// FROM part of the SQL expression
from?: #QueryEditorPropertyExpression | #QueryEditorFunctionExpression
// WHERE part of the SQL expression
where?: #QueryEditorArrayExpression
// GROUP BY part of the SQL expression
groupBy?: #QueryEditorArrayExpression
// ORDER BY part of the SQL expression
orderBy?: #QueryEditorFunctionExpression
// The sort order of the SQL expression, `ASC` or `DESC`
orderByDirection?: string
// LIMIT part of the SQL expression
limit?: int64
} @cuetsy(kind="interface")
#QueryEditorFunctionExpression: {
type: #QueryEditorExpressionType & "function"
name?: string
parameters?: [...#QueryEditorFunctionParameterExpression]
} @cuetsy(kind="interface")
#QueryEditorExpressionType: "property" | "operator" | "or" | "and" | "groupBy" | "function" | "functionParameter" @cuetsy(kind="enum")
#QueryEditorExpressionType: "property" | "operator" | "or" | "and" | "groupBy" | "function" | "functionParameter" @cuetsy(kind="enum")
#QueryEditorFunctionParameterExpression: {
type: #QueryEditorExpressionType & "functionParameter"
name?: string
} @cuetsy(kind="interface")
#QueryEditorFunctionParameterExpression: {
type: #QueryEditorExpressionType & "functionParameter"
name?: string
} @cuetsy(kind="interface")
#QueryEditorPropertyExpression: {
type: #QueryEditorExpressionType & "property"
property: #QueryEditorProperty
} @cuetsy(kind="interface")
#QueryEditorPropertyExpression: {
type: #QueryEditorExpressionType & "property"
property: #QueryEditorProperty
} @cuetsy(kind="interface")
#QueryEditorGroupByExpression: {
type: #QueryEditorExpressionType & "groupBy"
property: #QueryEditorProperty
} @cuetsy(kind="interface")
#QueryEditorGroupByExpression: {
type: #QueryEditorExpressionType & "groupBy"
property: #QueryEditorProperty
} @cuetsy(kind="interface")
#QueryEditorOperatorExpression: {
type: #QueryEditorExpressionType & "operator"
property: #QueryEditorProperty
// TS type is operator: QueryEditorOperator<QueryEditorOperatorValueType>, extended in veneer
operator: #QueryEditorOperator
} @cuetsy(kind="interface")
#QueryEditorOperatorExpression: {
type: #QueryEditorExpressionType & "operator"
property: #QueryEditorProperty
// TS type is operator: QueryEditorOperator<QueryEditorOperatorValueType>, extended in veneer
operator: #QueryEditorOperator
} @cuetsy(kind="interface")
// TS type is QueryEditorOperator<T extends QueryEditorOperatorValueType>, extended in veneer
#QueryEditorOperator: {
name?: string
value?: #QueryEditorOperatorType | [...#QueryEditorOperatorType]
} @cuetsy(kind="interface")
// TS type is QueryEditorOperator<T extends QueryEditorOperatorValueType>, extended in veneer
#QueryEditorOperator: {
name?: string
value?: #QueryEditorOperatorType | [...#QueryEditorOperatorType]
} @cuetsy(kind="interface")
#QueryEditorOperatorValueType: #QueryEditorOperatorType | [...#QueryEditorOperatorType] @cuetsy(kind="type")
#QueryEditorOperatorType: string | bool | int64 @cuetsy(kind="type")
#QueryEditorOperatorValueType: #QueryEditorOperatorType | [...#QueryEditorOperatorType] @cuetsy(kind="type")
#QueryEditorOperatorType: string | bool | int64 @cuetsy(kind="type")
#QueryEditorProperty: {
type: #QueryEditorPropertyType
name?: string
} @cuetsy(kind="interface")
#QueryEditorProperty: {
type: #QueryEditorPropertyType
name?: string
} @cuetsy(kind="interface")
#QueryEditorPropertyType: "string" @cuetsy(kind="enum")
#QueryEditorPropertyType: "string" @cuetsy(kind="enum")
#QueryEditorArrayExpression: {
type: (#QueryEditorExpressionType & "and") | (#QueryEditorExpressionType & "or")
expressions: [...#QueryEditorExpression] | [...#QueryEditorArrayExpression]
} @cuetsy(kind="interface")
#QueryEditorArrayExpression: {
type: (#QueryEditorExpressionType & "and") | (#QueryEditorExpressionType & "or")
expressions: [...#QueryEditorExpression] | [...#QueryEditorArrayExpression]
} @cuetsy(kind="interface")
#QueryEditorExpression: #QueryEditorArrayExpression | #QueryEditorPropertyExpression | #QueryEditorGroupByExpression | #QueryEditorFunctionExpression | #QueryEditorFunctionParameterExpression | #QueryEditorOperatorExpression @cuetsy(kind="type")
#QueryEditorExpression: #QueryEditorArrayExpression | #QueryEditorPropertyExpression | #QueryEditorGroupByExpression | #QueryEditorFunctionExpression | #QueryEditorFunctionParameterExpression | #QueryEditorOperatorExpression @cuetsy(kind="type")
// Shape of a CloudWatch Logs query
#CloudWatchLogsQuery: {
common.DataQuery
// Shape of a CloudWatch Logs query
#CloudWatchLogsQuery: {
common.DataQuery
// Whether a query is a Metrics, Logs, or Annotations query
queryMode: #CloudWatchQueryMode
id: string
// AWS region to query for the logs
region: string
// The CloudWatch Logs Insights query to execute
expression?: string
// Fields to group the results by, this field is automatically populated whenever the query is updated
statsGroups?: [...string]
// Log groups to query
logGroups?: [...#LogGroup]
// @deprecated use logGroups
logGroupNames?: [...string]
} @cuetsy(kind="interface")
#LogGroup: {
// ARN of the log group
arn: string
// Name of the log group
name: string
// AccountId of the log group
accountId?: string
// Label of the log group
accountLabel?: string
} @cuetsy(kind="interface")
// Whether a query is a Metrics, Logs, or Annotations query
queryMode: #CloudWatchQueryMode
id: string
// AWS region to query for the logs
region: string
// The CloudWatch Logs Insights query to execute
expression?: string
// Fields to group the results by, this field is automatically populated whenever the query is updated
statsGroups?: [...string]
// Log groups to query
logGroups?: [...#LogGroup]
// @deprecated use logGroups
logGroupNames?: [...string]
} @cuetsy(kind="interface")
#LogGroup: {
// ARN of the log group
arn: string
// Name of the log group
name: string
// AccountId of the log group
accountId?: string
// Label of the log group
accountLabel?: string
} @cuetsy(kind="interface")
#CloudWatchQueryMode: "Metrics" | "Logs" | "Annotations" @cuetsy(kind="type")
#CloudWatchQueryMode: "Metrics" | "Logs" | "Annotations" @cuetsy(kind="type")
// Shape of a CloudWatch Annotation query
#CloudWatchAnnotationQuery: {
common.DataQuery
#MetricStat
// Shape of a CloudWatch Annotation query
#CloudWatchAnnotationQuery: {
common.DataQuery
#MetricStat
// Whether a query is a Metrics, Logs, or Annotations query
queryMode: #CloudWatchQueryMode
// Enable matching on the prefix of the action name or alarm name, specify the prefixes with actionPrefix and/or alarmNamePrefix
prefixMatching?: bool
// Use this parameter to filter the results of the operation to only those alarms
// that use a certain alarm action. For example, you could specify the ARN of
// an SNS topic to find all alarms that send notifications to that topic.
// e.g. `arn:aws:sns:us-east-1:123456789012:my-app-` would match `arn:aws:sns:us-east-1:123456789012:my-app-action`
// but not match `arn:aws:sns:us-east-1:123456789012:your-app-action`
actionPrefix?: string
// An alarm name prefix. If you specify this parameter, you receive information
// about all alarms that have names that start with this prefix.
// e.g. `my-team-service-` would match `my-team-service-high-cpu` but not match `your-team-service-high-cpu`
alarmNamePrefix?: string
} @cuetsy(kind="interface")
// Whether a query is a Metrics, Logs, or Annotations query
queryMode: #CloudWatchQueryMode
// Enable matching on the prefix of the action name or alarm name, specify the prefixes with actionPrefix and/or alarmNamePrefix
prefixMatching?: bool
// Use this parameter to filter the results of the operation to only those alarms
// that use a certain alarm action. For example, you could specify the ARN of
// an SNS topic to find all alarms that send notifications to that topic.
// e.g. `arn:aws:sns:us-east-1:123456789012:my-app-` would match `arn:aws:sns:us-east-1:123456789012:my-app-action`
// but not match `arn:aws:sns:us-east-1:123456789012:your-app-action`
actionPrefix?: string
// An alarm name prefix. If you specify this parameter, you receive information
// about all alarms that have names that start with this prefix.
// e.g. `my-team-service-` would match `my-team-service-high-cpu` but not match `your-team-service-high-cpu`
alarmNamePrefix?: string
} @cuetsy(kind="interface")
// TS type is CloudWatchDefaultQuery = Omit<CloudWatchLogsQuery, 'queryMode'> & CloudWatchMetricsQuery, declared in veneer
// #CloudWatchDefaultQuery: #CloudWatchLogsQuery & #CloudWatchMetricsQuery @cuetsy(kind="type")
},
]
},
]
// TS type is CloudWatchDefaultQuery = Omit<CloudWatchLogsQuery, 'queryMode'> & CloudWatchMetricsQuery, declared in veneer
// #CloudWatchDefaultQuery: #CloudWatchLogsQuery & #CloudWatchMetricsQuery @cuetsy(kind="type")
}
}]
lenses: []
}
}

View File

@ -277,6 +277,10 @@ export interface LogGroup {
/**
* Shape of a CloudWatch Annotation query
*/
/**
* TS type is CloudWatchDefaultQuery = Omit<CloudWatchLogsQuery, 'queryMode'> & CloudWatchMetricsQuery, declared in veneer
* #CloudWatchDefaultQuery: #CloudWatchLogsQuery & #CloudWatchMetricsQuery @cuetsy(kind="type")
*/
export interface CloudWatchAnnotationQuery extends common.DataQuery, MetricStat {
/**
* Use this parameter to filter the results of the operation to only those alarms

View File

@ -26,406 +26,384 @@ composableKinds: DataQuery: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
common.DataQuery
schemas: [{
version: [0, 0]
schema: {
common.DataQuery
// Alias pattern
alias?: string
// Lucene query
query?: string
// Name of time field
timeField?: string
// List of bucket aggregations
bucketAggs?: [...#BucketAggregation]
// List of metric aggregations
metrics?: [...#MetricAggregation]
// Alias pattern
alias?: string
// Lucene query
query?: string
// Name of time field
timeField?: string
// List of bucket aggregations
bucketAggs?: [...#BucketAggregation]
// List of metric aggregations
metrics?: [...#MetricAggregation]
#BucketAggregation: #DateHistogram | #Histogram | #Terms | #Filters | #GeoHashGrid | #Nested @cuetsy(kind="type")
#MetricAggregation: #Count | #PipelineMetricAggregation | #MetricAggregationWithSettings @cuetsy(kind="type")
#BucketAggregation: #DateHistogram | #Histogram | #Terms | #Filters | #GeoHashGrid | #Nested @cuetsy(kind="type")
#MetricAggregation: #Count | #PipelineMetricAggregation | #MetricAggregationWithSettings @cuetsy(kind="type")
#BucketAggregationType: "terms" | "filters" | "geohash_grid" | "date_histogram" | "histogram" | "nested" @cuetsy(kind="type")
#BucketAggregationType: "terms" | "filters" | "geohash_grid" | "date_histogram" | "histogram" | "nested" @cuetsy(kind="type")
#BaseBucketAggregation: {
id: string
type: #BucketAggregationType
settings?: _
} @cuetsy(kind="interface")
#BaseBucketAggregation: {
id: string
type: #BucketAggregationType
settings?: _
} @cuetsy(kind="interface")
#BucketAggregationWithField: {
#BaseBucketAggregation
field?: string
} @cuetsy(kind="interface")
#BucketAggregationWithField: {
#BaseBucketAggregation
field?: string
} @cuetsy(kind="interface")
#DateHistogram: {
#BucketAggregationWithField
type: #BucketAggregationType & "date_histogram"
settings?: #DateHistogramSettings
} @cuetsy(kind="interface")
#DateHistogram: {
#BucketAggregationWithField
type: #BucketAggregationType & "date_histogram"
settings?: #DateHistogramSettings
} @cuetsy(kind="interface")
#DateHistogramSettings: {
interval?: string
min_doc_count?: string
trimEdges?: string
offset?: string
timeZone?: string
} @cuetsy(kind="interface")
#DateHistogramSettings: {
interval?: string
min_doc_count?: string
trimEdges?: string
offset?: string
timeZone?: string
} @cuetsy(kind="interface")
#Histogram: {
#BucketAggregationWithField
type: #BucketAggregationType & "histogram"
settings?: #HistogramSettings
} @cuetsy(kind="interface")
#Histogram: {
#BucketAggregationWithField
type: #BucketAggregationType & "histogram"
settings?: #HistogramSettings
} @cuetsy(kind="interface")
#HistogramSettings: {
interval?: string
min_doc_count?: string
} @cuetsy(kind="interface")
#HistogramSettings: {
interval?: string
min_doc_count?: string
} @cuetsy(kind="interface")
#TermsOrder: "desc" | "asc" @cuetsy(kind="type")
#TermsOrder: "desc" | "asc" @cuetsy(kind="type")
#Nested: {
#BucketAggregationWithField
type: #BucketAggregationType & "nested"
settings?: {}
} @cuetsy(kind="interface")
#Nested: {
#BucketAggregationWithField
type: #BucketAggregationType & "nested"
settings?: {}
} @cuetsy(kind="interface")
#Terms: {
#BucketAggregationWithField
type: #BucketAggregationType & "terms"
settings?: #TermsSettings
} @cuetsy(kind="interface")
#Terms: {
#BucketAggregationWithField
type: #BucketAggregationType & "terms"
settings?: #TermsSettings
} @cuetsy(kind="interface")
#TermsSettings: {
order?: #TermsOrder
size?: string
min_doc_count?: string
orderBy?: string
missing?: string
} @cuetsy(kind="interface")
#TermsSettings: {
order?: #TermsOrder
size?: string
min_doc_count?: string
orderBy?: string
missing?: string
} @cuetsy(kind="interface")
#Filters: {
#BaseBucketAggregation
type: #BucketAggregationType & "filters"
settings?: #FiltersSettings
} @cuetsy(kind="interface")
#Filters: {
#BaseBucketAggregation
type: #BucketAggregationType & "filters"
settings?: #FiltersSettings
} @cuetsy(kind="interface")
#Filter: {
query: string
label: string
} @cuetsy(kind="type")
#Filter: {
query: string
label: string
} @cuetsy(kind="type")
#FiltersSettings: {
filters?: [...#Filter]
} @cuetsy(kind="interface")
#FiltersSettings: {
filters?: [...#Filter]
} @cuetsy(kind="interface")
#GeoHashGrid: {
#BucketAggregationWithField
type: #BucketAggregationType & "geohash_grid"
settings?: #GeoHashGridSettings
} @cuetsy(kind="interface")
#GeoHashGrid: {
#BucketAggregationWithField
type: #BucketAggregationType & "geohash_grid"
settings?: #GeoHashGridSettings
} @cuetsy(kind="interface")
#GeoHashGridSettings: {
precision?: string
} @cuetsy(kind="interface")
#GeoHashGridSettings: {
precision?: string
} @cuetsy(kind="interface")
#PipelineMetricAggregationType: "moving_avg" | "moving_fn" | "derivative" | "serial_diff" | "cumulative_sum" | "bucket_script" @cuetsy(kind="type")
#MetricAggregationType: "count" | "avg" | "sum" | "min" | "max" | "extended_stats" | "percentiles" | "cardinality" | "raw_document" | "raw_data" | "logs" | "rate" | "top_metrics" | #PipelineMetricAggregationType @cuetsy(kind="type")
#PipelineMetricAggregationType: "moving_avg" | "moving_fn" | "derivative" | "serial_diff" | "cumulative_sum" | "bucket_script" @cuetsy(kind="type")
#MetricAggregationType: "count" | "avg" | "sum" | "min" | "max" | "extended_stats" | "percentiles" | "cardinality" | "raw_document" | "raw_data" | "logs" | "rate" | "top_metrics" | #PipelineMetricAggregationType @cuetsy(kind="type")
#BaseMetricAggregation: {
type: #MetricAggregationType
id: string
hide?: bool
} @cuetsy(kind="interface")
#BaseMetricAggregation: {
type: #MetricAggregationType
id: string
hide?: bool
} @cuetsy(kind="interface")
#PipelineVariable: {
name: string
pipelineAgg: string
} @cuetsy(kind="interface")
#PipelineVariable: {
name: string
pipelineAgg: string
} @cuetsy(kind="interface")
#MetricAggregationWithField: {
#BaseMetricAggregation
field?: string
} @cuetsy(kind="interface")
#MetricAggregationWithField: {
#BaseMetricAggregation
field?: string
} @cuetsy(kind="interface")
#MetricAggregationWithMissingSupport: {
#BaseMetricAggregation
settings?: {
missing?: string
}
} @cuetsy(kind="interface")
#MetricAggregationWithMissingSupport: {
#BaseMetricAggregation
settings?: missing?: string
} @cuetsy(kind="interface")
#InlineScript: string | {inline?: string} @cuetsy(kind="type")
#InlineScript: string | {inline?: string} @cuetsy(kind="type")
#MetricAggregationWithInlineScript: {
#BaseMetricAggregation
settings?: {
script?: #InlineScript
}
} @cuetsy(kind="interface")
#MetricAggregationWithInlineScript: {
#BaseMetricAggregation
settings?: script?: #InlineScript
} @cuetsy(kind="interface")
#Count: {
#BaseMetricAggregation
type: #MetricAggregationType & "count"
} @cuetsy(kind="interface")
#Count: {
#BaseMetricAggregation
type: #MetricAggregationType & "count"
} @cuetsy(kind="interface")
#Average: {
#MetricAggregationWithField
#MetricAggregationWithMissingSupport
#MetricAggregationWithInlineScript
type: #MetricAggregationType & "avg"
settings?: {
script?: #InlineScript
missing?: string
}
} @cuetsy(kind="interface")
#Average: {
#MetricAggregationWithField
#MetricAggregationWithMissingSupport
#MetricAggregationWithInlineScript
type: #MetricAggregationType & "avg"
settings?: {
script?: #InlineScript
missing?: string
}
} @cuetsy(kind="interface")
#Sum: {
#MetricAggregationWithField
#MetricAggregationWithInlineScript
type: #MetricAggregationType & "sum"
settings?: {
script?: #InlineScript
missing?: string
}
} @cuetsy(kind="interface")
#Sum: {
#MetricAggregationWithField
#MetricAggregationWithInlineScript
type: #MetricAggregationType & "sum"
settings?: {
script?: #InlineScript
missing?: string
}
} @cuetsy(kind="interface")
#Max: {
#MetricAggregationWithField
#MetricAggregationWithInlineScript
type: #MetricAggregationType & "max"
settings?: {
script?: #InlineScript
missing?: string
}
} @cuetsy(kind="interface")
#Max: {
#MetricAggregationWithField
#MetricAggregationWithInlineScript
type: #MetricAggregationType & "max"
settings?: {
script?: #InlineScript
missing?: string
}
} @cuetsy(kind="interface")
#Min: {
#MetricAggregationWithField
#MetricAggregationWithInlineScript
type: #MetricAggregationType & "min"
settings?: {
script?: #InlineScript
missing?: string
}
} @cuetsy(kind="interface")
#Min: {
#MetricAggregationWithField
#MetricAggregationWithInlineScript
type: #MetricAggregationType & "min"
settings?: {
script?: #InlineScript
missing?: string
}
} @cuetsy(kind="interface")
#ExtendedStatMetaType: "avg" | "min" | "max" | "sum" | "count" | "std_deviation" | "std_deviation_bounds_upper" | "std_deviation_bounds_lower" @cuetsy(kind="type")
#ExtendedStatMetaType: "avg" | "min" | "max" | "sum" | "count" | "std_deviation" | "std_deviation_bounds_upper" | "std_deviation_bounds_lower" @cuetsy(kind="type")
#ExtendedStat: {
label: string
value: #ExtendedStatMetaType
} @cuetsy(kind="interface")
#ExtendedStat: {
label: string
value: #ExtendedStatMetaType
} @cuetsy(kind="interface")
#ExtendedStats: {
#MetricAggregationWithField
#MetricAggregationWithInlineScript
type: #MetricAggregationType & "extended_stats"
settings?: {
script?: #InlineScript
missing?: string
sigma?: string
}
meta?: [#ExtendedStatMetaType]: bool
} @cuetsy(kind="interface")
#ExtendedStats: {
#MetricAggregationWithField
#MetricAggregationWithInlineScript
type: #MetricAggregationType & "extended_stats"
settings?: {
script?: #InlineScript
missing?: string
sigma?: string
}
meta?: [#ExtendedStatMetaType]: bool
} @cuetsy(kind="interface")
#Percentiles: {
#MetricAggregationWithField
#MetricAggregationWithInlineScript
type: #MetricAggregationType & "percentiles"
settings?: {
script?: #InlineScript
missing?: string
percents?: [...string]
}
} @cuetsy(kind="interface")
#Percentiles: {
#MetricAggregationWithField
#MetricAggregationWithInlineScript
type: #MetricAggregationType & "percentiles"
settings?: {
script?: #InlineScript
missing?: string
percents?: [...string]
}
} @cuetsy(kind="interface")
#UniqueCount: {
#MetricAggregationWithField
type: #MetricAggregationType & "cardinality"
settings?: {
precision_threshold?: string
missing?: string
}
} @cuetsy(kind="interface")
#UniqueCount: {
#MetricAggregationWithField
type: #MetricAggregationType & "cardinality"
settings?: {
precision_threshold?: string
missing?: string
}
} @cuetsy(kind="interface")
#RawDocument: {
#BaseMetricAggregation
type: #MetricAggregationType & "raw_document"
settings?: {
size?: string
}
} @cuetsy(kind="interface")
#RawDocument: {
#BaseMetricAggregation
type: #MetricAggregationType & "raw_document"
settings?: size?: string
} @cuetsy(kind="interface")
#RawData: {
#BaseMetricAggregation
type: #MetricAggregationType & "raw_data"
settings?: {
size?: string
}
} @cuetsy(kind="interface")
#RawData: {
#BaseMetricAggregation
type: #MetricAggregationType & "raw_data"
settings?: size?: string
} @cuetsy(kind="interface")
#Logs: {
#BaseMetricAggregation
type: #MetricAggregationType & "logs"
settings?: {
limit?: string
}
} @cuetsy(kind="interface")
#Logs: {
#BaseMetricAggregation
type: #MetricAggregationType & "logs"
settings?: limit?: string
} @cuetsy(kind="interface")
#Rate: {
#MetricAggregationWithField
type: #MetricAggregationType & "rate"
settings?: {
unit?: string
mode?: string
}
} @cuetsy(kind="interface")
#Rate: {
#MetricAggregationWithField
type: #MetricAggregationType & "rate"
settings?: {
unit?: string
mode?: string
}
} @cuetsy(kind="interface")
#BasePipelineMetricAggregation: {
#MetricAggregationWithField
pipelineAgg?: string
type: #PipelineMetricAggregationType
} @cuetsy(kind="interface")
#BasePipelineMetricAggregation: {
#MetricAggregationWithField
pipelineAgg?: string
type: #PipelineMetricAggregationType
} @cuetsy(kind="interface")
#PipelineMetricAggregationWithMultipleBucketPaths: {
#BaseMetricAggregation
pipelineVariables?: [...#PipelineVariable]
} @cuetsy(kind="interface")
#PipelineMetricAggregationWithMultipleBucketPaths: {
#BaseMetricAggregation
pipelineVariables?: [...#PipelineVariable]
} @cuetsy(kind="interface")
#MovingAverageModel: "simple" | "linear" | "ewma" | "holt" | "holt_winters" @cuetsy(kind="type")
#MovingAverageModel: "simple" | "linear" | "ewma" | "holt" | "holt_winters" @cuetsy(kind="type")
#MovingAverageModelOption: {
label: string
value: #MovingAverageModel
} @cuetsy(kind="interface")
#MovingAverageModelOption: {
label: string
value: #MovingAverageModel
} @cuetsy(kind="interface")
#BaseMovingAverageModelSettings: {
model: #MovingAverageModel
window: string
predict: string
} @cuetsy(kind="interface")
#BaseMovingAverageModelSettings: {
model: #MovingAverageModel
window: string
predict: string
} @cuetsy(kind="interface")
#MovingAverageSimpleModelSettings: {
#BaseMovingAverageModelSettings
model: #MovingAverageModel & "simple"
} @cuetsy(kind="interface")
#MovingAverageSimpleModelSettings: {
#BaseMovingAverageModelSettings
model: #MovingAverageModel & "simple"
} @cuetsy(kind="interface")
#MovingAverageLinearModelSettings: {
#BaseMovingAverageModelSettings
model: #MovingAverageModel & "linear"
} @cuetsy(kind="interface")
#MovingAverageLinearModelSettings: {
#BaseMovingAverageModelSettings
model: #MovingAverageModel & "linear"
} @cuetsy(kind="interface")
#MovingAverageEWMAModelSettings: {
#BaseMovingAverageModelSettings
model: #MovingAverageModel & "ewma"
settings?: {
alpha?: string
}
minimize: bool
} @cuetsy(kind="interface")
#MovingAverageEWMAModelSettings: {
#BaseMovingAverageModelSettings
model: #MovingAverageModel & "ewma"
settings?: alpha?: string
minimize: bool
} @cuetsy(kind="interface")
#MovingAverageHoltModelSettings: {
#BaseMovingAverageModelSettings
model: #MovingAverageModel & "holt"
settings: {
alpha?: string
beta?: string
}
minimize: bool
} @cuetsy(kind="interface")
#MovingAverageHoltModelSettings: {
#BaseMovingAverageModelSettings
model: #MovingAverageModel & "holt"
settings: {
alpha?: string
beta?: string
}
minimize: bool
} @cuetsy(kind="interface")
#MovingAverageHoltWintersModelSettings: {
#BaseMovingAverageModelSettings
model: #MovingAverageModel & "holt_winters"
settings: {
alpha?: string
beta?: string
gamma?: string
period?: string
pad?: bool
}
minimize: bool
} @cuetsy(kind="interface")
#MovingAverageHoltWintersModelSettings: {
#BaseMovingAverageModelSettings
model: #MovingAverageModel & "holt_winters"
settings: {
alpha?: string
beta?: string
gamma?: string
period?: string
pad?: bool
}
minimize: bool
} @cuetsy(kind="interface")
// #MovingAverageModelSettings Not sure how to do this one:
// export type MovingAverageModelSettings<T extends MovingAverageModel = MovingAverageModel> = Partial<
// Extract<
// | MovingAverageSimpleModelSettings
// | MovingAverageLinearModelSettings
// | MovingAverageEWMAModelSettings
// | MovingAverageHoltModelSettings
// | MovingAverageHoltWintersModelSettings,
// { model: T }
// >
// >;
// #MovingAverageModelSettings Not sure how to do this one:
// export type MovingAverageModelSettings<T extends MovingAverageModel = MovingAverageModel> = Partial<
// Extract<
// | MovingAverageSimpleModelSettings
// | MovingAverageLinearModelSettings
// | MovingAverageEWMAModelSettings
// | MovingAverageHoltModelSettings
// | MovingAverageHoltWintersModelSettings,
// { model: T }
// >
// >;
// #MovingAverage's settings are overridden in types.ts
#MovingAverage: {
#BasePipelineMetricAggregation
type: #PipelineMetricAggregationType & "moving_avg"
settings?: {...}
} @cuetsy(kind="interface")
// #MovingAverage's settings are overridden in types.ts
#MovingAverage: {
#BasePipelineMetricAggregation
type: #PipelineMetricAggregationType & "moving_avg"
settings?: {...}
} @cuetsy(kind="interface")
#MovingFunction: {
#BasePipelineMetricAggregation
type: #PipelineMetricAggregationType & "moving_fn"
settings?: {
window?: string
script?: #InlineScript
shift?: string
}
} @cuetsy(kind="interface")
#MovingFunction: {
#BasePipelineMetricAggregation
type: #PipelineMetricAggregationType & "moving_fn"
settings?: {
window?: string
script?: #InlineScript
shift?: string
}
} @cuetsy(kind="interface")
#Derivative: {
#BasePipelineMetricAggregation
type: #PipelineMetricAggregationType & "derivative"
settings?: {
unit?: string
}
} @cuetsy(kind="interface")
#Derivative: {
#BasePipelineMetricAggregation
type: #PipelineMetricAggregationType & "derivative"
settings?: unit?: string
} @cuetsy(kind="interface")
#SerialDiff: {
#BasePipelineMetricAggregation
type: #PipelineMetricAggregationType & "serial_diff"
settings?: {
lag?: string
}
} @cuetsy(kind="interface")
#SerialDiff: {
#BasePipelineMetricAggregation
type: #PipelineMetricAggregationType & "serial_diff"
settings?: lag?: string
} @cuetsy(kind="interface")
#CumulativeSum: {
#BasePipelineMetricAggregation
type: #PipelineMetricAggregationType & "cumulative_sum"
settings?: {
format?: string
}
} @cuetsy(kind="interface")
#CumulativeSum: {
#BasePipelineMetricAggregation
type: #PipelineMetricAggregationType & "cumulative_sum"
settings?: format?: string
} @cuetsy(kind="interface")
#BucketScript: {
#PipelineMetricAggregationWithMultipleBucketPaths
type: #PipelineMetricAggregationType & "bucket_script"
settings?: {
script?: #InlineScript
}
} @cuetsy(kind="interface")
#BucketScript: {
#PipelineMetricAggregationWithMultipleBucketPaths
type: #PipelineMetricAggregationType & "bucket_script"
settings?: script?: #InlineScript
} @cuetsy(kind="interface")
#TopMetrics: {
#BaseMetricAggregation
type: #MetricAggregationType & "top_metrics"
settings?: {
order?: string
orderBy?: string
metrics?: [...string]
}
} @cuetsy(kind="interface")
#TopMetrics: {
#BaseMetricAggregation
type: #MetricAggregationType & "top_metrics"
settings?: {
order?: string
orderBy?: string
metrics?: [...string]
}
} @cuetsy(kind="interface")
#PipelineMetricAggregation: #MovingAverage | #Derivative | #CumulativeSum | #BucketScript @cuetsy(kind="type")
#MetricAggregationWithSettings: #BucketScript | #CumulativeSum | #Derivative | #SerialDiff | #RawData | #RawDocument | #UniqueCount | #Percentiles | #ExtendedStats | #Min | #Max | #Sum | #Average | #MovingAverage | #MovingFunction | #Logs | #Rate | #TopMetrics @cuetsy(kind="type")
},
]
},
]
#PipelineMetricAggregation: #MovingAverage | #Derivative | #CumulativeSum | #BucketScript @cuetsy(kind="type")
#MetricAggregationWithSettings: #BucketScript | #CumulativeSum | #Derivative | #SerialDiff | #RawData | #RawDocument | #UniqueCount | #Percentiles | #ExtendedStats | #Min | #Max | #Sum | #Average | #MovingAverage | #MovingFunction | #Logs | #Rate | #TopMetrics @cuetsy(kind="type")
}
}]
lenses: []
}
}

View File

@ -26,36 +26,34 @@ composableKinds: DataQuery: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
common.DataQuery
schemas: [{
version: [0, 0]
schema: {
common.DataQuery
// The LogQL query.
expr: string
// Used to override the name of the series.
legendFormat?: string
// Used to limit the number of log rows returned.
maxLines?: int64
// Used to scale the interval value.
resolution?: int64
editorMode?: #QueryEditorMode
// @deprecated, now use queryType.
range?: bool
// @deprecated, now use queryType.
instant?: bool
// The LogQL query.
expr: string
// Used to override the name of the series.
legendFormat?: string
// Used to limit the number of log rows returned.
maxLines?: int64
// Used to scale the interval value.
resolution?: int64
editorMode?: #QueryEditorMode
// @deprecated, now use queryType.
range?: bool
// @deprecated, now use queryType.
instant?: bool
#QueryEditorMode: "code" | "builder" @cuetsy(kind="enum")
#QueryEditorMode: "code" | "builder" @cuetsy(kind="enum")
#LokiQueryType: "range" | "instant" | "stream" @cuetsy(kind="enum")
#LokiQueryType: "range" | "instant" | "stream" @cuetsy(kind="enum")
#SupportingQueryType: "logsVolume" | "logsSample" | "dataSample" @cuetsy(kind="enum")
#SupportingQueryType: "logsVolume" | "logsSample" | "dataSample" @cuetsy(kind="enum")
#LokiQueryDirection: "forward" | "backward" @cuetsy(kind="enum")
},
]
},
]
#LokiQueryDirection: "forward" | "backward" @cuetsy(kind="enum")
}
}]
lenses: []
}
}

View File

@ -26,21 +26,20 @@ composableKinds: DataQuery: {
maturity: "experimental"
lineage: {
seqs: [
schemas: [{
version: [0, 0]
schema:
// v0.0
{
schemas: [
// v0.0
{
common.DataQuery
common.DataQuery
// Specifies the query label selectors.
labelSelector: string | *"{}"
// Specifies the type of profile to query.
profileTypeId: string
#ParcaQueryType: "metrics" | "profile" | *"both" @cuetsy(kind="type")
},
]
},
]
// Specifies the query label selectors.
labelSelector: string | *"{}"
// Specifies the type of profile to query.
profileTypeId: string
#ParcaQueryType: "metrics" | "profile" | *"both" @cuetsy(kind="type")
}
}]
lenses: []
}
}

View File

@ -26,25 +26,24 @@ composableKinds: DataQuery: {
maturity: "experimental"
lineage: {
seqs: [
schemas: [{
version: [0, 0]
schema:
// v0.0
{
schemas: [
// v0.0
{
common.DataQuery
common.DataQuery
// Specifies the query label selectors.
labelSelector: string | *"{}"
// Specifies the type of profile to query.
profileTypeId: string
// Allows to group the results.
groupBy: [...string]
// Sets the maximum number of nodes in the flamegraph.
maxNodes?: int64
#PhlareQueryType: "metrics" | "profile" | *"both" @cuetsy(kind="type")
},
]
},
]
// Specifies the query label selectors.
labelSelector: string | *"{}"
// Specifies the type of profile to query.
profileTypeId: string
// Allows to group the results.
groupBy: [...string]
// Sets the maximum number of nodes in the flamegraph.
maxNodes?: int64
#PhlareQueryType: "metrics" | "profile" | *"both" @cuetsy(kind="type")
}
}]
lenses: []
}
}

View File

@ -26,35 +26,33 @@ composableKinds: DataQuery: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
common.DataQuery
schemas: [{
version: [0, 0]
schema: {
common.DataQuery
// The actual expression/query that will be evaluated by Prometheus
expr: string
// Returns only the latest value that Prometheus has scraped for the requested time series
instant?: bool
// Returns a Range vector, comprised of a set of time series containing a range of data points over time for each time series
range?: bool
// Execute an additional query to identify interesting raw samples relevant for the given expr
exemplar?: bool
// Specifies which editor is being used to prepare the query. It can be "code" or "builder"
editorMode?: #QueryEditorMode
// Query format to determine how to display data points in panel. It can be "time_series", "table", "heatmap"
format?: #PromQueryFormat
// Series name override or template. Ex. {{hostname}} will be replaced with label value for hostname
legendFormat?: string
// @deprecated Used to specify how many times to divide max data points by. We use max data points under query options
// See https://github.com/grafana/grafana/issues/48081
intervalFactor?: number
// The actual expression/query that will be evaluated by Prometheus
expr: string
// Returns only the latest value that Prometheus has scraped for the requested time series
instant?: bool
// Returns a Range vector, comprised of a set of time series containing a range of data points over time for each time series
range?: bool
// Execute an additional query to identify interesting raw samples relevant for the given expr
exemplar?: bool
// Specifies which editor is being used to prepare the query. It can be "code" or "builder"
editorMode?: #QueryEditorMode
// Query format to determine how to display data points in panel. It can be "time_series", "table", "heatmap"
format?: #PromQueryFormat
// Series name override or template. Ex. {{hostname}} will be replaced with label value for hostname
legendFormat?: string
// @deprecated Used to specify how many times to divide max data points by. We use max data points under query options
// See https://github.com/grafana/grafana/issues/48081
intervalFactor?: number
#QueryEditorMode: "code" | "builder" @cuetsy(kind="enum")
#PromQueryFormat: "time_series" | "table" | "heatmap" @cuetsy(kind="type")
},
]
},
]
#QueryEditorMode: "code" | "builder" @cuetsy(kind="enum")
#PromQueryFormat: "time_series" | "table" | "heatmap" @cuetsy(kind="type")
}
}]
lenses: []
}
}

View File

@ -26,52 +26,50 @@ composableKinds: DataQuery: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
#TempoQuery: common.DataQuery & {
// TraceQL query or trace ID
query: string
// Logfmt query to filter traces by their tags. Example: http.status_code=200 error=true
search?: string
// Query traces by service name
serviceName?: string
// Query traces by span name
spanName?: string
// Define the minimum duration to select traces. Use duration format, for example: 1.2s, 100ms
minDuration?: string
// Define the maximum duration to select traces. Use duration format, for example: 1.2s, 100ms
maxDuration?: string
// Filters to be included in a PromQL query to select data for the service graph. Example: {client="app",service="app"}
serviceMapQuery?: string
// Defines the maximum number of traces that are returned from Tempo
limit?: int64
filters: [...#TraceqlFilter]
} @cuetsy(kind="interface") @grafana(TSVeneer="type")
schemas: [{
version: [0, 0]
schema: {
#TempoQuery: common.DataQuery & {
// TraceQL query or trace ID
query: string
// Logfmt query to filter traces by their tags. Example: http.status_code=200 error=true
search?: string
// Query traces by service name
serviceName?: string
// Query traces by span name
spanName?: string
// Define the minimum duration to select traces. Use duration format, for example: 1.2s, 100ms
minDuration?: string
// Define the maximum duration to select traces. Use duration format, for example: 1.2s, 100ms
maxDuration?: string
// Filters to be included in a PromQL query to select data for the service graph. Example: {client="app",service="app"}
serviceMapQuery?: string
// Defines the maximum number of traces that are returned from Tempo
limit?: int64
filters: [...#TraceqlFilter]
} @cuetsy(kind="interface") @grafana(TSVeneer="type")
// search = Loki search, nativeSearch = Tempo search for backwards compatibility
#TempoQueryType: "traceql" | "traceqlSearch" | "search" | "serviceMap" | "upload" | "nativeSearch" | "clear" @cuetsy(kind="type")
// search = Loki search, nativeSearch = Tempo search for backwards compatibility
#TempoQueryType: "traceql" | "traceqlSearch" | "search" | "serviceMap" | "upload" | "nativeSearch" | "clear" @cuetsy(kind="type")
// static fields are pre-set in the UI, dynamic fields are added by the user
#TraceqlSearchScope: "unscoped" | "resource" | "span" @cuetsy(kind="enum")
#TraceqlFilter: {
// Uniquely identify the filter, will not be used in the query generation
id: string
// The tag for the search filter, for example: .http.status_code, .service.name, status
tag?: string
// The operator that connects the tag to the value, for example: =, >, !=, =~
operator?: string
// The value for the search filter
value?: string | [...string]
// The type of the value, used for example to check whether we need to wrap the value in quotes when generating the query
valueType?: string
// The scope of the filter, can either be unscoped/all scopes, resource or span
scope?: #TraceqlSearchScope
} @cuetsy(kind="interface")
},
]
},
]
// static fields are pre-set in the UI, dynamic fields are added by the user
#TraceqlSearchScope: "unscoped" | "resource" | "span" @cuetsy(kind="enum")
#TraceqlFilter: {
// Uniquely identify the filter, will not be used in the query generation
id: string
// The tag for the search filter, for example: .http.status_code, .service.name, status
tag?: string
// The operator that connects the tag to the value, for example: =, >, !=, =~
operator?: string
// The value for the search filter
value?: string | [...string]
// The type of the value, used for example to check whether we need to wrap the value in quotes when generating the query
valueType?: string
// The scope of the filter, can either be unscoped/all scopes, resource or span
scope?: #TraceqlSearchScope
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -26,92 +26,90 @@ composableKinds: DataQuery: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
common.DataQuery
alias?: string
scenarioId?: #TestDataQueryType & (*"random_walk" | _)
stringInput?: string
stream?: #StreamingQuery
pulseWave?: #PulseWaveQuery
sim?: #SimulationQuery
csvWave?: [...#CSVWave] //TODO can we prevent partial from being generated
labels?: string
lines?: int64
levelColumn?: bool
channel?: string
nodes?: #NodesQuery
csvFileName?: string
csvContent?: string
rawFrameContent?: string
seriesCount?: int32
usa?: #USAQuery
errorType?: "server_panic" | "frontend_exception" | "frontend_observable"
spanCount?: int32
points?: [...[...string | int64]]
schemas: [{
version: [0, 0]
schema: {
common.DataQuery
alias?: string
scenarioId?: #TestDataQueryType & (*"random_walk" | _)
stringInput?: string
stream?: #StreamingQuery
pulseWave?: #PulseWaveQuery
sim?: #SimulationQuery
csvWave?: [...#CSVWave] //TODO can we prevent partial from being generated
labels?: string
lines?: int64
levelColumn?: bool
channel?: string
nodes?: #NodesQuery
csvFileName?: string
csvContent?: string
rawFrameContent?: string
seriesCount?: int32
usa?: #USAQuery
errorType?: "server_panic" | "frontend_exception" | "frontend_observable"
spanCount?: int32
points?: [...[...string | int64]]
#TestDataQueryType: "random_walk" | "slow_query" | "random_walk_with_error" | "random_walk_table" | "exponential_heatmap_bucket_data" | "linear_heatmap_bucket_data" | "no_data_points" | "datapoints_outside_range" | "csv_metric_values" | "predictable_pulse" | "predictable_csv_wave" | "streaming_client" | "simulation" | "usa" | "live" | "grafana_api" | "arrow" | "annotations" | "table_static" | "server_error_500" | "logs" | "node_graph" | "flame_graph" | "raw_frame" | "csv_file" | "csv_content" | "trace" | "manual_entry" | "variables-query" @cuetsy(kind="enum", memberNames="RandomWalk|SlowQuery|RandomWalkWithError|RandomWalkTable|ExponentialHeatmapBucketData|LinearHeatmapBucketData|NoDataPoints|DataPointsOutsideRange|CSVMetricValues|PredictablePulse|PredictableCSVWave|StreamingClient|Simulation|USA|Live|GrafanaAPI|Arrow|Annotations|TableStatic|ServerError500|Logs|NodeGraph|FlameGraph|RawFrame|CSVFile|CSVContent|Trace|ManualEntry|VariablesQuery")
#TestDataQueryType: "random_walk" | "slow_query" | "random_walk_with_error" | "random_walk_table" | "exponential_heatmap_bucket_data" | "linear_heatmap_bucket_data" | "no_data_points" | "datapoints_outside_range" | "csv_metric_values" | "predictable_pulse" | "predictable_csv_wave" | "streaming_client" | "simulation" | "usa" | "live" | "grafana_api" | "arrow" | "annotations" | "table_static" | "server_error_500" | "logs" | "node_graph" | "flame_graph" | "raw_frame" | "csv_file" | "csv_content" | "trace" | "manual_entry" | "variables-query" @cuetsy(kind="enum", memberNames="RandomWalk|SlowQuery|RandomWalkWithError|RandomWalkTable|ExponentialHeatmapBucketData|LinearHeatmapBucketData|NoDataPoints|DataPointsOutsideRange|CSVMetricValues|PredictablePulse|PredictableCSVWave|StreamingClient|Simulation|USA|Live|GrafanaAPI|Arrow|Annotations|TableStatic|ServerError500|Logs|NodeGraph|FlameGraph|RawFrame|CSVFile|CSVContent|Trace|ManualEntry|VariablesQuery")
#StreamingQuery: {
type: "signal" | "logs" | "fetch"
speed: int32
spread: int32
noise: int32
bands?: int32
url?: string
} @cuetsy(kind="interface")
#StreamingQuery: {
type: "signal" | "logs" | "fetch"
speed: int32
spread: int32
noise: int32
bands?: int32
url?: string
} @cuetsy(kind="interface")
#PulseWaveQuery: {
timeStep?: int64
onCount?: int64
offCount?: int64
onValue?: float64
offValue?: float64
} @cuetsy(kind="interface")
#PulseWaveQuery: {
timeStep?: int64
onCount?: int64
offCount?: int64
onValue?: float64
offValue?: float64
} @cuetsy(kind="interface")
#SimulationQuery: {
key: {
type: string
tick: float64
uid?: string
}
config?: {...}
stream?: bool
last?: bool
} @cuetsy(kind="interface")
#SimulationQuery: {
key: {
type: string
tick: float64
uid?: string
}
config?: {...}
stream?: bool
last?: bool
} @cuetsy(kind="interface")
#NodesQuery: {
type?: "random" | "response" | "random edges"
count?: int64
} @cuetsy(kind="interface")
#NodesQuery: {
type?: "random" | "response" | "random edges"
count?: int64
} @cuetsy(kind="interface")
#USAQuery: {
mode?: string
period?: string
fields?: [...string]
states?: [...string]
} @cuetsy(kind="interface")
#USAQuery: {
mode?: string
period?: string
fields?: [...string]
states?: [...string]
} @cuetsy(kind="interface")
#CSVWave: {
timeStep?: int64
name?: string
valuesCSV?: string
labels?: string
} @cuetsy(kind="interface")
#CSVWave: {
timeStep?: int64
name?: string
valuesCSV?: string
labels?: string
} @cuetsy(kind="interface")
// TODO: Should this live here given it's not used in the dataquery?
#Scenario: {
id: string
name: string
stringInput: string
description?: string
hideAliasField?: bool
} @cuetsy(kind="interface")
},
]
},
]
// TODO: Should this live here given it's not used in the dataquery?
#Scenario: {
id: string
name: string
stringInput: string
description?: string
hideAliasField?: bool
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -14,23 +14,19 @@
package grafanaplugin
composableKinds: PanelCfg: {
lineage: {
seqs: [
{
schemas: [
{
Options: {
// Comma-separated list of values used to filter alert results
labels: string
// Name of the alertmanager used as a source for alerts
alertmanager: string
// Expand all alert groups by default
expandAll: bool
} @cuetsy(kind="interface")
},
]
},
]
}
composableKinds: PanelCfg: lineage: {
schemas: [{
version: [0, 0]
schema: {
Options: {
// Comma-separated list of values used to filter alert results
labels: string
// Name of the alertmanager used as a source for alerts
alertmanager: string
// Expand all alert groups by default
expandAll: bool
} @cuetsy(kind="interface")
}
}]
lenses: []
}

View File

@ -18,25 +18,23 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
Options: {
onlyFromThisDashboard: bool | *false
onlyInTimeRange: bool | *false
tags: [...string]
limit: uint32 | *10
showUser: bool | *true
showTime: bool | *true
showTags: bool | *true
navigateToPanel: bool | *true
navigateBefore: string | *"10m"
navigateAfter: string | *"10m"
} @cuetsy(kind="interface")
},
]
},
]
schemas: [{
version: [0, 0]
schema: {
Options: {
onlyFromThisDashboard: bool | *false
onlyInTimeRange: bool | *false
tags: [...string]
limit: uint32 | *10
showUser: bool | *true
showTime: bool | *true
showTags: bool | *true
navigateToPanel: bool | *true
navigateBefore: string | *"10m"
navigateAfter: string | *"10m"
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -22,60 +22,58 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
// v0.0
{
Options: {
common.OptionsWithLegend
common.OptionsWithTooltip
common.OptionsWithTextFormatting
// Manually select which field from the dataset to represent the x field.
xField?: string
// Use the color value for a sibling field to color each bar value.
colorByField?: string
// Controls the orientation of the bar chart, either vertical or horizontal.
orientation: common.VizOrientation & (*"auto" | _)
// Controls the radius of each bar.
barRadius?: float64 & >=0 & <=0.5 | *0
// Controls the rotation of the x axis labels.
xTickLabelRotation: int32 & >=-90 & <=90 | *0
// Sets the max length that a label can have before it is truncated.
xTickLabelMaxLength: int32 & >=0
// Controls the spacing between x axis labels.
// negative values indicate backwards skipping behavior
xTickLabelSpacing?: int32 | *0
// Controls whether bars are stacked or not, either normally or in percent mode.
stacking: common.StackingMode & (*"none" | _)
// This controls whether values are shown on top or to the left of bars.
showValue: common.VisibilityMode & (*"auto" | _)
// Controls the width of bars. 1 = Max width, 0 = Min width.
barWidth: float64 & >=0 & <=1 | *0.97
// Controls the width of groups. 1 = max with, 0 = min width.
groupWidth: float64 & >=0 & <=1 | *0.7
// Enables mode which highlights the entire bar area and shows tooltip when cursor
// hovers over highlighted area
fullHighlight: bool | *false
} @cuetsy(kind="interface")
FieldConfig: {
common.AxisConfig
common.HideableFieldConfig
schemas: [{
version: [0, 0]
schema: {
Options: {
common.OptionsWithLegend
common.OptionsWithTooltip
common.OptionsWithTextFormatting
// Controls line width of the bars.
lineWidth?: int32 & >=0 & <=10 | *1
// Controls the fill opacity of the bars.
fillOpacity?: int32 & >=0 & <=100 | *80
// Set the mode of the gradient fill. Fill gradient is based on the line color. To change the color, use the standard color scheme field option.
// Gradient appearance is influenced by the Fill opacity setting.
gradientMode?: common.GraphGradientMode & (*"none" | _)
// Threshold rendering
thresholdsStyle?: common.GraphThresholdsStyleConfig
} @cuetsy(kind="interface")
},
]
},
]
// Manually select which field from the dataset to represent the x field.
xField?: string
// Use the color value for a sibling field to color each bar value.
colorByField?: string
// Controls the orientation of the bar chart, either vertical or horizontal.
orientation: common.VizOrientation & (*"auto" | _)
// Controls the radius of each bar.
barRadius?: float64 & >=0 & <=0.5 | *0
// Controls the rotation of the x axis labels.
xTickLabelRotation: int32 & >=-90 & <=90 | *0
// Sets the max length that a label can have before it is truncated.
xTickLabelMaxLength: int32 & >=0
// Controls the spacing between x axis labels.
// negative values indicate backwards skipping behavior
xTickLabelSpacing?: int32 | *0
// Controls whether bars are stacked or not, either normally or in percent mode.
stacking: common.StackingMode & (*"none" | _)
// This controls whether values are shown on top or to the left of bars.
showValue: common.VisibilityMode & (*"auto" | _)
// Controls the width of bars. 1 = Max width, 0 = Min width.
barWidth: float64 & >=0 & <=1 | *0.97
// Controls the width of groups. 1 = max with, 0 = min width.
groupWidth: float64 & >=0 & <=1 | *0.7
// Enables mode which highlights the entire bar area and shows tooltip when cursor
// hovers over highlighted area
fullHighlight: bool | *false
} @cuetsy(kind="interface")
FieldConfig: {
common.AxisConfig
common.HideableFieldConfig
// Controls line width of the bars.
lineWidth?: int32 & >=0 & <=10 | *1
// Controls the fill opacity of the bars.
fillOpacity?: int32 & >=0 & <=100 | *80
// Set the mode of the gradient fill. Fill gradient is based on the line color. To change the color, use the standard color scheme field option.
// Gradient appearance is influenced by the Fill opacity setting.
gradientMode?: common.GraphGradientMode & (*"none" | _)
// Threshold rendering
thresholdsStyle?: common.GraphThresholdsStyleConfig
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -22,21 +22,19 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
Options: {
common.SingleStatBaseOptions
displayMode: common.BarGaugeDisplayMode & (*"gradient" | _)
valueMode: common.BarGaugeValueMode & (*"color" | _)
showUnfilled: bool | *true
minVizWidth: uint32 | *0
minVizHeight: uint32 | *10
} @cuetsy(kind="interface")
},
]
},
]
schemas: [{
version: [0, 0]
schema: {
Options: {
common.SingleStatBaseOptions
displayMode: common.BarGaugeDisplayMode & (*"gradient" | _)
valueMode: common.BarGaugeValueMode & (*"color" | _)
showUnfilled: bool | *true
minVizWidth: uint32 | *0
minVizHeight: uint32 | *10
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -14,23 +14,17 @@
package grafanaplugin
composableKinds: PanelCfg: {
lineage: {
seqs: [
{
schemas: [
{
Options: {
// anything for now
...
} @cuetsy(kind="interface")
FieldConfig: {
// anything for now
...
} @cuetsy(kind="interface")
},
]
},
]
}
composableKinds: PanelCfg: lineage: {
schemas: [{
version: [0, 0]
schema: {
Options: {
...
} @cuetsy(kind="interface")
FieldConfig: {
...
} @cuetsy(kind="interface")
}
}]
lenses: []
}

View File

@ -14,19 +14,14 @@
package grafanaplugin
composableKinds: PanelCfg: {
lineage: {
seqs: [
{
schemas: [
{
Options: {
// anything for now
...
} @cuetsy(kind="interface")
},
]
},
]
}
composableKinds: PanelCfg: lineage: {
schemas: [{
version: [0, 0]
schema: {
Options: {
...
} @cuetsy(kind="interface")
}
}]
lenses: []
}

View File

@ -18,25 +18,23 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
Options: {
keepTime: bool | *false
includeVars: bool | *false
showStarred: bool | *true
showRecentlyViewed: bool | *false
showSearch: bool | *false
showHeadings: bool | *true
maxItems: int | *10
query: string | *""
folderId?: int
tags: [...string] | *[]
} @cuetsy(kind="interface")
},
]
},
]
schemas: [{
version: [0, 0]
schema: {
Options: {
keepTime: bool | *false
includeVars: bool | *false
showStarred: bool | *true
showRecentlyViewed: bool | *false
showSearch: bool | *false
showHeadings: bool | *true
maxItems: int | *10
query: string | *""
folderId?: int
tags: [...string] | *[]
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -18,16 +18,14 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
Options: {
selectedSeries: int32 & >=0 | *0
} @cuetsy(kind="interface")
},
]
},
]
schemas: [{
version: [0, 0]
schema: {
Options: {
selectedSeries: int32 & >=0 | *0
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -26,25 +26,23 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
UpdateConfig: {
render: bool
dataChanged: bool
schemaChanged: bool
} @cuetsy(kind="type")
schemas: [{
version: [0, 0]
schema: {
UpdateConfig: {
render: bool
dataChanged: bool
schemaChanged: bool
} @cuetsy(kind="type")
DebugMode: "render" | "events" | "cursor" | "State" | "ThrowError" @cuetsy(kind="enum")
DebugMode: "render" | "events" | "cursor" | "State" | "ThrowError" @cuetsy(kind="enum")
Options: {
mode: DebugMode
counters?: UpdateConfig
} @cuetsy(kind="interface")
},
]
},
]
Options: {
mode: DebugMode
counters?: UpdateConfig
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -22,18 +22,16 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
Options: {
common.SingleStatBaseOptions
showThresholdLabels: bool | *false
showThresholdMarkers: bool | *true
} @cuetsy(kind="interface")
},
]
},
]
schemas: [{
version: [0, 0]
schema: {
Options: {
common.SingleStatBaseOptions
showThresholdLabels: bool | *false
showThresholdMarkers: bool | *true
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -22,57 +22,55 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
Options: {
view: MapViewConfig
controls: ControlsOptions
basemap: ui.MapLayerOptions
layers: [...ui.MapLayerOptions]
tooltip: TooltipOptions
} @cuetsy(kind="interface")
schemas: [{
version: [0, 0]
schema: {
Options: {
view: MapViewConfig
controls: ControlsOptions
basemap: ui.MapLayerOptions
layers: [...ui.MapLayerOptions]
tooltip: TooltipOptions
} @cuetsy(kind="interface")
MapViewConfig: {
id: string | *"zero"
lat?: int64 | *0
lon?: int64 | *0
zoom?: int64 | *1
minZoom?: int64
maxZoom?: int64
padding?: int64
allLayers?: bool | *true
lastOnly?: bool
layer?: string
shared?: bool
} @cuetsy(kind="interface")
MapViewConfig: {
id: string | *"zero"
lat?: int64 | *0
lon?: int64 | *0
zoom?: int64 | *1
minZoom?: int64
maxZoom?: int64
padding?: int64
allLayers?: bool | *true
lastOnly?: bool
layer?: string
shared?: bool
} @cuetsy(kind="interface")
ControlsOptions: {
// Zoom (upper left)
showZoom?: bool
// let the mouse wheel zoom
mouseWheelZoom?: bool
// Lower right
showAttribution?: bool
// Scale options
showScale?: bool
// Show debug
showDebug?: bool
// Show measure
showMeasure?: bool
} @cuetsy(kind="interface")
ControlsOptions: {
// Zoom (upper left)
showZoom?: bool
// let the mouse wheel zoom
mouseWheelZoom?: bool
// Lower right
showAttribution?: bool
// Scale options
showScale?: bool
// Show debug
showDebug?: bool
// Show measure
showMeasure?: bool
} @cuetsy(kind="interface")
TooltipOptions: {
mode: TooltipMode
} @cuetsy(kind="interface")
TooltipOptions: {
mode: TooltipMode
} @cuetsy(kind="interface")
TooltipMode: "none" | "details" @cuetsy(kind="enum",memberNames="None|Details")
TooltipMode: "none" | "details" @cuetsy(kind="enum",memberNames="None|Details")
MapCenterID: "zero" | "coords" | "fit" @cuetsy(kind="enum",members="Zero|Coordinates|Fit")
},
]
},
]
MapCenterID: "zero" | "coords" | "fit" @cuetsy(kind="enum",members="Zero|Coordinates|Fit")
}
}]
lenses: []
}
}

View File

@ -18,149 +18,145 @@ import (
ui "github.com/grafana/grafana/packages/grafana-schema/src/common"
)
composableKinds: PanelCfg: {
lineage: {
seqs: [
{
schemas: [
{
// Controls the color mode of the heatmap
HeatmapColorMode: "opacity" | "scheme" @cuetsy(kind="enum")
// Controls the color scale of the heatmap
HeatmapColorScale: "linear" | "exponential" @cuetsy(kind="enum")
// Controls various color options
HeatmapColorOptions: {
// Sets the color mode
mode?: HeatmapColorMode
// Controls the color scheme used
scheme: string
// Controls the color fill when in opacity mode
fill: string
// Controls the color scale
scale?: HeatmapColorScale
// Controls the exponent when scale is set to exponential
exponent: float32
// Controls the number of color steps
steps: uint8 & >=2 & <=128
// Reverses the color scheme
reverse: bool
// Sets the minimum value for the color scale
min?: float32
// Sets the maximum value for the color scale
max?: float32
} @cuetsy(kind="interface")
// Configuration options for the yAxis
YAxisConfig: {
ui.AxisConfig
composableKinds: PanelCfg: lineage: {
schemas: [{
version: [0, 0]
schema: {
// Controls the color mode of the heatmap
HeatmapColorMode: "opacity" | "scheme" @cuetsy(kind="enum")
// Controls the color scale of the heatmap
HeatmapColorScale: "linear" | "exponential" @cuetsy(kind="enum")
// Controls various color options
HeatmapColorOptions: {
// Sets the color mode
mode?: HeatmapColorMode
// Controls the color scheme used
scheme: string
// Controls the color fill when in opacity mode
fill: string
// Controls the color scale
scale?: HeatmapColorScale
// Controls the exponent when scale is set to exponential
exponent: float32
// Controls the number of color steps
steps: uint8 & >=2 & <=128
// Reverses the color scheme
reverse: bool
// Sets the minimum value for the color scale
min?: float32
// Sets the maximum value for the color scale
max?: float32
} @cuetsy(kind="interface")
// Configuration options for the yAxis
YAxisConfig: {
ui.AxisConfig
// Sets the yAxis unit
unit?: string
// Reverses the yAxis
reverse?: bool
// Controls the number of decimals for yAxis values
decimals?: float32
// Sets the minimum value for the yAxis
min?: float32
// Sets the maximum value for the yAxis
max?: float32
} @cuetsy(kind="interface")
// Controls cell value options
CellValues: {
// Controls the cell value unit
unit?: string
// Controls the number of decimals for cell values
decimals?: float32
} @cuetsy(kind="interface")
// Controls the value filter range
FilterValueRange: {
// Sets the filter range to values less than or equal to the given value
le?: float32
// Sets the filter range to values greater than or equal to the given value
ge?: float32
} @cuetsy(kind="interface")
// Controls tooltip options
HeatmapTooltip: {
// Controls if the tooltip is shown
show: bool
// Controls if the tooltip shows a histogram of the y-axis values
yHistogram?: bool
} @cuetsy(kind="interface")
// Controls legend options
HeatmapLegend: {
// Controls if the legend is shown
show: bool
} @cuetsy(kind="interface")
// Controls exemplar options
ExemplarConfig: {
// Sets the color of the exemplar markers
color: string
} @cuetsy(kind="interface")
// Controls frame rows options
RowsHeatmapOptions: {
// Sets the name of the cell when not calculating from data
value?: string
// Controls tick alignment when not calculating from data
layout?: ui.HeatmapCellLayout
} @cuetsy(kind="interface")
Options: {
// Controls if the heatmap should be calculated from data
calculate?: bool | *false
// Calculation options for the heatmap
calculation?: ui.HeatmapCalculationOptions
// Controls the color options
color: HeatmapColorOptions | *{
// mode: HeatmapColorMode // TODO: fix after remove when https://github.com/grafana/cuetsy/issues/74 is fixed
scheme: "Oranges"
fill: "dark-orange"
// scale: HeatmapColorScale // TODO: fix after remove when https://github.com/grafana/cuetsy/issues/74 is fixed
reverse: false
exponent: 0.5
steps: 64
}
// Filters values between a given range
filterValues?: FilterValueRange | *{
le: 1e-9
}
// Controls tick alignment and value name when not calculating from data
rowsFrame?: RowsHeatmapOptions
// | *{
// layout: ui.HeatmapCellLayout & "auto" // TODO: fix after remove when https://github.com/grafana/cuetsy/issues/74 is fixed
// }
// Controls the display of the value in the cell
showValue: ui.VisibilityMode & (*"auto" | _)
// Controls gap between cells
cellGap?: uint8 & >=0 & <=25 | *1
// Controls cell radius
cellRadius?: float32
// Controls cell value unit
cellValues?: CellValues | *{}
// Controls yAxis placement
yAxis: YAxisConfig
// | *{
// axisPlacement: ui.AxisPlacement & "left" // TODO: fix after remove when https://github.com/grafana/cuetsy/issues/74 is fixed
// }
// Controls legend options
legend: HeatmapLegend | *{
show: true
}
// Controls tooltip options
tooltip: HeatmapTooltip | *{
show: true
yHistogram: false
}
// Controls exemplar options
exemplars: ExemplarConfig | *{
color: "rgba(255,0,255,0.7)"
}
} @cuetsy(kind="interface")
FieldConfig: {
ui.HideableFieldConfig
// Sets the yAxis unit
unit?: string
// Reverses the yAxis
reverse?: bool
// Controls the number of decimals for yAxis values
decimals?: float32
// Sets the minimum value for the yAxis
min?: float32
// Sets the maximum value for the yAxis
max?: float32
} @cuetsy(kind="interface")
// Controls cell value options
CellValues: {
// Controls the cell value unit
unit?: string
// Controls the number of decimals for cell values
decimals?: float32
} @cuetsy(kind="interface")
// Controls the value filter range
FilterValueRange: {
// Sets the filter range to values less than or equal to the given value
le?: float32
// Sets the filter range to values greater than or equal to the given value
ge?: float32
} @cuetsy(kind="interface")
// Controls tooltip options
HeatmapTooltip: {
// Controls if the tooltip is shown
show: bool
// Controls if the tooltip shows a histogram of the y-axis values
yHistogram?: bool
} @cuetsy(kind="interface")
// Controls legend options
HeatmapLegend: {
// Controls if the legend is shown
show: bool
} @cuetsy(kind="interface")
// Controls exemplar options
ExemplarConfig: {
// Sets the color of the exemplar markers
color: string
} @cuetsy(kind="interface")
// Controls frame rows options
RowsHeatmapOptions: {
// Sets the name of the cell when not calculating from data
value?: string
// Controls tick alignment when not calculating from data
layout?: ui.HeatmapCellLayout
} @cuetsy(kind="interface")
Options: {
// Controls if the heatmap should be calculated from data
calculate?: bool | *false
// Calculation options for the heatmap
calculation?: ui.HeatmapCalculationOptions
// Controls the color options
color: HeatmapColorOptions | *{
// mode: HeatmapColorMode // TODO: fix after remove when https://github.com/grafana/cuetsy/issues/74 is fixed
scheme: "Oranges"
fill: "dark-orange"
// scale: HeatmapColorScale // TODO: fix after remove when https://github.com/grafana/cuetsy/issues/74 is fixed
reverse: false
exponent: 0.5
steps: 64
}
// Filters values between a given range
filterValues?: FilterValueRange | *{
le: 1e-9
}
// Controls tick alignment and value name when not calculating from data
rowsFrame?: RowsHeatmapOptions
// | *{
// layout: ui.HeatmapCellLayout & "auto" // TODO: fix after remove when https://github.com/grafana/cuetsy/issues/74 is fixed
// }
// Controls the display of the value in the cell
showValue: ui.VisibilityMode & (*"auto" | _)
// Controls gap between cells
cellGap?: uint8 & >=0 & <=25 | *1
// Controls cell radius
cellRadius?: float32
// Controls cell value unit
cellValues?: CellValues | *{}
// Controls yAxis placement
yAxis: YAxisConfig
// | *{
// axisPlacement: ui.AxisPlacement & "left" // TODO: fix after remove when https://github.com/grafana/cuetsy/issues/74 is fixed
// }
// Controls legend options
legend: HeatmapLegend | *{
show: true
}
// Controls tooltip options
tooltip: HeatmapTooltip | *{
show: true
yHistogram: false
}
// Controls exemplar options
exemplars: ExemplarConfig | *{
color: "rgba(255,0,255,0.7)"
}
} @cuetsy(kind="interface")
FieldConfig: {
ui.HideableFieldConfig
scaleDistribution?: ui.ScaleDistributionConfig
} @cuetsy(kind="interface")
},
]
},
]
}
scaleDistribution?: ui.ScaleDistributionConfig
} @cuetsy(kind="interface")
}
}]
lenses: []
}

View File

@ -22,37 +22,35 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
Options: {
common.OptionsWithLegend
common.OptionsWithTooltip
schemas: [{
version: [0, 0]
schema: {
Options: {
common.OptionsWithLegend
common.OptionsWithTooltip
//Size of each bucket
bucketSize?: int32
//Offset buckets by this amount
bucketOffset?: int32 | *0
//Combines multiple series into a single histogram
combine?: bool
} @cuetsy(kind="interface")
//Size of each bucket
bucketSize?: int32
//Offset buckets by this amount
bucketOffset?: int32 | *0
//Combines multiple series into a single histogram
combine?: bool
} @cuetsy(kind="interface")
FieldConfig: {
common.AxisConfig
common.HideableFieldConfig
FieldConfig: {
common.AxisConfig
common.HideableFieldConfig
// Controls line width of the bars.
lineWidth?: uint32 & <=10 | *1
// Controls the fill opacity of the bars.
fillOpacity?: uint32 & <=100 | *80
// Set the mode of the gradient fill. Fill gradient is based on the line color. To change the color, use the standard color scheme field option.
// Gradient appearance is influenced by the Fill opacity setting.
gradientMode?: common.GraphGradientMode & (*"none" | _)
} @cuetsy(kind="interface")
},
]
},
]
// Controls line width of the bars.
lineWidth?: uint32 & <=10 | *1
// Controls the fill opacity of the bars.
fillOpacity?: uint32 & <=100 | *80
// Set the mode of the gradient fill. Fill gradient is based on the line color. To change the color, use the standard color scheme field option.
// Gradient appearance is influenced by the Fill opacity setting.
gradientMode?: common.GraphGradientMode & (*"none" | _)
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -22,23 +22,21 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
Options: {
showLabels: bool
showCommonLabels: bool
showTime: bool
wrapLogMessage: bool
prettifyLogMessage: bool
enableLogDetails: bool
sortOrder: common.LogsSortOrder
dedupStrategy: common.LogsDedupStrategy
} @cuetsy(kind="interface")
},
]
},
]
schemas: [{
version: [0, 0]
schema: {
Options: {
showLabels: bool
showCommonLabels: bool
showTime: bool
wrapLogMessage: bool
prettifyLogMessage: bool
enableLogDetails: bool
sortOrder: common.LogsSortOrder
dedupStrategy: common.LogsDedupStrategy
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -18,18 +18,16 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
Options: {
// empty/missing will default to grafana blog
feedUrl?: string
showImage?: bool | *true
} @cuetsy(kind="interface")
},
]
},
]
schemas: [{
version: [0, 0]
schema: {
Options: {
// empty/missing will default to grafana blog
feedUrl?: string
showImage?: bool | *true
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -18,38 +18,37 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
schemas: [{
version: [0, 0]
schema:
// v0.0
{
schemas: [
// v0.0
{
ArcOption: {
// Field from which to get the value. Values should be less than 1, representing fraction of a circle.
field?: string
// The color of the arc.
color?: string
} @cuetsy(kind="interface")
NodeOptions: {
// Unit for the main stat to override what ever is set in the data frame.
mainStatUnit?: string
// Unit for the secondary stat to override what ever is set in the data frame.
secondaryStatUnit?: string
// Define which fields are shown as part of the node arc (colored circle around the node).
arcs?: [...ArcOption]
}
EdgeOptions: {
// Unit for the main stat to override what ever is set in the data frame.
mainStatUnit?: string
// Unit for the secondary stat to override what ever is set in the data frame.
secondaryStatUnit?: string
}
Options: {
nodes?: NodeOptions
edges?: EdgeOptions
} @cuetsy(kind="interface")
},
]
},
]
ArcOption: {
// Field from which to get the value. Values should be less than 1, representing fraction of a circle.
field?: string
// The color of the arc.
color?: string
} @cuetsy(kind="interface")
NodeOptions: {
// Unit for the main stat to override what ever is set in the data frame.
mainStatUnit?: string
// Unit for the secondary stat to override what ever is set in the data frame.
secondaryStatUnit?: string
// Define which fields are shown as part of the node arc (colored circle around the node).
arcs?: [...ArcOption]
}
EdgeOptions: {
// Unit for the main stat to override what ever is set in the data frame.
mainStatUnit?: string
// Unit for the secondary stat to override what ever is set in the data frame.
secondaryStatUnit?: string
}
Options: {
nodes?: NodeOptions
edges?: EdgeOptions
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -22,37 +22,36 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
schemas: [{
version: [0, 0]
schema:
// v0.0
{
schemas: [
// v0.0
{
// Select the pie chart display style.
PieChartType: "pie" | "donut" @cuetsy(kind="enum")
// Select labels to display on the pie chart.
// - Name - The series or field name.
// - Percent - The percentage of the whole.
// - Value - The raw numerical value.
PieChartLabels: "name" | "value" | "percent" @cuetsy(kind="enum")
// Select values to display in the legend.
// - Percent: The percentage of the whole.
// - Value: The raw numerical value.
PieChartLegendValues: "value" | "percent" @cuetsy(kind="enum")
PieChartLegendOptions: {
common.VizLegendOptions
values: [...PieChartLegendValues]
} @cuetsy(kind="interface")
Options: {
common.OptionsWithTooltip
common.SingleStatBaseOptions
pieType: PieChartType
displayLabels: [...PieChartLabels]
legend: PieChartLegendOptions
} @cuetsy(kind="interface")
FieldConfig: common.HideableFieldConfig @cuetsy(kind="interface")
},
]
},
]
// Select the pie chart display style.
PieChartType: "pie" | "donut" @cuetsy(kind="enum")
// Select labels to display on the pie chart.
// - Name - The series or field name.
// - Percent - The percentage of the whole.
// - Value - The raw numerical value.
PieChartLabels: "name" | "value" | "percent" @cuetsy(kind="enum")
// Select values to display in the legend.
// - Percent: The percentage of the whole.
// - Value: The raw numerical value.
PieChartLegendValues: "value" | "percent" @cuetsy(kind="enum")
PieChartLegendOptions: {
common.VizLegendOptions
values: [...PieChartLegendValues]
} @cuetsy(kind="interface")
Options: {
common.OptionsWithTooltip
common.SingleStatBaseOptions
pieType: PieChartType
displayLabels: [...PieChartLabels]
legend: PieChartLegendOptions
} @cuetsy(kind="interface")
FieldConfig: common.HideableFieldConfig @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -22,20 +22,18 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
Options: {
common.SingleStatBaseOptions
graphMode: common.BigValueGraphMode & (*"area" | _)
colorMode: common.BigValueColorMode & (*"value" | _)
justifyMode: common.BigValueJustifyMode & (*"auto" | _)
textMode: common.BigValueTextMode & (*"auto" | _)
} @cuetsy(kind="interface")
},
]
},
]
schemas: [{
version: [0, 0]
schema: {
Options: {
common.SingleStatBaseOptions
graphMode: common.BigValueGraphMode & (*"area" | _)
colorMode: common.BigValueColorMode & (*"value" | _)
justifyMode: common.BigValueJustifyMode & (*"auto" | _)
textMode: common.BigValueTextMode & (*"auto" | _)
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -21,32 +21,30 @@ import (
composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
Options: {
ui.OptionsWithLegend
ui.OptionsWithTooltip
ui.OptionsWithTimezones
schemas: [{
version: [0, 0]
schema: {
Options: {
ui.OptionsWithLegend
ui.OptionsWithTooltip
ui.OptionsWithTimezones
//Show timeline values on chart
showValue: ui.VisibilityMode & (*"auto" | _)
//Controls the row height
rowHeight: float & <=1 | *0.9
//Merge equal consecutive values
mergeValues?: bool | *true
//Controls value alignment on the timelines
alignValue?: ui.TimelineValueAlignment & (*"left" | _)
} @cuetsy(kind="interface")
FieldConfig: {
ui.HideableFieldConfig
lineWidth?: uint32 & <=10 | *0
fillOpacity?: uint32 & <=100 | *70
} @cuetsy(kind="interface")
},
]
},
]
//Show timeline values on chart
showValue: ui.VisibilityMode & (*"auto" | _)
//Controls the row height
rowHeight: float & <=1 | *0.9
//Merge equal consecutive values
mergeValues?: bool | *true
//Controls value alignment on the timelines
alignValue?: ui.TimelineValueAlignment & (*"left" | _)
} @cuetsy(kind="interface")
FieldConfig: {
ui.HideableFieldConfig
lineWidth?: uint32 & <=10 | *0
fillOpacity?: uint32 & <=100 | *70
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -21,30 +21,28 @@ import (
composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
Options: {
ui.OptionsWithLegend
ui.OptionsWithTooltip
ui.OptionsWithTimezones
schemas: [{
version: [0, 0]
schema: {
Options: {
ui.OptionsWithLegend
ui.OptionsWithTooltip
ui.OptionsWithTimezones
//Set the height of the rows
rowHeight: float32 & >=0 & <=1 | *0.9
//Show values on the columns
showValue: ui.VisibilityMode & (*"auto" | _)
//Controls the column width
colWidth?: float & <=1 | *0.9
} @cuetsy(kind="interface")
FieldConfig: {
ui.HideableFieldConfig
lineWidth?: uint32 & <=10 | *1
fillOpacity?: uint32 & <=100 | *70
} @cuetsy(kind="interface")
},
]
},
]
//Set the height of the rows
rowHeight: float32 & >=0 & <=1 | *0.9
//Show values on the columns
showValue: ui.VisibilityMode & (*"auto" | _)
//Controls the column width
colWidth?: float & <=1 | *0.9
} @cuetsy(kind="interface")
FieldConfig: {
ui.HideableFieldConfig
lineWidth?: uint32 & <=10 | *1
fillOpacity?: uint32 & <=100 | *70
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -21,34 +21,32 @@ import (
composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
Options: {
// Represents the index of the selected frame
frameIndex: number | *0
// Controls whether the panel should show the header
showHeader: bool | *true
// Controls whether the header should show icons for the column types
showTypeIcons?: bool | *false
// Used to control row sorting
sortBy?: [...ui.TableSortByFieldState]
// Controls footer options
footer?: ui.TableFooterOptions | *{
// Controls whether the footer should be shown
show: false
// Controls whether the footer should show the total number of rows on Count calculation
countRows: false
// Represents the selected calculations
reducer: []
}
// Controls the height of the rows
cellHeight?: ui.TableCellHeight & (*"sm" | _)
} @cuetsy(kind="interface")
},
]
},
]
schemas: [{
version: [0, 0]
schema: {
Options: {
// Represents the index of the selected frame
frameIndex: number | *0
// Controls whether the panel should show the header
showHeader: bool | *true
// Controls whether the header should show icons for the column types
showTypeIcons?: bool | *false
// Used to control row sorting
sortBy?: [...ui.TableSortByFieldState]
// Controls footer options
footer?: ui.TableFooterOptions | *{
// Controls whether the footer should be shown
show: false
// Controls whether the footer should show the total number of rows on Count calculation
countRows: false
// Represents the selected calculations
reducer: []
}
// Controls the height of the rows
cellHeight?: ui.TableCellHeight & (*"sm" | _)
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -18,33 +18,31 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
TextMode: "html" | "markdown" | "code" @cuetsy(kind="enum",memberNames="HTML|Markdown|Code")
schemas: [{
version: [0, 0]
schema: {
TextMode: "html" | "markdown" | "code" @cuetsy(kind="enum",memberNames="HTML|Markdown|Code")
CodeLanguage: "json" | "yaml" | "xml" | "typescript" | "sql" | "go" | "markdown" | "html" | *"plaintext" @cuetsy(kind="enum")
CodeLanguage: "json" | "yaml" | "xml" | "typescript" | "sql" | "go" | "markdown" | "html" | *"plaintext" @cuetsy(kind="enum")
CodeOptions: {
// The language passed to monaco code editor
language: CodeLanguage
showLineNumbers: bool | *false
showMiniMap: bool | *false
} @cuetsy(kind="interface")
CodeOptions: {
// The language passed to monaco code editor
language: CodeLanguage
showLineNumbers: bool | *false
showMiniMap: bool | *false
} @cuetsy(kind="interface")
Options: {
mode: TextMode & (*"markdown" | _)
code?: CodeOptions
content: string | *"""
# Title
Options: {
mode: TextMode & (*"markdown" | _)
code?: CodeOptions
content: string | *"""
# Title
For markdown syntax help: [commonmark.org/help](https://commonmark.org/help/)
"""
} @cuetsy(kind="interface")
},
]
},
]
For markdown syntax help: [commonmark.org/help](https://commonmark.org/help/)
"""
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}

View File

@ -18,21 +18,17 @@ import (
"github.com/grafana/grafana/packages/grafana-schema/src/common"
)
composableKinds: PanelCfg: {
lineage: {
seqs: [
{
schemas: [
{
Options: common.OptionsWithTimezones & {
legend: common.VizLegendOptions
tooltip: common.VizTooltipOptions
} @cuetsy(kind="interface")
composableKinds: PanelCfg: lineage: {
schemas: [{
version: [0, 0]
schema: {
Options: common.OptionsWithTimezones & {
legend: common.VizLegendOptions
tooltip: common.VizTooltipOptions
} @cuetsy(kind="interface")
FieldConfig: common.GraphFieldConfig & {} @cuetsy(kind="interface")
},
]
},
]
}
FieldConfig: common.GraphFieldConfig & {} @cuetsy(kind="interface")
}
}]
lenses: []
}

View File

@ -18,25 +18,21 @@ import (
"github.com/grafana/grafana/packages/grafana-schema/src/common"
)
composableKinds: PanelCfg: {
lineage: {
seqs: [
{
schemas: [
{
// Identical to timeseries... except it does not have timezone settings
Options: {
legend: common.VizLegendOptions
tooltip: common.VizTooltipOptions
composableKinds: PanelCfg: lineage: {
schemas: [{
version: [0, 0]
schema: {
// Identical to timeseries... except it does not have timezone settings
Options: {
legend: common.VizLegendOptions
tooltip: common.VizTooltipOptions
// Name of the x field to use (defaults to first number)
xField?: string
} @cuetsy(kind="interface")
// Name of the x field to use (defaults to first number)
xField?: string
} @cuetsy(kind="interface")
FieldConfig: common.GraphFieldConfig & {} @cuetsy(kind="interface")
},
]
},
]
}
FieldConfig: common.GraphFieldConfig & {} @cuetsy(kind="interface")
}
}]
lenses: []
}

View File

@ -26,54 +26,52 @@ composableKinds: PanelCfg: {
maturity: "experimental"
lineage: {
seqs: [
{
schemas: [
{
schemas: [{
version: [0, 0]
schema: {
SeriesMapping: "auto" | "manual" @cuetsy(kind="enum")
ScatterShow: "points" | "lines" | "points+lines" @cuetsy(kind="enum", memberNames="Points|Lines|PointsAndLines")
SeriesMapping: "auto" | "manual" @cuetsy(kind="enum")
ScatterShow: "points" | "lines" | "points+lines" @cuetsy(kind="enum", memberNames="Points|Lines|PointsAndLines")
XYDimensionConfig: {
frame: int32 & >=0
x?: string
exclude?: [...string]
} @cuetsy(kind="interface")
XYDimensionConfig: {
frame: int32 & >=0
x?: string
exclude?: [...string]
} @cuetsy(kind="interface")
ScatterFieldConfig: {
common.HideableFieldConfig
common.AxisConfig
ScatterFieldConfig: {
common.HideableFieldConfig
common.AxisConfig
show?: ScatterShow & (*"points" | _)
show?: ScatterShow & (*"points" | _)
pointSize?: common.ScaleDimensionConfig
lineColor?: common.ColorDimensionConfig
pointColor?: common.ColorDimensionConfig
labelValue?: common.TextDimensionConfig
pointSize?: common.ScaleDimensionConfig
lineColor?: common.ColorDimensionConfig
pointColor?: common.ColorDimensionConfig
labelValue?: common.TextDimensionConfig
lineWidth?: int32 & >=0
lineStyle?: common.LineStyle
label?: common.VisibilityMode & (*"auto" | _)
} @cuetsy(kind="interface",TSVeneer="type")
lineWidth?: int32 & >=0
lineStyle?: common.LineStyle
label?: common.VisibilityMode & (*"auto" | _)
} @cuetsy(kind="interface",TSVeneer="type")
ScatterSeriesConfig: {
ScatterFieldConfig
x?: string
y?: string
name?: string
} @cuetsy(kind="interface")
ScatterSeriesConfig: {
ScatterFieldConfig
x?: string
y?: string
name?: string
} @cuetsy(kind="interface")
Options: {
common.OptionsWithLegend
common.OptionsWithTooltip
Options: {
common.OptionsWithLegend
common.OptionsWithTooltip
seriesMapping?: SeriesMapping
dims: XYDimensionConfig
series: [...ScatterSeriesConfig]
} @cuetsy(kind="interface")
},
]
},
]
seriesMapping?: SeriesMapping
dims: XYDimensionConfig
series: [...ScatterSeriesConfig]
} @cuetsy(kind="interface")
}
}]
lenses: []
}
}