grafana/pkg/tsdb/grafana-testdata-datasource/kinds/query.go
2024-10-15 14:02:34 +02:00

191 lines
7.5 KiB
Go

package kinds
import (
"embed"
"encoding/json"
)
// NodesQueryType defines model for NodesQuery.Type.
// +enum
type NodesQueryType string
const (
NodesQueryTypeRandom NodesQueryType = "random"
NodesQueryTypeRandomEdges NodesQueryType = "random edges"
NodesQueryTypeResponseMedium NodesQueryType = "response_medium"
NodesQueryTypeResponseSmall NodesQueryType = "response_small"
NodesQueryTypeFeatureShowcase NodesQueryType = "feature_showcase"
)
// StreamingQueryType defines model for StreamingQuery.Type.
// +enum
type StreamingQueryType string
const (
StreamingQueryTypeFetch StreamingQueryType = "fetch"
StreamingQueryTypeLogs StreamingQueryType = "logs"
StreamingQueryTypeSignal StreamingQueryType = "signal"
StreamingQueryTypeTraces StreamingQueryType = "traces"
)
// ErrorType defines model for TestDataQuery.ErrorType.
// +enum
type ErrorType string
const (
ErrorTypeFrontendException ErrorType = "frontend_exception"
ErrorTypeFrontendObservable ErrorType = "frontend_observable"
ErrorTypeServerPanic ErrorType = "server_panic"
)
// ErrorSource defines model for TestDataQuery.ErrorSource.
// +enum
type ErrorSource string
// Defines values for ErrorSource.
const (
ErrorSourcePlugin ErrorSource = "plugin"
ErrorSourceDownstream ErrorSource = "downstream"
)
// TestDataQueryType defines model for TestDataQueryType.
// +enum
type TestDataQueryType string
// 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"
TestDataQueryTypeErrorWithSource TestDataQueryType = "error_with_source"
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"
)
// TestDataQuery defines model for TestDataQuery.
type TestDataQuery struct {
ScenarioId TestDataQueryType `json:"scenarioId,omitempty"`
Alias string `json:"alias,omitempty"`
Labels string `json:"labels,omitempty"`
// common parameter used by many query types
StringInput string `json:"stringInput,omitempty"`
CsvContent string `json:"csvContent,omitempty"`
CsvFileName string `json:"csvFileName,omitempty"`
CsvWave []CSVWave `json:"csvWave,omitempty"`
// Used for live query
Channel string `json:"channel,omitempty"`
// Drop percentage (the chance we will lose a point 0-100)
DropPercent float64 `json:"dropPercent,omitempty"`
ErrorType ErrorType `json:"errorType,omitempty"`
FlamegraphDiff bool `json:"flamegraphDiff,omitempty"`
LevelColumn bool `json:"levelColumn,omitempty"`
StartValue float64 `json:"startValue,omitempty"`
Spread float64 `json:"spread,omitempty"`
Noise float64 `json:"noise,omitempty"`
Min *float64 `json:"min,omitempty"`
Max *float64 `json:"max,omitempty"`
WithNil bool `json:"withNil,omitempty"`
Lines int64 `json:"lines,omitempty"`
Points [][]any `json:"points,omitempty"`
RawFrameContent string `json:"rawFrameContent,omitempty"`
SeriesCount int `json:"seriesCount,omitempty"`
SpanCount int `json:"spanCount,omitempty"`
ErrorSource ErrorSource `json:"errorSource,omitempty"`
Nodes *NodesQuery `json:"nodes,omitempty"`
PulseWave *PulseWaveQuery `json:"pulseWave,omitempty"`
Sim *SimulationQuery `json:"sim,omitempty"`
Stream *StreamingQuery `json:"stream,omitempty"`
Usa *USAQuery `json:"usa,omitempty"`
}
// CSVWave defines model for CSVWave.
type CSVWave struct {
TimeStep int64 `json:"timeStep,omitempty"`
ValuesCSV string `json:"valuesCSV,omitempty"`
Labels string `json:"labels,omitempty"`
Name string `json:"name,omitempty"`
}
// NodesQuery defines model for NodesQuery.
type NodesQuery struct {
Count int64 `json:"count,omitempty"`
Seed int64 `json:"seed,omitempty"`
Type NodesQueryType `json:"type,omitempty"`
}
// 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"`
}
// SimulationQuery defines model for SimulationQuery.
type SimulationQuery struct {
Config map[string]any `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 float64 `json:"noise"`
Speed float64 `json:"speed"`
Spread float64 `json:"spread"`
Type StreamingQueryType `json:"type"`
Url string `json:"url,omitempty"`
}
// 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"`
}
//go:embed query.types.json
var f embed.FS
// QueryTypeDefinitionListJSON returns the query type definitions
func QueryTypeDefinitionListJSON() (json.RawMessage, error) {
return f.ReadFile("query.types.json")
}