mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
449 lines
12 KiB
Go
449 lines
12 KiB
Go
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
|
|
//
|
|
// Generated by:
|
|
// public/app/plugins/gen.go
|
|
// Using jennies:
|
|
// PluginRegistryJenny
|
|
//
|
|
// Run 'make gen-cue' from repository root to regenerate.
|
|
|
|
package schemas
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"io/fs"
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
"testing/fstest"
|
|
|
|
"cuelang.org/go/cue"
|
|
"cuelang.org/go/cue/cuecontext"
|
|
"cuelang.org/go/cue/load"
|
|
)
|
|
|
|
var cueImportsPath = filepath.Join("packages", "grafana-schema", "src", "common")
|
|
var importPath = "github.com/grafana/grafana/packages/grafana-schema/src/common"
|
|
|
|
type ComposableKind struct {
|
|
Name string
|
|
Filename string
|
|
CueFile cue.Value
|
|
}
|
|
|
|
func GetComposableKinds() ([]ComposableKind, error) {
|
|
kinds := make([]ComposableKind, 0)
|
|
|
|
_, caller, _, _ := runtime.Caller(0)
|
|
root := filepath.Join(caller, "../../../..")
|
|
|
|
azuremonitorCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/datasource/azuremonitor/dataquery.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "azuremonitor",
|
|
Filename: "dataquery.cue",
|
|
CueFile: azuremonitorCue,
|
|
})
|
|
|
|
googlecloudmonitoringCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/datasource/cloud-monitoring/dataquery.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "googlecloudmonitoring",
|
|
Filename: "dataquery.cue",
|
|
CueFile: googlecloudmonitoringCue,
|
|
})
|
|
|
|
cloudwatchCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/datasource/cloudwatch/dataquery.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "cloudwatch",
|
|
Filename: "dataquery.cue",
|
|
CueFile: cloudwatchCue,
|
|
})
|
|
|
|
elasticsearchCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/datasource/elasticsearch/dataquery.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "elasticsearch",
|
|
Filename: "dataquery.cue",
|
|
CueFile: elasticsearchCue,
|
|
})
|
|
|
|
grafanapyroscopeCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/datasource/grafana-pyroscope-datasource/dataquery.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "grafanapyroscope",
|
|
Filename: "dataquery.cue",
|
|
CueFile: grafanapyroscopeCue,
|
|
})
|
|
|
|
lokiCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/datasource/loki/dataquery.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "loki",
|
|
Filename: "dataquery.cue",
|
|
CueFile: lokiCue,
|
|
})
|
|
|
|
parcaCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/datasource/parca/dataquery.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "parca",
|
|
Filename: "dataquery.cue",
|
|
CueFile: parcaCue,
|
|
})
|
|
|
|
tempoCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/datasource/tempo/dataquery.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "tempo",
|
|
Filename: "dataquery.cue",
|
|
CueFile: tempoCue,
|
|
})
|
|
|
|
annotationslistCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/annolist/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "annotationslist",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: annotationslistCue,
|
|
})
|
|
|
|
barchartCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/barchart/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "barchart",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: barchartCue,
|
|
})
|
|
|
|
bargaugeCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/bargauge/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "bargauge",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: bargaugeCue,
|
|
})
|
|
|
|
candlestickCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/candlestick/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "candlestick",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: candlestickCue,
|
|
})
|
|
|
|
canvasCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/canvas/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "canvas",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: canvasCue,
|
|
})
|
|
|
|
dashboardlistCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/dashlist/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "dashboardlist",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: dashboardlistCue,
|
|
})
|
|
|
|
datagridCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/datagrid/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "datagrid",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: datagridCue,
|
|
})
|
|
|
|
debugCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/debug/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "debug",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: debugCue,
|
|
})
|
|
|
|
gaugeCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/gauge/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "gauge",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: gaugeCue,
|
|
})
|
|
|
|
geomapCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/geomap/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "geomap",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: geomapCue,
|
|
})
|
|
|
|
heatmapCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/heatmap/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "heatmap",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: heatmapCue,
|
|
})
|
|
|
|
histogramCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/histogram/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "histogram",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: histogramCue,
|
|
})
|
|
|
|
logsCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/logs/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "logs",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: logsCue,
|
|
})
|
|
|
|
newsCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/news/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "news",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: newsCue,
|
|
})
|
|
|
|
nodegraphCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/nodeGraph/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "nodegraph",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: nodegraphCue,
|
|
})
|
|
|
|
piechartCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/piechart/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "piechart",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: piechartCue,
|
|
})
|
|
|
|
statCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/stat/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "stat",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: statCue,
|
|
})
|
|
|
|
statetimelineCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/state-timeline/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "statetimeline",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: statetimelineCue,
|
|
})
|
|
|
|
statushistoryCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/status-history/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "statushistory",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: statushistoryCue,
|
|
})
|
|
|
|
tableCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/table/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "table",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: tableCue,
|
|
})
|
|
|
|
textCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/text/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "text",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: textCue,
|
|
})
|
|
|
|
timeseriesCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/timeseries/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "timeseries",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: timeseriesCue,
|
|
})
|
|
|
|
trendCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/trend/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "trend",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: trendCue,
|
|
})
|
|
|
|
xychartCue, err := loadCueFileWithCommon(root, filepath.Join(root, "./public/app/plugins/panel/xychart/panelcfg.cue"))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
kinds = append(kinds, ComposableKind{
|
|
Name: "xychart",
|
|
Filename: "panelcfg.cue",
|
|
CueFile: xychartCue,
|
|
})
|
|
|
|
return kinds, nil
|
|
}
|
|
|
|
func loadCueFileWithCommon(root string, entrypoint string) (cue.Value, error) {
|
|
commonFS, err := mockCommonFS(root)
|
|
if err != nil {
|
|
fmt.Printf("cannot load common cue files: %s\n", err)
|
|
return cue.Value{}, err
|
|
}
|
|
|
|
overlay, err := buildOverlay(commonFS)
|
|
if err != nil {
|
|
fmt.Printf("Cannot build overlay: %s\n", err)
|
|
return cue.Value{}, err
|
|
}
|
|
|
|
bis := load.Instances([]string{entrypoint}, &load.Config{
|
|
ModuleRoot: "/",
|
|
Overlay: overlay,
|
|
})
|
|
|
|
values, err := cuecontext.New().BuildInstances(bis)
|
|
if err != nil {
|
|
fmt.Printf("Cannot build instance: %s\n", err)
|
|
return cue.Value{}, err
|
|
}
|
|
|
|
return values[0], nil
|
|
}
|
|
|
|
func mockCommonFS(root string) (fs.FS, error) {
|
|
path := filepath.Join(root, cueImportsPath)
|
|
dir, err := os.ReadDir(path)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("cannot open common cue files directory: %s", err)
|
|
}
|
|
|
|
prefix := "cue.mod/pkg/" + importPath
|
|
|
|
commonFS := fstest.MapFS{}
|
|
for _, d := range dir {
|
|
if d.IsDir() {
|
|
continue
|
|
}
|
|
|
|
readPath := filepath.Join(path, d.Name())
|
|
b, err := os.ReadFile(filepath.Clean(readPath))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
commonFS[filepath.Join(prefix, d.Name())] = &fstest.MapFile{Data: b}
|
|
}
|
|
|
|
return commonFS, nil
|
|
}
|
|
|
|
// It loads common cue files into the schema to be able to make import works
|
|
func buildOverlay(commonFS fs.FS) (map[string]load.Source, error) {
|
|
overlay := make(map[string]load.Source)
|
|
|
|
err := fs.WalkDir(commonFS, ".", func(path string, d fs.DirEntry, err error) error {
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if d.IsDir() {
|
|
return nil
|
|
}
|
|
|
|
f, err := commonFS.Open(path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer func() { _ = f.Close() }()
|
|
|
|
b, err := io.ReadAll(f)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
overlay[filepath.Join("/", path)] = load.FromBytes(b)
|
|
|
|
return nil
|
|
})
|
|
|
|
return overlay, err
|
|
}
|