kindsys: Include composable kinds and planned maturity in report (#60477)

kindsys: Include composable kinds + planned maturity
This commit is contained in:
sam boyer 2022-12-19 03:14:51 -05:00 committed by GitHub
parent 92d12fdefa
commit cc4d18f626
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 1086 additions and 152 deletions

View File

@ -70,7 +70,7 @@ gen-cue: ## Do all CUE/Thema code generation
go generate ./kinds/gen.go
go generate ./pkg/framework/coremodel
go generate ./public/app/plugins/gen.go
go generate ./kinds/report.go
go generate ./pkg/kindsys/report.go
gen-go: $(WIRE) gen-cue
@echo "generate go files"

View File

@ -1,97 +0,0 @@
//go:build ignore
// +build ignore
//go:generate go run report.go
package main
import (
"context"
"encoding/json"
"fmt"
"os"
"path/filepath"
"github.com/grafana/codejen"
"github.com/grafana/grafana/pkg/kindsys"
"github.com/grafana/grafana/pkg/registry/corekind"
)
const reportFileName = "report.json"
func main() {
report := buildKindStateReport()
reportJSON := elsedie(json.MarshalIndent(report, "", " "))("error generating json output")
path := filepath.Join(kindsys.DeclParentPath, reportFileName)
file := codejen.NewFile(path, reportJSON, reportJenny{})
filesystem := elsedie(file.ToFS())("error building in-memory file system")
cwd := elsedie(os.Getwd())("error getting working directory")
groot := filepath.Dir(cwd)
if _, set := os.LookupEnv("CODEGEN_VERIFY"); set {
if err := filesystem.Verify(context.Background(), groot); err != nil {
die(fmt.Errorf("generated code is out of sync with inputs:\n%s\nrun `make gen-cue` to regenerate", err))
}
} else if err := filesystem.Write(context.Background(), groot); err != nil {
die(fmt.Errorf("error while writing generated code to disk:\n%s", err))
}
}
type KindStateReport struct {
Core []kindsys.CoreStructuredProperties `json:"core"`
Raw []kindsys.RawProperties `json:"raw"`
Composable []kindsys.ComposableProperties `json:"composable"`
}
func emptyKindStateReport() KindStateReport {
return KindStateReport{
Core: make([]kindsys.CoreStructuredProperties, 0),
Raw: make([]kindsys.RawProperties, 0),
Composable: make([]kindsys.ComposableProperties, 0),
}
}
func buildKindStateReport() KindStateReport {
r := emptyKindStateReport()
b := corekind.NewBase(nil)
for _, k := range b.All() {
switch props := k.Props().(type) {
case kindsys.CoreStructuredProperties:
r.Core = append(r.Core, props)
case kindsys.RawProperties:
r.Raw = append(r.Raw, props)
case kindsys.ComposableProperties:
r.Composable = append(r.Composable, props)
}
}
return r
}
type reportJenny struct{}
func (reportJenny) JennyName() string {
return "ReportJenny"
}
func elsedie[T any](t T, err error) func(msg string) T {
if err != nil {
return func(msg string) T {
fmt.Fprintf(os.Stderr, "%s: %s\n", msg, err)
os.Exit(1)
return t
}
}
return func(msg string) T {
return t
}
}
func die(err error) {
fmt.Fprint(os.Stderr, err, "\n")
os.Exit(1)
}

View File

@ -1,54 +0,0 @@
{
"core": [
{
"name": "Dashboard",
"pluralName": "Dashboards",
"machineName": "dashboard",
"pluralMachineName": "dashboards",
"lineageIsGroup": false,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "Playlist",
"pluralName": "Playlists",
"machineName": "playlist",
"pluralMachineName": "playlists",
"lineageIsGroup": false,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "Team",
"pluralName": "Teams",
"machineName": "team",
"pluralMachineName": "teams",
"lineageIsGroup": false,
"maturity": "merged",
"currentVersion": [
0,
0
]
}
],
"raw": [
{
"name": "SVG",
"pluralName": "SVGs",
"machineName": "svg",
"pluralMachineName": "svgs",
"lineageIsGroup": false,
"maturity": "merged",
"extensions": [
"svg"
]
}
],
"composable": []
}

178
pkg/kindsys/report.go Normal file
View File

@ -0,0 +1,178 @@
//go:build ignore
// +build ignore
//go:generate go run report.go
package main
import (
"context"
"encoding/json"
"fmt"
"os"
"sort"
"strings"
"github.com/grafana/codejen"
"github.com/grafana/grafana/pkg/kindsys"
"github.com/grafana/grafana/pkg/plugins/pfs/corelist"
"github.com/grafana/grafana/pkg/registry/corekind"
)
const reportFileName = "report.json"
func main() {
report := buildKindStateReport()
reportJSON := elsedie(json.MarshalIndent(report, "", " "))("error generating json output")
file := codejen.NewFile(reportFileName, reportJSON, reportJenny{})
filesystem := elsedie(file.ToFS())("error building in-memory file system")
if _, set := os.LookupEnv("CODEGEN_VERIFY"); set {
if err := filesystem.Verify(context.Background(), ""); err != nil {
die(fmt.Errorf("generated code is out of sync with inputs:\n%s\nrun `make gen-cue` to regenerate", err))
}
} else if err := filesystem.Write(context.Background(), ""); err != nil {
die(fmt.Errorf("error while writing generated code to disk:\n%s", err))
}
}
// static list of planned core kinds so that we can inject ones that
// haven't been started on yet as "planned"
var plannedCoreKinds = []string {
"Dashboard",
"Playlist",
"Team",
"User",
"Folder",
"DataSource",
"APIKey",
"ServiceAccount",
"Thumb",
"Query",
"QueryHistory",
}
type KindStateReport struct {
Core []kindsys.CoreStructuredProperties `json:"core"`
Raw []kindsys.RawProperties `json:"raw"`
Composable []kindsys.ComposableProperties `json:"composable"`
}
func emptyKindStateReport() KindStateReport {
return KindStateReport{
Core: make([]kindsys.CoreStructuredProperties, 0),
Raw: make([]kindsys.RawProperties, 0),
Composable: make([]kindsys.ComposableProperties, 0),
}
}
func buildKindStateReport() KindStateReport {
r := emptyKindStateReport()
b := corekind.NewBase(nil)
seen := make(map[string]bool)
for _, k := range b.All() {
seen[k.Props().Common().Name] = true
switch props := k.Props().(type) {
case kindsys.CoreStructuredProperties:
r.Core = append(r.Core, props)
case kindsys.RawProperties:
r.Raw = append(r.Raw, props)
}
}
for _, kn := range plannedCoreKinds {
if seen[kn] {
continue
}
r.Core = append(r.Core, kindsys.CoreStructuredProperties{
CommonProperties: kindsys.CommonProperties{
Name: kn,
PluralName: kn + "s",
MachineName: machinize(kn),
PluralMachineName: machinize(kn) + "s",
Maturity: "planned",
},
})
}
all := kindsys.AllSlots(nil)
// TODO this is all hacks until #59001, which will unite plugins with kindsys
for _, tree := range corelist.New(nil) {
rp := tree.RootPlugin()
for _, slot := range all {
if may, _ := slot.ForPluginType(string(rp.Meta().Type)); may {
n := fmt.Sprintf("%s-%s", strings.Title(rp.Meta().Id), slot.Name())
props := kindsys.ComposableProperties{
CommonProperties: kindsys.CommonProperties{
Name: n,
PluralName: n + "s",
MachineName: machinize(n),
PluralMachineName: machinize(n) + "s",
LineageIsGroup: slot.IsGroup(),
Maturity: "planned",
},
}
if ck, has := rp.SlotImplementations()[slot.Name()]; has {
props.CommonProperties.Maturity = "merged"
props.CurrentVersion = ck.Latest().Version()
}
r.Composable = append(r.Composable, props)
}
}
}
sort.Slice(r.Core, func(i, j int) bool {
return r.Core[i].Common().Name < r.Core[j].Common().Name
})
sort.Slice(r.Composable, func(i, j int) bool {
return r.Composable[i].Common().Name < r.Composable[j].Common().Name
})
return r
}
func machinize(s string) string {
return strings.Map(func(r rune) rune {
switch {
case r >= 'a' && r <= 'z':
fallthrough
case r >= '0' && r <= '9':
fallthrough
case r == '_':
return r
case r >= 'A' && r <= 'Z':
return r + 32
case r == '-':
return '_'
default:
return -1
}
}, s)
}
type reportJenny struct{}
func (reportJenny) JennyName() string {
return "ReportJenny"
}
func elsedie[T any](t T, err error) func(msg string) T {
if err != nil {
return func(msg string) T {
fmt.Fprintf(os.Stderr, "%s: %s\n", msg, err)
os.Exit(1)
return t
}
}
return func(msg string) T {
return t
}
}
func die(err error) {
fmt.Fprint(os.Stderr, err, "\n")
os.Exit(1)
}

907
pkg/kindsys/report.json Normal file
View File

@ -0,0 +1,907 @@
{
"core": [
{
"name": "APIKey",
"pluralName": "APIKeys",
"machineName": "apikey",
"pluralMachineName": "apikeys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Dashboard",
"pluralName": "Dashboards",
"machineName": "dashboard",
"pluralMachineName": "dashboards",
"lineageIsGroup": false,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "DataSource",
"pluralName": "DataSources",
"machineName": "datasource",
"pluralMachineName": "datasources",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Folder",
"pluralName": "Folders",
"machineName": "folder",
"pluralMachineName": "folders",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Playlist",
"pluralName": "Playlists",
"machineName": "playlist",
"pluralMachineName": "playlists",
"lineageIsGroup": false,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "Query",
"pluralName": "Querys",
"machineName": "query",
"pluralMachineName": "querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "QueryHistory",
"pluralName": "QueryHistorys",
"machineName": "queryhistory",
"pluralMachineName": "queryhistorys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "ServiceAccount",
"pluralName": "ServiceAccounts",
"machineName": "serviceaccount",
"pluralMachineName": "serviceaccounts",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Team",
"pluralName": "Teams",
"machineName": "team",
"pluralMachineName": "teams",
"lineageIsGroup": false,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "Thumb",
"pluralName": "Thumbs",
"machineName": "thumb",
"pluralMachineName": "thumbs",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "User",
"pluralName": "Users",
"machineName": "user",
"pluralMachineName": "users",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
}
],
"raw": [
{
"name": "SVG",
"pluralName": "SVGs",
"machineName": "svg",
"pluralMachineName": "svgs",
"lineageIsGroup": false,
"maturity": "merged",
"extensions": [
"svg"
]
}
],
"composable": [
{
"name": "AlertGroups-Panel",
"pluralName": "AlertGroups-Panels",
"machineName": "alertgroups_panel",
"pluralMachineName": "alertgroups_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Alertlist-Panel",
"pluralName": "Alertlist-Panels",
"machineName": "alertlist_panel",
"pluralMachineName": "alertlist_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Alertmanager-DSOptions",
"pluralName": "Alertmanager-DSOptionss",
"machineName": "alertmanager_dsoptions",
"pluralMachineName": "alertmanager_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Alertmanager-Query",
"pluralName": "Alertmanager-Querys",
"machineName": "alertmanager_query",
"pluralMachineName": "alertmanager_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Annolist-Panel",
"pluralName": "Annolist-Panels",
"machineName": "annolist_panel",
"pluralMachineName": "annolist_panels",
"lineageIsGroup": true,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "Barchart-Panel",
"pluralName": "Barchart-Panels",
"machineName": "barchart_panel",
"pluralMachineName": "barchart_panels",
"lineageIsGroup": true,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "Bargauge-Panel",
"pluralName": "Bargauge-Panels",
"machineName": "bargauge_panel",
"pluralMachineName": "bargauge_panels",
"lineageIsGroup": true,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "Cloudwatch-DSOptions",
"pluralName": "Cloudwatch-DSOptionss",
"machineName": "cloudwatch_dsoptions",
"pluralMachineName": "cloudwatch_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Cloudwatch-Query",
"pluralName": "Cloudwatch-Querys",
"machineName": "cloudwatch_query",
"pluralMachineName": "cloudwatch_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Dashboard-DSOptions",
"pluralName": "Dashboard-DSOptionss",
"machineName": "dashboard_dsoptions",
"pluralMachineName": "dashboard_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Dashboard-Query",
"pluralName": "Dashboard-Querys",
"machineName": "dashboard_query",
"pluralMachineName": "dashboard_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Dashlist-Panel",
"pluralName": "Dashlist-Panels",
"machineName": "dashlist_panel",
"pluralMachineName": "dashlist_panels",
"lineageIsGroup": true,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "Debug-Panel",
"pluralName": "Debug-Panels",
"machineName": "debug_panel",
"pluralMachineName": "debug_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Elasticsearch-DSOptions",
"pluralName": "Elasticsearch-DSOptionss",
"machineName": "elasticsearch_dsoptions",
"pluralMachineName": "elasticsearch_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Elasticsearch-Query",
"pluralName": "Elasticsearch-Querys",
"machineName": "elasticsearch_query",
"pluralMachineName": "elasticsearch_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Flamegraph-Panel",
"pluralName": "Flamegraph-Panels",
"machineName": "flamegraph_panel",
"pluralMachineName": "flamegraph_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Gauge-Panel",
"pluralName": "Gauge-Panels",
"machineName": "gauge_panel",
"pluralMachineName": "gauge_panels",
"lineageIsGroup": true,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "Geomap-Panel",
"pluralName": "Geomap-Panels",
"machineName": "geomap_panel",
"pluralMachineName": "geomap_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Gettingstarted-Panel",
"pluralName": "Gettingstarted-Panels",
"machineName": "gettingstarted_panel",
"pluralMachineName": "gettingstarted_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Grafana-Azure-Monitor-Datasource-DSOptions",
"pluralName": "Grafana-Azure-Monitor-Datasource-DSOptionss",
"machineName": "grafana_azure_monitor_datasource_dsoptions",
"pluralMachineName": "grafana_azure_monitor_datasource_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Grafana-Azure-Monitor-Datasource-Query",
"pluralName": "Grafana-Azure-Monitor-Datasource-Querys",
"machineName": "grafana_azure_monitor_datasource_query",
"pluralMachineName": "grafana_azure_monitor_datasource_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Grafana-DSOptions",
"pluralName": "Grafana-DSOptionss",
"machineName": "grafana_dsoptions",
"pluralMachineName": "grafana_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Grafana-Query",
"pluralName": "Grafana-Querys",
"machineName": "grafana_query",
"pluralMachineName": "grafana_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Graph-Panel",
"pluralName": "Graph-Panels",
"machineName": "graph_panel",
"pluralMachineName": "graph_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Graphite-DSOptions",
"pluralName": "Graphite-DSOptionss",
"machineName": "graphite_dsoptions",
"pluralMachineName": "graphite_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Graphite-Query",
"pluralName": "Graphite-Querys",
"machineName": "graphite_query",
"pluralMachineName": "graphite_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Histogram-Panel",
"pluralName": "Histogram-Panels",
"machineName": "histogram_panel",
"pluralMachineName": "histogram_panels",
"lineageIsGroup": true,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "Icon-Panel",
"pluralName": "Icon-Panels",
"machineName": "icon_panel",
"pluralMachineName": "icon_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Jaeger-DSOptions",
"pluralName": "Jaeger-DSOptionss",
"machineName": "jaeger_dsoptions",
"pluralMachineName": "jaeger_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Jaeger-Query",
"pluralName": "Jaeger-Querys",
"machineName": "jaeger_query",
"pluralMachineName": "jaeger_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Live-Panel",
"pluralName": "Live-Panels",
"machineName": "live_panel",
"pluralMachineName": "live_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Logs-Panel",
"pluralName": "Logs-Panels",
"machineName": "logs_panel",
"pluralMachineName": "logs_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Loki-DSOptions",
"pluralName": "Loki-DSOptionss",
"machineName": "loki_dsoptions",
"pluralMachineName": "loki_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Loki-Query",
"pluralName": "Loki-Querys",
"machineName": "loki_query",
"pluralMachineName": "loki_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Mssql-DSOptions",
"pluralName": "Mssql-DSOptionss",
"machineName": "mssql_dsoptions",
"pluralMachineName": "mssql_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Mssql-Query",
"pluralName": "Mssql-Querys",
"machineName": "mssql_query",
"pluralMachineName": "mssql_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Mysql-DSOptions",
"pluralName": "Mysql-DSOptionss",
"machineName": "mysql_dsoptions",
"pluralMachineName": "mysql_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Mysql-Query",
"pluralName": "Mysql-Querys",
"machineName": "mysql_query",
"pluralMachineName": "mysql_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "News-Panel",
"pluralName": "News-Panels",
"machineName": "news_panel",
"pluralMachineName": "news_panels",
"lineageIsGroup": true,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "NodeGraph-Panel",
"pluralName": "NodeGraph-Panels",
"machineName": "nodegraph_panel",
"pluralMachineName": "nodegraph_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Parca-DSOptions",
"pluralName": "Parca-DSOptionss",
"machineName": "parca_dsoptions",
"pluralMachineName": "parca_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Parca-Query",
"pluralName": "Parca-Querys",
"machineName": "parca_query",
"pluralMachineName": "parca_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Phlare-DSOptions",
"pluralName": "Phlare-DSOptionss",
"machineName": "phlare_dsoptions",
"pluralMachineName": "phlare_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Phlare-Query",
"pluralName": "Phlare-Querys",
"machineName": "phlare_query",
"pluralMachineName": "phlare_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Piechart-Panel",
"pluralName": "Piechart-Panels",
"machineName": "piechart_panel",
"pluralMachineName": "piechart_panels",
"lineageIsGroup": true,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "Postgres-DSOptions",
"pluralName": "Postgres-DSOptionss",
"machineName": "postgres_dsoptions",
"pluralMachineName": "postgres_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Postgres-Query",
"pluralName": "Postgres-Querys",
"machineName": "postgres_query",
"pluralMachineName": "postgres_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Prometheus-DSOptions",
"pluralName": "Prometheus-DSOptionss",
"machineName": "prometheus_dsoptions",
"pluralMachineName": "prometheus_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Prometheus-Query",
"pluralName": "Prometheus-Querys",
"machineName": "prometheus_query",
"pluralMachineName": "prometheus_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Stackdriver-DSOptions",
"pluralName": "Stackdriver-DSOptionss",
"machineName": "stackdriver_dsoptions",
"pluralMachineName": "stackdriver_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Stackdriver-Query",
"pluralName": "Stackdriver-Querys",
"machineName": "stackdriver_query",
"pluralMachineName": "stackdriver_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Stat-Panel",
"pluralName": "Stat-Panels",
"machineName": "stat_panel",
"pluralMachineName": "stat_panels",
"lineageIsGroup": true,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "Table-Old-Panel",
"pluralName": "Table-Old-Panels",
"machineName": "table_old_panel",
"pluralMachineName": "table_old_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Tempo-DSOptions",
"pluralName": "Tempo-DSOptionss",
"machineName": "tempo_dsoptions",
"pluralMachineName": "tempo_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Tempo-Query",
"pluralName": "Tempo-Querys",
"machineName": "tempo_query",
"pluralMachineName": "tempo_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Testdata-DSOptions",
"pluralName": "Testdata-DSOptionss",
"machineName": "testdata_dsoptions",
"pluralMachineName": "testdata_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Testdata-Query",
"pluralName": "Testdata-Querys",
"machineName": "testdata_query",
"pluralMachineName": "testdata_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Text-Panel",
"pluralName": "Text-Panels",
"machineName": "text_panel",
"pluralMachineName": "text_panels",
"lineageIsGroup": true,
"maturity": "merged",
"currentVersion": [
0,
0
]
},
{
"name": "Traces-Panel",
"pluralName": "Traces-Panels",
"machineName": "traces_panel",
"pluralMachineName": "traces_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Welcome-Panel",
"pluralName": "Welcome-Panels",
"machineName": "welcome_panel",
"pluralMachineName": "welcome_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Xychart-Panel",
"pluralName": "Xychart-Panels",
"machineName": "xychart_panel",
"pluralMachineName": "xychart_panels",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Zipkin-DSOptions",
"pluralName": "Zipkin-DSOptionss",
"machineName": "zipkin_dsoptions",
"pluralMachineName": "zipkin_dsoptionss",
"lineageIsGroup": true,
"maturity": "planned",
"currentVersion": [
0,
0
]
},
{
"name": "Zipkin-Query",
"pluralName": "Zipkin-Querys",
"machineName": "zipkin_query",
"pluralMachineName": "zipkin_querys",
"lineageIsGroup": false,
"maturity": "planned",
"currentVersion": [
0,
0
]
}
]
}