mirror of https://github.com/grafana/grafana
TestData: Introduce schema types (#62130)
* schematize data query * add the stuff you dingus * feat(testdatasource): add scenario to generated types * use generated testdata query in frontend * update code owners * Add path exception for testdata datasource * use specific numeric data types * fix test * fix e2e smoketest * add test data query type * use test data query type * fix betterer * Fix typo * move to experimental Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com> Co-authored-by: Jack Westbrook <jack.westbrook@gmail.com> Co-authored-by: Marcus Efraimsson <marcus.efraimsson@gmail.com> Co-authored-by: sam boyer <sdboyer@grafana.com> Co-authored-by: Alex Khomenko <Clarity-89@users.noreply.github.com>pull/62241/head
parent
0cd14091c4
commit
42732539ed
@ -0,0 +1,121 @@ |
|||||||
|
--- |
||||||
|
keywords: |
||||||
|
- grafana |
||||||
|
- schema |
||||||
|
title: TestDataDataQuery kind |
||||||
|
--- |
||||||
|
> Both documentation generation and kinds schemas are in active development and subject to change without prior notice. |
||||||
|
|
||||||
|
# TestDataDataQuery kind |
||||||
|
|
||||||
|
## Maturity: experimental |
||||||
|
## Version: 0.0 |
||||||
|
|
||||||
|
## Properties |
||||||
|
|
||||||
|
| Property | Type | Required | Description | |
||||||
|
|-------------------|-------------------------------------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
||||||
|
| `alias` | string | No | | |
||||||
|
| `channel` | string | No | | |
||||||
|
| `csvContent` | string | No | | |
||||||
|
| `csvFileName` | string | No | | |
||||||
|
| `csvWave` | [CSVWave](#csvwave)[] | No | | |
||||||
|
| `errorType` | string | No | Possible values are: `server_panic`, `frontend_exception`, `frontend_observable`. | |
||||||
|
| `labels` | string | No | | |
||||||
|
| `levelColumn` | boolean | No | | |
||||||
|
| `lines` | integer | No | | |
||||||
|
| `nodes` | [NodesQuery](#nodesquery) | No | | |
||||||
|
| `points` | array[] | No | | |
||||||
|
| `pulseWave` | [PulseWaveQuery](#pulsewavequery) | No | | |
||||||
|
| `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 | | |
||||||
|
| `sim` | [SimulationQuery](#simulationquery) | No | | |
||||||
|
| `spanCount` | integer | No | | |
||||||
|
| `stream` | [StreamingQuery](#streamingquery) | No | | |
||||||
|
| `stringInput` | string | No | | |
||||||
|
| `usa` | [USAQuery](#usaquery) | No | | |
||||||
|
|
||||||
|
## CSVWave |
||||||
|
|
||||||
|
### Properties |
||||||
|
|
||||||
|
| Property | Type | Required | Description | |
||||||
|
|-------------|---------|----------|-------------| |
||||||
|
| `labels` | string | No | | |
||||||
|
| `name` | string | No | | |
||||||
|
| `timeStep` | integer | No | | |
||||||
|
| `valuesCSV` | string | No | | |
||||||
|
|
||||||
|
## NodesQuery |
||||||
|
|
||||||
|
### Properties |
||||||
|
|
||||||
|
| Property | Type | Required | Description | |
||||||
|
|----------|---------|----------|------------------------------------------------------------| |
||||||
|
| `count` | integer | No | | |
||||||
|
| `type` | string | No | Possible values are: `random`, `response`, `random edges`. | |
||||||
|
|
||||||
|
## PulseWaveQuery |
||||||
|
|
||||||
|
### Properties |
||||||
|
|
||||||
|
| Property | Type | Required | Description | |
||||||
|
|------------|---------|----------|-------------| |
||||||
|
| `offCount` | integer | No | | |
||||||
|
| `offValue` | number | No | | |
||||||
|
| `onCount` | integer | No | | |
||||||
|
| `onValue` | number | No | | |
||||||
|
| `timeStep` | integer | No | | |
||||||
|
|
||||||
|
## SimulationQuery |
||||||
|
|
||||||
|
### Properties |
||||||
|
|
||||||
|
| Property | Type | Required | Description | |
||||||
|
|----------|-------------------|----------|-------------| |
||||||
|
| `key` | [object](#key) | **Yes** | | |
||||||
|
| `config` | [object](#config) | No | | |
||||||
|
| `last` | boolean | No | | |
||||||
|
| `stream` | boolean | No | | |
||||||
|
|
||||||
|
### config |
||||||
|
|
||||||
|
| Property | Type | Required | Description | |
||||||
|
|----------|------|----------|-------------| |
||||||
|
|
||||||
|
### key |
||||||
|
|
||||||
|
#### Properties |
||||||
|
|
||||||
|
| Property | Type | Required | Description | |
||||||
|
|----------|--------|----------|-------------| |
||||||
|
| `tick` | number | **Yes** | | |
||||||
|
| `type` | string | **Yes** | | |
||||||
|
| `uid` | string | No | | |
||||||
|
|
||||||
|
## StreamingQuery |
||||||
|
|
||||||
|
### Properties |
||||||
|
|
||||||
|
| Property | Type | Required | Description | |
||||||
|
|----------|---------|----------|-------------------------------------------------| |
||||||
|
| `noise` | integer | **Yes** | | |
||||||
|
| `speed` | integer | **Yes** | | |
||||||
|
| `spread` | integer | **Yes** | | |
||||||
|
| `type` | string | **Yes** | Possible values are: `signal`, `logs`, `fetch`. | |
||||||
|
| `bands` | integer | No | | |
||||||
|
| `url` | string | No | | |
||||||
|
|
||||||
|
## USAQuery |
||||||
|
|
||||||
|
### Properties |
||||||
|
|
||||||
|
| Property | Type | Required | Description | |
||||||
|
|----------|----------|----------|-------------| |
||||||
|
| `fields` | string[] | No | | |
||||||
|
| `mode` | string | No | | |
||||||
|
| `period` | string | No | | |
||||||
|
| `states` | string[] | No | | |
||||||
|
|
||||||
|
|
||||||
@ -0,0 +1,338 @@ |
|||||||
|
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Generated by:
|
||||||
|
// public/app/plugins/gen.go
|
||||||
|
// Using jennies:
|
||||||
|
// PluginGoTypesJenny
|
||||||
|
//
|
||||||
|
// Run 'make gen-cue' from repository root to regenerate.
|
||||||
|
|
||||||
|
package dataquery |
||||||
|
|
||||||
|
// Defines values for NodesQueryType.
|
||||||
|
const ( |
||||||
|
NodesQueryTypeRandom NodesQueryType = "random" |
||||||
|
|
||||||
|
NodesQueryTypeRandomEdges NodesQueryType = "random edges" |
||||||
|
|
||||||
|
NodesQueryTypeResponse NodesQueryType = "response" |
||||||
|
) |
||||||
|
|
||||||
|
// Defines values for StreamingQueryType.
|
||||||
|
const ( |
||||||
|
StreamingQueryTypeFetch StreamingQueryType = "fetch" |
||||||
|
|
||||||
|
StreamingQueryTypeLogs StreamingQueryType = "logs" |
||||||
|
|
||||||
|
StreamingQueryTypeSignal StreamingQueryType = "signal" |
||||||
|
) |
||||||
|
|
||||||
|
// Defines values for ErrorType.
|
||||||
|
const ( |
||||||
|
ErrorTypeFrontendException ErrorType = "frontend_exception" |
||||||
|
|
||||||
|
ErrorTypeFrontendObservable ErrorType = "frontend_observable" |
||||||
|
|
||||||
|
ErrorTypeServerPanic ErrorType = "server_panic" |
||||||
|
) |
||||||
|
|
||||||
|
// Defines values for NodesType.
|
||||||
|
const ( |
||||||
|
NodesTypeRandom NodesType = "random" |
||||||
|
|
||||||
|
NodesTypeRandomEdges NodesType = "random edges" |
||||||
|
|
||||||
|
NodesTypeResponse NodesType = "response" |
||||||
|
) |
||||||
|
|
||||||
|
// Defines values for ScenarioId.
|
||||||
|
const ( |
||||||
|
ScenarioIdAnnotations ScenarioId = "annotations" |
||||||
|
|
||||||
|
ScenarioIdArrow ScenarioId = "arrow" |
||||||
|
|
||||||
|
ScenarioIdCsvContent ScenarioId = "csv_content" |
||||||
|
|
||||||
|
ScenarioIdCsvFile ScenarioId = "csv_file" |
||||||
|
|
||||||
|
ScenarioIdCsvMetricValues ScenarioId = "csv_metric_values" |
||||||
|
|
||||||
|
ScenarioIdDatapointsOutsideRange ScenarioId = "datapoints_outside_range" |
||||||
|
|
||||||
|
ScenarioIdExponentialHeatmapBucketData ScenarioId = "exponential_heatmap_bucket_data" |
||||||
|
|
||||||
|
ScenarioIdFlameGraph ScenarioId = "flame_graph" |
||||||
|
|
||||||
|
ScenarioIdGrafanaApi ScenarioId = "grafana_api" |
||||||
|
|
||||||
|
ScenarioIdLinearHeatmapBucketData ScenarioId = "linear_heatmap_bucket_data" |
||||||
|
|
||||||
|
ScenarioIdLive ScenarioId = "live" |
||||||
|
|
||||||
|
ScenarioIdLogs ScenarioId = "logs" |
||||||
|
|
||||||
|
ScenarioIdManualEntry ScenarioId = "manual_entry" |
||||||
|
|
||||||
|
ScenarioIdNoDataPoints ScenarioId = "no_data_points" |
||||||
|
|
||||||
|
ScenarioIdNodeGraph ScenarioId = "node_graph" |
||||||
|
|
||||||
|
ScenarioIdPredictableCsvWave ScenarioId = "predictable_csv_wave" |
||||||
|
|
||||||
|
ScenarioIdPredictablePulse ScenarioId = "predictable_pulse" |
||||||
|
|
||||||
|
ScenarioIdRandomWalk ScenarioId = "random_walk" |
||||||
|
|
||||||
|
ScenarioIdRandomWalkTable ScenarioId = "random_walk_table" |
||||||
|
|
||||||
|
ScenarioIdRandomWalkWithError ScenarioId = "random_walk_with_error" |
||||||
|
|
||||||
|
ScenarioIdRawFrame ScenarioId = "raw_frame" |
||||||
|
|
||||||
|
ScenarioIdServerError500 ScenarioId = "server_error_500" |
||||||
|
|
||||||
|
ScenarioIdSimulation ScenarioId = "simulation" |
||||||
|
|
||||||
|
ScenarioIdSlowQuery ScenarioId = "slow_query" |
||||||
|
|
||||||
|
ScenarioIdStreamingClient ScenarioId = "streaming_client" |
||||||
|
|
||||||
|
ScenarioIdTableStatic ScenarioId = "table_static" |
||||||
|
|
||||||
|
ScenarioIdTrace ScenarioId = "trace" |
||||||
|
|
||||||
|
ScenarioIdUsa ScenarioId = "usa" |
||||||
|
|
||||||
|
ScenarioIdVariablesQuery ScenarioId = "variables-query" |
||||||
|
) |
||||||
|
|
||||||
|
// Defines values for StreamType.
|
||||||
|
const ( |
||||||
|
StreamTypeFetch StreamType = "fetch" |
||||||
|
|
||||||
|
StreamTypeLogs StreamType = "logs" |
||||||
|
|
||||||
|
StreamTypeSignal StreamType = "signal" |
||||||
|
) |
||||||
|
|
||||||
|
// Defines values for TestDataQueryType.
|
||||||
|
const ( |
||||||
|
TestDataQueryTypeAnnotations TestDataQueryType = "annotations" |
||||||
|
|
||||||
|
TestDataQueryTypeArrow TestDataQueryType = "arrow" |
||||||
|
|
||||||
|
TestDataQueryTypeCsvContent TestDataQueryType = "csv_content" |
||||||
|
|
||||||
|
TestDataQueryTypeCsvFile TestDataQueryType = "csv_file" |
||||||
|
|
||||||
|
TestDataQueryTypeCsvMetricValues TestDataQueryType = "csv_metric_values" |
||||||
|
|
||||||
|
TestDataQueryTypeDatapointsOutsideRange TestDataQueryType = "datapoints_outside_range" |
||||||
|
|
||||||
|
TestDataQueryTypeExponentialHeatmapBucketData TestDataQueryType = "exponential_heatmap_bucket_data" |
||||||
|
|
||||||
|
TestDataQueryTypeFlameGraph TestDataQueryType = "flame_graph" |
||||||
|
|
||||||
|
TestDataQueryTypeGrafanaApi TestDataQueryType = "grafana_api" |
||||||
|
|
||||||
|
TestDataQueryTypeLinearHeatmapBucketData TestDataQueryType = "linear_heatmap_bucket_data" |
||||||
|
|
||||||
|
TestDataQueryTypeLive TestDataQueryType = "live" |
||||||
|
|
||||||
|
TestDataQueryTypeLogs TestDataQueryType = "logs" |
||||||
|
|
||||||
|
TestDataQueryTypeManualEntry TestDataQueryType = "manual_entry" |
||||||
|
|
||||||
|
TestDataQueryTypeNoDataPoints TestDataQueryType = "no_data_points" |
||||||
|
|
||||||
|
TestDataQueryTypeNodeGraph TestDataQueryType = "node_graph" |
||||||
|
|
||||||
|
TestDataQueryTypePredictableCsvWave TestDataQueryType = "predictable_csv_wave" |
||||||
|
|
||||||
|
TestDataQueryTypePredictablePulse TestDataQueryType = "predictable_pulse" |
||||||
|
|
||||||
|
TestDataQueryTypeRandomWalk TestDataQueryType = "random_walk" |
||||||
|
|
||||||
|
TestDataQueryTypeRandomWalkTable TestDataQueryType = "random_walk_table" |
||||||
|
|
||||||
|
TestDataQueryTypeRandomWalkWithError TestDataQueryType = "random_walk_with_error" |
||||||
|
|
||||||
|
TestDataQueryTypeRawFrame TestDataQueryType = "raw_frame" |
||||||
|
|
||||||
|
TestDataQueryTypeServerError500 TestDataQueryType = "server_error_500" |
||||||
|
|
||||||
|
TestDataQueryTypeSimulation TestDataQueryType = "simulation" |
||||||
|
|
||||||
|
TestDataQueryTypeSlowQuery TestDataQueryType = "slow_query" |
||||||
|
|
||||||
|
TestDataQueryTypeStreamingClient TestDataQueryType = "streaming_client" |
||||||
|
|
||||||
|
TestDataQueryTypeTableStatic TestDataQueryType = "table_static" |
||||||
|
|
||||||
|
TestDataQueryTypeTrace TestDataQueryType = "trace" |
||||||
|
|
||||||
|
TestDataQueryTypeUsa TestDataQueryType = "usa" |
||||||
|
|
||||||
|
TestDataQueryTypeVariablesQuery TestDataQueryType = "variables-query" |
||||||
|
) |
||||||
|
|
||||||
|
// CSVWave defines model for CSVWave.
|
||||||
|
type CSVWave struct { |
||||||
|
Labels *string `json:"labels,omitempty"` |
||||||
|
Name *string `json:"name,omitempty"` |
||||||
|
TimeStep *int64 `json:"timeStep,omitempty"` |
||||||
|
ValuesCSV *string `json:"valuesCSV,omitempty"` |
||||||
|
} |
||||||
|
|
||||||
|
// NodesQuery defines model for NodesQuery.
|
||||||
|
type NodesQuery struct { |
||||||
|
Count *int64 `json:"count,omitempty"` |
||||||
|
Type *NodesQueryType `json:"type,omitempty"` |
||||||
|
} |
||||||
|
|
||||||
|
// NodesQueryType defines model for NodesQuery.Type.
|
||||||
|
type NodesQueryType string |
||||||
|
|
||||||
|
// PulseWaveQuery defines model for PulseWaveQuery.
|
||||||
|
type PulseWaveQuery struct { |
||||||
|
OffCount *int64 `json:"offCount,omitempty"` |
||||||
|
OffValue *float64 `json:"offValue,omitempty"` |
||||||
|
OnCount *int64 `json:"onCount,omitempty"` |
||||||
|
OnValue *float64 `json:"onValue,omitempty"` |
||||||
|
TimeStep *int64 `json:"timeStep,omitempty"` |
||||||
|
} |
||||||
|
|
||||||
|
// TODO: Should this live here given it's not used in the dataquery?
|
||||||
|
type Scenario struct { |
||||||
|
Description *string `json:"description,omitempty"` |
||||||
|
HideAliasField *bool `json:"hideAliasField,omitempty"` |
||||||
|
Id string `json:"id"` |
||||||
|
Name string `json:"name"` |
||||||
|
StringInput string `json:"stringInput"` |
||||||
|
} |
||||||
|
|
||||||
|
// SimulationQuery defines model for SimulationQuery.
|
||||||
|
type SimulationQuery struct { |
||||||
|
Config map[string]interface{} `json:"config,omitempty"` |
||||||
|
Key struct { |
||||||
|
Tick float64 `json:"tick"` |
||||||
|
Type string `json:"type"` |
||||||
|
Uid *string `json:"uid,omitempty"` |
||||||
|
} `json:"key"` |
||||||
|
Last *bool `json:"last,omitempty"` |
||||||
|
Stream *bool `json:"stream,omitempty"` |
||||||
|
} |
||||||
|
|
||||||
|
// StreamingQuery defines model for StreamingQuery.
|
||||||
|
type StreamingQuery struct { |
||||||
|
Bands *int32 `json:"bands,omitempty"` |
||||||
|
Noise int32 `json:"noise"` |
||||||
|
Speed int32 `json:"speed"` |
||||||
|
Spread int32 `json:"spread"` |
||||||
|
Type StreamingQueryType `json:"type"` |
||||||
|
Url *string `json:"url,omitempty"` |
||||||
|
} |
||||||
|
|
||||||
|
// StreamingQueryType defines model for StreamingQuery.Type.
|
||||||
|
type StreamingQueryType string |
||||||
|
|
||||||
|
// TestDataDataQuery defines model for TestDataDataQuery.
|
||||||
|
type TestDataDataQuery struct { |
||||||
|
Alias *string `json:"alias,omitempty"` |
||||||
|
Channel *string `json:"channel,omitempty"` |
||||||
|
CsvContent *string `json:"csvContent,omitempty"` |
||||||
|
CsvFileName *string `json:"csvFileName,omitempty"` |
||||||
|
CsvWave *[]struct { |
||||||
|
Labels *string `json:"labels,omitempty"` |
||||||
|
Name *string `json:"name,omitempty"` |
||||||
|
TimeStep *int64 `json:"timeStep,omitempty"` |
||||||
|
ValuesCSV *string `json:"valuesCSV,omitempty"` |
||||||
|
} `json:"csvWave,omitempty"` |
||||||
|
|
||||||
|
// For mixed data sources the selected datasource is on the query level.
|
||||||
|
// For non mixed scenarios this is undefined.
|
||||||
|
// TODO find a better way to do this ^ that's friendly to schema
|
||||||
|
// TODO this shouldn't be unknown but DataSourceRef | null
|
||||||
|
Datasource *interface{} `json:"datasource,omitempty"` |
||||||
|
ErrorType *ErrorType `json:"errorType,omitempty"` |
||||||
|
|
||||||
|
// true if query is disabled (ie should not be returned to the dashboard)
|
||||||
|
Hide *bool `json:"hide,omitempty"` |
||||||
|
|
||||||
|
// Unique, guid like, string used in explore mode
|
||||||
|
Key *string `json:"key,omitempty"` |
||||||
|
Labels *string `json:"labels,omitempty"` |
||||||
|
LevelColumn *bool `json:"levelColumn,omitempty"` |
||||||
|
Lines *int64 `json:"lines,omitempty"` |
||||||
|
Nodes *struct { |
||||||
|
Count *int64 `json:"count,omitempty"` |
||||||
|
Type *NodesType `json:"type,omitempty"` |
||||||
|
} `json:"nodes,omitempty"` |
||||||
|
Points *[][]interface{} `json:"points,omitempty"` |
||||||
|
PulseWave *struct { |
||||||
|
OffCount *int64 `json:"offCount,omitempty"` |
||||||
|
OffValue *float64 `json:"offValue,omitempty"` |
||||||
|
OnCount *int64 `json:"onCount,omitempty"` |
||||||
|
OnValue *float64 `json:"onValue,omitempty"` |
||||||
|
TimeStep *int64 `json:"timeStep,omitempty"` |
||||||
|
} `json:"pulseWave,omitempty"` |
||||||
|
|
||||||
|
// Specify the query flavor
|
||||||
|
// TODO make this required and give it a default
|
||||||
|
QueryType *string `json:"queryType,omitempty"` |
||||||
|
RawFrameContent *string `json:"rawFrameContent,omitempty"` |
||||||
|
|
||||||
|
// A - Z
|
||||||
|
RefId string `json:"refId"` |
||||||
|
ScenarioId *ScenarioId `json:"scenarioId,omitempty"` |
||||||
|
SeriesCount *int32 `json:"seriesCount,omitempty"` |
||||||
|
Sim *struct { |
||||||
|
Config map[string]interface{} `json:"config,omitempty"` |
||||||
|
Key struct { |
||||||
|
Tick float64 `json:"tick"` |
||||||
|
Type string `json:"type"` |
||||||
|
Uid *string `json:"uid,omitempty"` |
||||||
|
} `json:"key"` |
||||||
|
Last *bool `json:"last,omitempty"` |
||||||
|
Stream *bool `json:"stream,omitempty"` |
||||||
|
} `json:"sim,omitempty"` |
||||||
|
SpanCount *int32 `json:"spanCount,omitempty"` |
||||||
|
Stream *struct { |
||||||
|
Bands *int32 `json:"bands,omitempty"` |
||||||
|
Noise int32 `json:"noise"` |
||||||
|
Speed int32 `json:"speed"` |
||||||
|
Spread int32 `json:"spread"` |
||||||
|
Type StreamType `json:"type"` |
||||||
|
Url *string `json:"url,omitempty"` |
||||||
|
} `json:"stream,omitempty"` |
||||||
|
StringInput *string `json:"stringInput,omitempty"` |
||||||
|
Usa *struct { |
||||||
|
Fields *[]string `json:"fields,omitempty"` |
||||||
|
Mode *string `json:"mode,omitempty"` |
||||||
|
Period *string `json:"period,omitempty"` |
||||||
|
States *[]string `json:"states,omitempty"` |
||||||
|
} `json:"usa,omitempty"` |
||||||
|
} |
||||||
|
|
||||||
|
// ErrorType defines model for TestDataDataQuery.ErrorType.
|
||||||
|
type ErrorType string |
||||||
|
|
||||||
|
// NodesType defines model for TestDataDataQuery.Nodes.Type.
|
||||||
|
type NodesType string |
||||||
|
|
||||||
|
// ScenarioId defines model for TestDataDataQuery.ScenarioId.
|
||||||
|
type ScenarioId string |
||||||
|
|
||||||
|
// StreamType defines model for TestDataDataQuery.Stream.Type.
|
||||||
|
type StreamType string |
||||||
|
|
||||||
|
// TestDataQueryType defines model for TestDataQueryType.
|
||||||
|
type TestDataQueryType string |
||||||
|
|
||||||
|
// USAQuery defines model for USAQuery.
|
||||||
|
type USAQuery struct { |
||||||
|
Fields *[]string `json:"fields,omitempty"` |
||||||
|
Mode *string `json:"mode,omitempty"` |
||||||
|
Period *string `json:"period,omitempty"` |
||||||
|
States *[]string `json:"states,omitempty"` |
||||||
|
} |
||||||
@ -0,0 +1,117 @@ |
|||||||
|
// Copyright 2023 Grafana Labs |
||||||
|
// |
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License"); |
||||||
|
// you may not use this file except in compliance with the License. |
||||||
|
// You may obtain a copy of the License at |
||||||
|
// |
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0 |
||||||
|
// |
||||||
|
// Unless required by applicable law or agreed to in writing, software |
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS, |
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||||
|
// See the License for the specific language governing permissions and |
||||||
|
// limitations under the License. |
||||||
|
|
||||||
|
package grafanaplugin |
||||||
|
|
||||||
|
import ( |
||||||
|
"github.com/grafana/grafana/packages/grafana-schema/src/common" |
||||||
|
"github.com/grafana/grafana/pkg/plugins/pfs" |
||||||
|
) |
||||||
|
|
||||||
|
// This file (with its sibling .cue files) implements pfs.GrafanaPlugin |
||||||
|
pfs.GrafanaPlugin |
||||||
|
|
||||||
|
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]] |
||||||
|
|
||||||
|
#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") |
||||||
|
|
||||||
|
#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") |
||||||
|
|
||||||
|
#NodesQuery: { |
||||||
|
type?: "random" | "response" | "random edges" |
||||||
|
count?: int64 |
||||||
|
} @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") |
||||||
|
|
||||||
|
// 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") |
||||||
|
}, |
||||||
|
] |
||||||
|
}, |
||||||
|
] |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,137 @@ |
|||||||
|
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
|
||||||
|
//
|
||||||
|
// Generated by:
|
||||||
|
// public/app/plugins/gen.go
|
||||||
|
// Using jennies:
|
||||||
|
// TSTypesJenny
|
||||||
|
// PluginTSTypesJenny
|
||||||
|
//
|
||||||
|
// Run 'make gen-cue' from repository root to regenerate.
|
||||||
|
|
||||||
|
import * as common from '@grafana/schema'; |
||||||
|
|
||||||
|
export const DataQueryModelVersion = Object.freeze([0, 0]); |
||||||
|
|
||||||
|
export enum TestDataQueryType { |
||||||
|
Annotations = 'annotations', |
||||||
|
Arrow = 'arrow', |
||||||
|
CSVContent = 'csv_content', |
||||||
|
CSVFile = 'csv_file', |
||||||
|
CSVMetricValues = 'csv_metric_values', |
||||||
|
DataPointsOutsideRange = 'datapoints_outside_range', |
||||||
|
ExponentialHeatmapBucketData = 'exponential_heatmap_bucket_data', |
||||||
|
FlameGraph = 'flame_graph', |
||||||
|
GrafanaAPI = 'grafana_api', |
||||||
|
LinearHeatmapBucketData = 'linear_heatmap_bucket_data', |
||||||
|
Live = 'live', |
||||||
|
Logs = 'logs', |
||||||
|
ManualEntry = 'manual_entry', |
||||||
|
NoDataPoints = 'no_data_points', |
||||||
|
NodeGraph = 'node_graph', |
||||||
|
PredictableCSVWave = 'predictable_csv_wave', |
||||||
|
PredictablePulse = 'predictable_pulse', |
||||||
|
RandomWalk = 'random_walk', |
||||||
|
RandomWalkTable = 'random_walk_table', |
||||||
|
RandomWalkWithError = 'random_walk_with_error', |
||||||
|
RawFrame = 'raw_frame', |
||||||
|
ServerError500 = 'server_error_500', |
||||||
|
Simulation = 'simulation', |
||||||
|
SlowQuery = 'slow_query', |
||||||
|
StreamingClient = 'streaming_client', |
||||||
|
TableStatic = 'table_static', |
||||||
|
Trace = 'trace', |
||||||
|
USA = 'usa', |
||||||
|
VariablesQuery = 'variables-query', |
||||||
|
} |
||||||
|
|
||||||
|
export interface StreamingQuery { |
||||||
|
bands?: number; |
||||||
|
noise: number; |
||||||
|
speed: number; |
||||||
|
spread: number; |
||||||
|
type: ('signal' | 'logs' | 'fetch'); |
||||||
|
url?: string; |
||||||
|
} |
||||||
|
|
||||||
|
export interface PulseWaveQuery { |
||||||
|
offCount?: number; |
||||||
|
offValue?: number; |
||||||
|
onCount?: number; |
||||||
|
onValue?: number; |
||||||
|
timeStep?: number; |
||||||
|
} |
||||||
|
|
||||||
|
export interface SimulationQuery { |
||||||
|
config?: Record<string, unknown>; |
||||||
|
key: { |
||||||
|
type: string; |
||||||
|
tick: number; |
||||||
|
uid?: string; |
||||||
|
}; |
||||||
|
last?: boolean; |
||||||
|
stream?: boolean; |
||||||
|
} |
||||||
|
|
||||||
|
export interface NodesQuery { |
||||||
|
count?: number; |
||||||
|
type?: ('random' | 'response' | 'random edges'); |
||||||
|
} |
||||||
|
|
||||||
|
export interface USAQuery { |
||||||
|
fields?: Array<string>; |
||||||
|
mode?: string; |
||||||
|
period?: string; |
||||||
|
states?: Array<string>; |
||||||
|
} |
||||||
|
|
||||||
|
export const defaultUSAQuery: Partial<USAQuery> = { |
||||||
|
fields: [], |
||||||
|
states: [], |
||||||
|
}; |
||||||
|
|
||||||
|
export interface CSVWave { |
||||||
|
labels?: string; |
||||||
|
name?: string; |
||||||
|
timeStep?: number; |
||||||
|
valuesCSV?: string; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* TODO: Should this live here given it's not used in the dataquery? |
||||||
|
*/ |
||||||
|
export interface Scenario { |
||||||
|
description?: string; |
||||||
|
hideAliasField?: boolean; |
||||||
|
id: string; |
||||||
|
name: string; |
||||||
|
stringInput: string; |
||||||
|
} |
||||||
|
|
||||||
|
export interface TestData extends common.DataQuery { |
||||||
|
alias?: string; |
||||||
|
channel?: string; |
||||||
|
csvContent?: string; |
||||||
|
csvFileName?: string; |
||||||
|
csvWave?: Array<CSVWave>; |
||||||
|
errorType?: ('server_panic' | 'frontend_exception' | 'frontend_observable'); |
||||||
|
labels?: string; |
||||||
|
levelColumn?: boolean; |
||||||
|
lines?: number; |
||||||
|
nodes?: NodesQuery; |
||||||
|
points?: Array<Array<(string | number)>>; |
||||||
|
pulseWave?: PulseWaveQuery; |
||||||
|
rawFrameContent?: string; |
||||||
|
scenarioId?: TestDataQueryType; |
||||||
|
seriesCount?: number; |
||||||
|
sim?: SimulationQuery; |
||||||
|
spanCount?: number; |
||||||
|
stream?: StreamingQuery; |
||||||
|
stringInput?: string; |
||||||
|
usa?: USAQuery; |
||||||
|
} |
||||||
|
|
||||||
|
export const defaultTestData: Partial<TestData> = { |
||||||
|
csvWave: [], |
||||||
|
points: [], |
||||||
|
scenarioId: TestDataQueryType.RandomWalk, |
||||||
|
}; |
||||||
@ -1,77 +0,0 @@ |
|||||||
import { DataQuery } from '@grafana/data'; |
|
||||||
|
|
||||||
export interface Scenario { |
|
||||||
id: string; |
|
||||||
name: string; |
|
||||||
stringInput: string; |
|
||||||
description?: string; |
|
||||||
hideAliasField?: boolean; |
|
||||||
} |
|
||||||
|
|
||||||
export interface TestDataQuery extends DataQuery { |
|
||||||
alias?: string; |
|
||||||
scenarioId?: string; |
|
||||||
stringInput?: string; |
|
||||||
stream?: StreamingQuery; |
|
||||||
pulseWave?: PulseWaveQuery; |
|
||||||
sim?: SimulationQuery; |
|
||||||
csvWave?: CSVWave[]; |
|
||||||
labels?: string; |
|
||||||
lines?: number; |
|
||||||
levelColumn?: boolean; |
|
||||||
channel?: string; // for grafana live
|
|
||||||
nodes?: NodesQuery; |
|
||||||
csvFileName?: string; |
|
||||||
csvContent?: string; |
|
||||||
rawFrameContent?: string; |
|
||||||
seriesCount?: number; |
|
||||||
usa?: USAQuery; |
|
||||||
errorType?: 'server_panic' | 'frontend_exception' | 'frontend_observable'; |
|
||||||
spanCount?: number; |
|
||||||
} |
|
||||||
|
|
||||||
export interface NodesQuery { |
|
||||||
type?: 'random' | 'response' | 'random edges'; |
|
||||||
count?: number; |
|
||||||
} |
|
||||||
|
|
||||||
export interface StreamingQuery { |
|
||||||
type: 'signal' | 'logs' | 'fetch'; |
|
||||||
speed: number; |
|
||||||
spread: number; |
|
||||||
noise: number; // wiggle around the signal for min/max
|
|
||||||
bands?: number; // number of bands around the middle band
|
|
||||||
url?: string; // the Fetch URL
|
|
||||||
} |
|
||||||
|
|
||||||
export interface SimulationQuery { |
|
||||||
key: { |
|
||||||
type: string; |
|
||||||
tick: number; |
|
||||||
uid?: string; |
|
||||||
}; |
|
||||||
config?: Record<string, any>; |
|
||||||
stream?: boolean; |
|
||||||
last?: boolean; |
|
||||||
} |
|
||||||
|
|
||||||
export interface PulseWaveQuery { |
|
||||||
timeStep?: number; |
|
||||||
onCount?: number; |
|
||||||
offCount?: number; |
|
||||||
onValue?: number; |
|
||||||
offValue?: number; |
|
||||||
} |
|
||||||
export interface CSVWave { |
|
||||||
timeStep?: number; |
|
||||||
name?: string; |
|
||||||
valuesCSV?: string; |
|
||||||
labels?: string; |
|
||||||
} |
|
||||||
|
|
||||||
export interface USAQuery { |
|
||||||
mode?: string; |
|
||||||
period?: string; |
|
||||||
fields?: string[]; // foo, bar, baz
|
|
||||||
states?: string[]; |
|
||||||
} |
|
||||||
Loading…
Reference in new issue