mirror of https://github.com/grafana/grafana.git
[release-12.0.1] K8s: Dashboards: Mark as v1beta1 (#104422)
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
This commit is contained in:
parent
584593c411
commit
ed408985fa
12
Makefile
12
Makefile
|
@ -148,12 +148,12 @@ gen-cue: ## Do all CUE/Thema code generation
|
||||||
@echo "generate code from .cue files"
|
@echo "generate code from .cue files"
|
||||||
go generate ./kinds/gen.go
|
go generate ./kinds/gen.go
|
||||||
go generate ./public/app/plugins/gen.go
|
go generate ./public/app/plugins/gen.go
|
||||||
@echo "// This file is managed by Grafana - DO NOT EDIT MANUALLY" > apps/dashboard/pkg/apis/dashboard/v1alpha1/dashboard_kind.cue
|
@echo "// This file is managed by Grafana - DO NOT EDIT MANUALLY" > apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue
|
||||||
@echo "// Source: kinds/dashboard/dashboard_kind.cue" >> apps/dashboard/pkg/apis/dashboard/v1alpha1/dashboard_kind.cue
|
@echo "// Source: kinds/dashboard/dashboard_kind.cue" >> apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue
|
||||||
@echo "// To sync changes, run: make gen-cue" >> apps/dashboard/pkg/apis/dashboard/v1alpha1/dashboard_kind.cue
|
@echo "// To sync changes, run: make gen-cue" >> apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue
|
||||||
@echo "" >> apps/dashboard/pkg/apis/dashboard/v1alpha1/dashboard_kind.cue
|
@echo "" >> apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue
|
||||||
@cat kinds/dashboard/dashboard_kind.cue >> apps/dashboard/pkg/apis/dashboard/v1alpha1/dashboard_kind.cue
|
@cat kinds/dashboard/dashboard_kind.cue >> apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue
|
||||||
@cp apps/dashboard/pkg/apis/dashboard/v1alpha1/dashboard_kind.cue apps/dashboard/pkg/apis/dashboard/v0alpha1/dashboard_kind.cue
|
@cp apps/dashboard/pkg/apis/dashboard/v1beta1/dashboard_kind.cue apps/dashboard/pkg/apis/dashboard/v0alpha1/dashboard_kind.cue
|
||||||
|
|
||||||
|
|
||||||
.PHONY: gen-cuev2
|
.PHONY: gen-cuev2
|
||||||
|
|
|
@ -39,8 +39,8 @@ post-generate-cleanup: ## Clean up the generated code
|
||||||
@cp ./tshack/v0alpha1_spec_gen.ts ../../packages/grafana-schema/src/schema/dashboard/v0alpha1/types.spec.gen.ts
|
@cp ./tshack/v0alpha1_spec_gen.ts ../../packages/grafana-schema/src/schema/dashboard/v0alpha1/types.spec.gen.ts
|
||||||
|
|
||||||
# Same for v1alpha1
|
# Same for v1alpha1
|
||||||
@rm ../../packages/grafana-schema/src/schema/dashboard/v1alpha1/types.spec.gen.ts
|
@rm ../../packages/grafana-schema/src/schema/dashboard/v1beta1/types.spec.gen.ts
|
||||||
@cp ./tshack/v1alpha1_spec_gen.ts ../../packages/grafana-schema/src/schema/dashboard/v1alpha1/types.spec.gen.ts
|
@cp ./tshack/v1alpha1_spec_gen.ts ../../packages/grafana-schema/src/schema/dashboard/v1beta1/types.spec.gen.ts
|
||||||
|
|
||||||
# Remove auto-generated DeepCopy and DeepCopyInto methods for Spec for v0alpha1.
|
# Remove auto-generated DeepCopy and DeepCopyInto methods for Spec for v0alpha1.
|
||||||
@sed -e '/\/\/ DeepCopy creates a full deep copy of Spec/,+5d' ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go > ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go.tmp
|
@sed -e '/\/\/ DeepCopy creates a full deep copy of Spec/,+5d' ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go > ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go.tmp
|
||||||
|
@ -49,10 +49,10 @@ post-generate-cleanup: ## Clean up the generated code
|
||||||
@mv ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go.tmp2 ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go
|
@mv ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go.tmp2 ./pkg/apis/dashboard/v0alpha1/dashboard_object_gen.go
|
||||||
|
|
||||||
# Remove auto-generated DeepCopy and DeepCopyInto methods for Spec for v1alpha1.
|
# Remove auto-generated DeepCopy and DeepCopyInto methods for Spec for v1alpha1.
|
||||||
@sed -e '/\/\/ DeepCopy creates a full deep copy of Spec/,+5d' ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go > ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go.tmp
|
@sed -e '/\/\/ DeepCopy creates a full deep copy of Spec/,+5d' ./pkg/apis/dashboard/v1beta1/dashboard_object_gen.go > ./pkg/apis/dashboard/v1beta1/dashboard_object_gen.go.tmp
|
||||||
@sed -e '/\/\/ DeepCopyInto deep copies Spec into another Spec object/,+3d' ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go.tmp > ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go.tmp2
|
@sed -e '/\/\/ DeepCopyInto deep copies Spec into another Spec object/,+3d' ./pkg/apis/dashboard/v1beta1/dashboard_object_gen.go.tmp > ./pkg/apis/dashboard/v1beta1/dashboard_object_gen.go.tmp2
|
||||||
@rm ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go.tmp
|
@rm ./pkg/apis/dashboard/v1beta1/dashboard_object_gen.go.tmp
|
||||||
@mv ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go.tmp2 ./pkg/apis/dashboard/v1alpha1/dashboard_object_gen.go
|
@mv ./pkg/apis/dashboard/v1beta1/dashboard_object_gen.go.tmp2 ./pkg/apis/dashboard/v1beta1/dashboard_object_gen.go
|
||||||
|
|
||||||
# Copy dashboard/v2alpha1 spec so we can use it for schema validation
|
# Copy dashboard/v2alpha1 spec so we can use it for schema validation
|
||||||
@echo "// This file is managed by grafana-app-sdk - DO NOT EDIT MANUALLY" > ./pkg/apis/dashboard/v2alpha1/dashboard_spec.cue
|
@echo "// This file is managed by grafana-app-sdk - DO NOT EDIT MANUALLY" > ./pkg/apis/dashboard/v2alpha1/dashboard_spec.cue
|
||||||
|
|
|
@ -2,7 +2,7 @@ package kinds
|
||||||
|
|
||||||
import (
|
import (
|
||||||
v0 "github.com/grafana/grafana/sdkkinds/dashboard/v0alpha1"
|
v0 "github.com/grafana/grafana/sdkkinds/dashboard/v0alpha1"
|
||||||
v1 "github.com/grafana/grafana/sdkkinds/dashboard/v1alpha1"
|
v1 "github.com/grafana/grafana/sdkkinds/dashboard/v1beta1"
|
||||||
v2 "github.com/grafana/grafana/sdkkinds/dashboard/v2alpha1"
|
v2 "github.com/grafana/grafana/sdkkinds/dashboard/v2alpha1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ ConversionStatus: {
|
||||||
dashboard: {
|
dashboard: {
|
||||||
kind: "Dashboard"
|
kind: "Dashboard"
|
||||||
pluralName: "Dashboards"
|
pluralName: "Dashboards"
|
||||||
current: "v0alpha1"
|
current: "v1beta1"
|
||||||
|
|
||||||
codegen: {
|
codegen: {
|
||||||
ts: {
|
ts: {
|
||||||
|
@ -55,7 +55,7 @@ dashboard: {
|
||||||
status: DashboardStatus
|
status: DashboardStatus
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"v1alpha1": {
|
"v1beta1": {
|
||||||
schema: {
|
schema: {
|
||||||
spec: v1.DashboardSpec
|
spec: v1.DashboardSpec
|
||||||
status: DashboardStatus
|
status: DashboardStatus
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
// TODO: this outputs nothing.
|
// TODO: this outputs nothing.
|
||||||
// For now, we use unstructured for the spec,
|
// For now, we use unstructured for the spec,
|
|
@ -1,175 +0,0 @@
|
||||||
//go:build !ignore_autogenerated
|
|
||||||
// +build !ignore_autogenerated
|
|
||||||
|
|
||||||
// SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
|
|
||||||
// Code generated by conversion-gen. DO NOT EDIT.
|
|
||||||
|
|
||||||
package v1alpha1
|
|
||||||
|
|
||||||
import (
|
|
||||||
url "net/url"
|
|
||||||
unsafe "unsafe"
|
|
||||||
|
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard"
|
|
||||||
conversion "k8s.io/apimachinery/pkg/conversion"
|
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
localSchemeBuilder.Register(RegisterConversions)
|
|
||||||
}
|
|
||||||
|
|
||||||
// RegisterConversions adds conversion functions to the given scheme.
|
|
||||||
// Public to allow building arbitrary schemes.
|
|
||||||
func RegisterConversions(s *runtime.Scheme) error {
|
|
||||||
if err := s.AddGeneratedConversionFunc((*AnnotationActions)(nil), (*dashboard.AnnotationActions)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
|
||||||
return Convert_v1alpha1_AnnotationActions_To_dashboard_AnnotationActions(a.(*AnnotationActions), b.(*dashboard.AnnotationActions), scope)
|
|
||||||
}); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := s.AddGeneratedConversionFunc((*dashboard.AnnotationActions)(nil), (*AnnotationActions)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
|
||||||
return Convert_dashboard_AnnotationActions_To_v1alpha1_AnnotationActions(a.(*dashboard.AnnotationActions), b.(*AnnotationActions), scope)
|
|
||||||
}); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := s.AddGeneratedConversionFunc((*AnnotationPermission)(nil), (*dashboard.AnnotationPermission)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
|
||||||
return Convert_v1alpha1_AnnotationPermission_To_dashboard_AnnotationPermission(a.(*AnnotationPermission), b.(*dashboard.AnnotationPermission), scope)
|
|
||||||
}); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := s.AddGeneratedConversionFunc((*dashboard.AnnotationPermission)(nil), (*AnnotationPermission)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
|
||||||
return Convert_dashboard_AnnotationPermission_To_v1alpha1_AnnotationPermission(a.(*dashboard.AnnotationPermission), b.(*AnnotationPermission), scope)
|
|
||||||
}); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := s.AddGeneratedConversionFunc((*DashboardAccess)(nil), (*dashboard.DashboardAccess)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
|
||||||
return Convert_v1alpha1_DashboardAccess_To_dashboard_DashboardAccess(a.(*DashboardAccess), b.(*dashboard.DashboardAccess), scope)
|
|
||||||
}); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := s.AddGeneratedConversionFunc((*dashboard.DashboardAccess)(nil), (*DashboardAccess)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
|
||||||
return Convert_dashboard_DashboardAccess_To_v1alpha1_DashboardAccess(a.(*dashboard.DashboardAccess), b.(*DashboardAccess), scope)
|
|
||||||
}); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := s.AddGeneratedConversionFunc((*url.Values)(nil), (*VersionsQueryOptions)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
|
||||||
return Convert_url_Values_To_v1alpha1_VersionsQueryOptions(a.(*url.Values), b.(*VersionsQueryOptions), scope)
|
|
||||||
}); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func autoConvert_v1alpha1_AnnotationActions_To_dashboard_AnnotationActions(in *AnnotationActions, out *dashboard.AnnotationActions, s conversion.Scope) error {
|
|
||||||
out.CanAdd = in.CanAdd
|
|
||||||
out.CanEdit = in.CanEdit
|
|
||||||
out.CanDelete = in.CanDelete
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert_v1alpha1_AnnotationActions_To_dashboard_AnnotationActions is an autogenerated conversion function.
|
|
||||||
func Convert_v1alpha1_AnnotationActions_To_dashboard_AnnotationActions(in *AnnotationActions, out *dashboard.AnnotationActions, s conversion.Scope) error {
|
|
||||||
return autoConvert_v1alpha1_AnnotationActions_To_dashboard_AnnotationActions(in, out, s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func autoConvert_dashboard_AnnotationActions_To_v1alpha1_AnnotationActions(in *dashboard.AnnotationActions, out *AnnotationActions, s conversion.Scope) error {
|
|
||||||
out.CanAdd = in.CanAdd
|
|
||||||
out.CanEdit = in.CanEdit
|
|
||||||
out.CanDelete = in.CanDelete
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert_dashboard_AnnotationActions_To_v1alpha1_AnnotationActions is an autogenerated conversion function.
|
|
||||||
func Convert_dashboard_AnnotationActions_To_v1alpha1_AnnotationActions(in *dashboard.AnnotationActions, out *AnnotationActions, s conversion.Scope) error {
|
|
||||||
return autoConvert_dashboard_AnnotationActions_To_v1alpha1_AnnotationActions(in, out, s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func autoConvert_v1alpha1_AnnotationPermission_To_dashboard_AnnotationPermission(in *AnnotationPermission, out *dashboard.AnnotationPermission, s conversion.Scope) error {
|
|
||||||
if err := Convert_v1alpha1_AnnotationActions_To_dashboard_AnnotationActions(&in.Dashboard, &out.Dashboard, s); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := Convert_v1alpha1_AnnotationActions_To_dashboard_AnnotationActions(&in.Organization, &out.Organization, s); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert_v1alpha1_AnnotationPermission_To_dashboard_AnnotationPermission is an autogenerated conversion function.
|
|
||||||
func Convert_v1alpha1_AnnotationPermission_To_dashboard_AnnotationPermission(in *AnnotationPermission, out *dashboard.AnnotationPermission, s conversion.Scope) error {
|
|
||||||
return autoConvert_v1alpha1_AnnotationPermission_To_dashboard_AnnotationPermission(in, out, s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func autoConvert_dashboard_AnnotationPermission_To_v1alpha1_AnnotationPermission(in *dashboard.AnnotationPermission, out *AnnotationPermission, s conversion.Scope) error {
|
|
||||||
if err := Convert_dashboard_AnnotationActions_To_v1alpha1_AnnotationActions(&in.Dashboard, &out.Dashboard, s); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := Convert_dashboard_AnnotationActions_To_v1alpha1_AnnotationActions(&in.Organization, &out.Organization, s); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert_dashboard_AnnotationPermission_To_v1alpha1_AnnotationPermission is an autogenerated conversion function.
|
|
||||||
func Convert_dashboard_AnnotationPermission_To_v1alpha1_AnnotationPermission(in *dashboard.AnnotationPermission, out *AnnotationPermission, s conversion.Scope) error {
|
|
||||||
return autoConvert_dashboard_AnnotationPermission_To_v1alpha1_AnnotationPermission(in, out, s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func autoConvert_v1alpha1_DashboardAccess_To_dashboard_DashboardAccess(in *DashboardAccess, out *dashboard.DashboardAccess, s conversion.Scope) error {
|
|
||||||
out.Slug = in.Slug
|
|
||||||
out.Url = in.Url
|
|
||||||
out.CanSave = in.CanSave
|
|
||||||
out.CanEdit = in.CanEdit
|
|
||||||
out.CanAdmin = in.CanAdmin
|
|
||||||
out.CanStar = in.CanStar
|
|
||||||
out.CanDelete = in.CanDelete
|
|
||||||
out.AnnotationsPermissions = (*dashboard.AnnotationPermission)(unsafe.Pointer(in.AnnotationsPermissions))
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert_v1alpha1_DashboardAccess_To_dashboard_DashboardAccess is an autogenerated conversion function.
|
|
||||||
func Convert_v1alpha1_DashboardAccess_To_dashboard_DashboardAccess(in *DashboardAccess, out *dashboard.DashboardAccess, s conversion.Scope) error {
|
|
||||||
return autoConvert_v1alpha1_DashboardAccess_To_dashboard_DashboardAccess(in, out, s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func autoConvert_dashboard_DashboardAccess_To_v1alpha1_DashboardAccess(in *dashboard.DashboardAccess, out *DashboardAccess, s conversion.Scope) error {
|
|
||||||
out.Slug = in.Slug
|
|
||||||
out.Url = in.Url
|
|
||||||
out.CanSave = in.CanSave
|
|
||||||
out.CanEdit = in.CanEdit
|
|
||||||
out.CanAdmin = in.CanAdmin
|
|
||||||
out.CanStar = in.CanStar
|
|
||||||
out.CanDelete = in.CanDelete
|
|
||||||
out.AnnotationsPermissions = (*AnnotationPermission)(unsafe.Pointer(in.AnnotationsPermissions))
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert_dashboard_DashboardAccess_To_v1alpha1_DashboardAccess is an autogenerated conversion function.
|
|
||||||
func Convert_dashboard_DashboardAccess_To_v1alpha1_DashboardAccess(in *dashboard.DashboardAccess, out *DashboardAccess, s conversion.Scope) error {
|
|
||||||
return autoConvert_dashboard_DashboardAccess_To_v1alpha1_DashboardAccess(in, out, s)
|
|
||||||
}
|
|
||||||
|
|
||||||
func autoConvert_url_Values_To_v1alpha1_VersionsQueryOptions(in *url.Values, out *VersionsQueryOptions, s conversion.Scope) error {
|
|
||||||
// WARNING: Field TypeMeta does not have json tag, skipping.
|
|
||||||
|
|
||||||
if values, ok := map[string][]string(*in)["path"]; ok && len(values) > 0 {
|
|
||||||
if err := runtime.Convert_Slice_string_To_string(&values, &out.Path, s); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
out.Path = ""
|
|
||||||
}
|
|
||||||
if values, ok := map[string][]string(*in)["version"]; ok && len(values) > 0 {
|
|
||||||
if err := runtime.Convert_Slice_string_To_int64(&values, &out.Version, s); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
out.Version = 0
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert_url_Values_To_v1alpha1_VersionsQueryOptions is an autogenerated conversion function.
|
|
||||||
func Convert_url_Values_To_v1alpha1_VersionsQueryOptions(in *url.Values, out *VersionsQueryOptions, s conversion.Scope) error {
|
|
||||||
return autoConvert_url_Values_To_v1alpha1_VersionsQueryOptions(in, out, s)
|
|
||||||
}
|
|
|
@ -1,4 +1,4 @@
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
import "k8s.io/apimachinery/pkg/runtime/schema"
|
import "k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ const (
|
||||||
// Group is the API group used by all kinds in this package
|
// Group is the API group used by all kinds in this package
|
||||||
Group = "dashboard.grafana.app"
|
Group = "dashboard.grafana.app"
|
||||||
// Version is the API version used by all kinds in this package
|
// Version is the API version used by all kinds in this package
|
||||||
Version = "v1alpha1"
|
Version = "v1beta1"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
|
@ -2,7 +2,7 @@
|
||||||
// Code generated by grafana-app-sdk. DO NOT EDIT.
|
// Code generated by grafana-app-sdk. DO NOT EDIT.
|
||||||
//
|
//
|
||||||
|
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
|
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
time "time"
|
time "time"
|
|
@ -2,7 +2,7 @@
|
||||||
// Code generated by grafana-app-sdk. DO NOT EDIT.
|
// Code generated by grafana-app-sdk. DO NOT EDIT.
|
||||||
//
|
//
|
||||||
|
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
|
@ -2,7 +2,7 @@
|
||||||
// Code generated by grafana-app-sdk. DO NOT EDIT.
|
// Code generated by grafana-app-sdk. DO NOT EDIT.
|
||||||
//
|
//
|
||||||
|
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/grafana/grafana-app-sdk/resource"
|
"github.com/grafana/grafana-app-sdk/resource"
|
||||||
|
@ -10,7 +10,7 @@ import (
|
||||||
|
|
||||||
// schema is unexported to prevent accidental overwrites
|
// schema is unexported to prevent accidental overwrites
|
||||||
var (
|
var (
|
||||||
schemaDashboard = resource.NewSimpleSchema("dashboard.grafana.app", "v1alpha1", &Dashboard{}, &DashboardList{}, resource.WithKind("Dashboard"),
|
schemaDashboard = resource.NewSimpleSchema("dashboard.grafana.app", "v1beta1", &Dashboard{}, &DashboardList{}, resource.WithKind("Dashboard"),
|
||||||
resource.WithPlural("dashboards"), resource.WithScope(resource.NamespacedScope))
|
resource.WithPlural("dashboards"), resource.WithScope(resource.NamespacedScope))
|
||||||
kindDashboard = resource.Kind{
|
kindDashboard = resource.Kind{
|
||||||
Schema: schemaDashboard,
|
Schema: schemaDashboard,
|
|
@ -1,4 +1,4 @@
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
import common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
import common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
|
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha1
|
package v1beta1
|
|
@ -1,6 +1,6 @@
|
||||||
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
|
// Code generated - EDITING IS FUTILE. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
// ConversionStatus is the status of the conversion of the dashboard.
|
// ConversionStatus is the status of the conversion of the dashboard.
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=true
|
|
@ -7,4 +7,4 @@
|
||||||
// because grafana-app-sdk already provides deepcopy functions.
|
// because grafana-app-sdk already provides deepcopy functions.
|
||||||
// Kinds which are not generated by the SDK are explicitly opted in to deepcopy generation.
|
// Kinds which are not generated by the SDK are explicitly opted in to deepcopy generation.
|
||||||
|
|
||||||
package v1alpha1 // import "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
package v1beta1 // import "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
|
@ -1,4 +1,4 @@
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
@ -13,7 +13,7 @@ import (
|
||||||
|
|
||||||
const (
|
const (
|
||||||
GROUP = "dashboard.grafana.app"
|
GROUP = "dashboard.grafana.app"
|
||||||
VERSION = "v1alpha1"
|
VERSION = "v1beta1"
|
||||||
APIVERSION = GROUP + "/" + VERSION
|
APIVERSION = GROUP + "/" + VERSION
|
||||||
|
|
||||||
// Resource constants
|
// Resource constants
|
|
@ -1,4 +1,4 @@
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
@ -1,4 +1,4 @@
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
_ "embed"
|
_ "embed"
|
||||||
|
@ -13,6 +13,7 @@ import (
|
||||||
"cuelang.org/go/cue/cuecontext"
|
"cuelang.org/go/cue/cuecontext"
|
||||||
"cuelang.org/go/cue/errors"
|
"cuelang.org/go/cue/errors"
|
||||||
cuejson "cuelang.org/go/encoding/json"
|
cuejson "cuelang.org/go/encoding/json"
|
||||||
|
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
|
"github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
|
||||||
)
|
)
|
||||||
|
|
|
@ -0,0 +1,175 @@
|
||||||
|
//go:build !ignore_autogenerated
|
||||||
|
// +build !ignore_autogenerated
|
||||||
|
|
||||||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
// Code generated by conversion-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1beta1
|
||||||
|
|
||||||
|
import (
|
||||||
|
url "net/url"
|
||||||
|
unsafe "unsafe"
|
||||||
|
|
||||||
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard"
|
||||||
|
conversion "k8s.io/apimachinery/pkg/conversion"
|
||||||
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
localSchemeBuilder.Register(RegisterConversions)
|
||||||
|
}
|
||||||
|
|
||||||
|
// RegisterConversions adds conversion functions to the given scheme.
|
||||||
|
// Public to allow building arbitrary schemes.
|
||||||
|
func RegisterConversions(s *runtime.Scheme) error {
|
||||||
|
if err := s.AddGeneratedConversionFunc((*AnnotationActions)(nil), (*dashboard.AnnotationActions)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||||
|
return Convert_v1beta1_AnnotationActions_To_dashboard_AnnotationActions(a.(*AnnotationActions), b.(*dashboard.AnnotationActions), scope)
|
||||||
|
}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := s.AddGeneratedConversionFunc((*dashboard.AnnotationActions)(nil), (*AnnotationActions)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||||
|
return Convert_dashboard_AnnotationActions_To_v1beta1_AnnotationActions(a.(*dashboard.AnnotationActions), b.(*AnnotationActions), scope)
|
||||||
|
}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := s.AddGeneratedConversionFunc((*AnnotationPermission)(nil), (*dashboard.AnnotationPermission)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||||
|
return Convert_v1beta1_AnnotationPermission_To_dashboard_AnnotationPermission(a.(*AnnotationPermission), b.(*dashboard.AnnotationPermission), scope)
|
||||||
|
}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := s.AddGeneratedConversionFunc((*dashboard.AnnotationPermission)(nil), (*AnnotationPermission)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||||
|
return Convert_dashboard_AnnotationPermission_To_v1beta1_AnnotationPermission(a.(*dashboard.AnnotationPermission), b.(*AnnotationPermission), scope)
|
||||||
|
}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := s.AddGeneratedConversionFunc((*DashboardAccess)(nil), (*dashboard.DashboardAccess)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||||
|
return Convert_v1beta1_DashboardAccess_To_dashboard_DashboardAccess(a.(*DashboardAccess), b.(*dashboard.DashboardAccess), scope)
|
||||||
|
}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := s.AddGeneratedConversionFunc((*dashboard.DashboardAccess)(nil), (*DashboardAccess)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||||
|
return Convert_dashboard_DashboardAccess_To_v1beta1_DashboardAccess(a.(*dashboard.DashboardAccess), b.(*DashboardAccess), scope)
|
||||||
|
}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := s.AddGeneratedConversionFunc((*url.Values)(nil), (*VersionsQueryOptions)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||||
|
return Convert_url_Values_To_v1beta1_VersionsQueryOptions(a.(*url.Values), b.(*VersionsQueryOptions), scope)
|
||||||
|
}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_v1beta1_AnnotationActions_To_dashboard_AnnotationActions(in *AnnotationActions, out *dashboard.AnnotationActions, s conversion.Scope) error {
|
||||||
|
out.CanAdd = in.CanAdd
|
||||||
|
out.CanEdit = in.CanEdit
|
||||||
|
out.CanDelete = in.CanDelete
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert_v1beta1_AnnotationActions_To_dashboard_AnnotationActions is an autogenerated conversion function.
|
||||||
|
func Convert_v1beta1_AnnotationActions_To_dashboard_AnnotationActions(in *AnnotationActions, out *dashboard.AnnotationActions, s conversion.Scope) error {
|
||||||
|
return autoConvert_v1beta1_AnnotationActions_To_dashboard_AnnotationActions(in, out, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_dashboard_AnnotationActions_To_v1beta1_AnnotationActions(in *dashboard.AnnotationActions, out *AnnotationActions, s conversion.Scope) error {
|
||||||
|
out.CanAdd = in.CanAdd
|
||||||
|
out.CanEdit = in.CanEdit
|
||||||
|
out.CanDelete = in.CanDelete
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert_dashboard_AnnotationActions_To_v1beta1_AnnotationActions is an autogenerated conversion function.
|
||||||
|
func Convert_dashboard_AnnotationActions_To_v1beta1_AnnotationActions(in *dashboard.AnnotationActions, out *AnnotationActions, s conversion.Scope) error {
|
||||||
|
return autoConvert_dashboard_AnnotationActions_To_v1beta1_AnnotationActions(in, out, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_v1beta1_AnnotationPermission_To_dashboard_AnnotationPermission(in *AnnotationPermission, out *dashboard.AnnotationPermission, s conversion.Scope) error {
|
||||||
|
if err := Convert_v1beta1_AnnotationActions_To_dashboard_AnnotationActions(&in.Dashboard, &out.Dashboard, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := Convert_v1beta1_AnnotationActions_To_dashboard_AnnotationActions(&in.Organization, &out.Organization, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert_v1beta1_AnnotationPermission_To_dashboard_AnnotationPermission is an autogenerated conversion function.
|
||||||
|
func Convert_v1beta1_AnnotationPermission_To_dashboard_AnnotationPermission(in *AnnotationPermission, out *dashboard.AnnotationPermission, s conversion.Scope) error {
|
||||||
|
return autoConvert_v1beta1_AnnotationPermission_To_dashboard_AnnotationPermission(in, out, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_dashboard_AnnotationPermission_To_v1beta1_AnnotationPermission(in *dashboard.AnnotationPermission, out *AnnotationPermission, s conversion.Scope) error {
|
||||||
|
if err := Convert_dashboard_AnnotationActions_To_v1beta1_AnnotationActions(&in.Dashboard, &out.Dashboard, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := Convert_dashboard_AnnotationActions_To_v1beta1_AnnotationActions(&in.Organization, &out.Organization, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert_dashboard_AnnotationPermission_To_v1beta1_AnnotationPermission is an autogenerated conversion function.
|
||||||
|
func Convert_dashboard_AnnotationPermission_To_v1beta1_AnnotationPermission(in *dashboard.AnnotationPermission, out *AnnotationPermission, s conversion.Scope) error {
|
||||||
|
return autoConvert_dashboard_AnnotationPermission_To_v1beta1_AnnotationPermission(in, out, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_v1beta1_DashboardAccess_To_dashboard_DashboardAccess(in *DashboardAccess, out *dashboard.DashboardAccess, s conversion.Scope) error {
|
||||||
|
out.Slug = in.Slug
|
||||||
|
out.Url = in.Url
|
||||||
|
out.CanSave = in.CanSave
|
||||||
|
out.CanEdit = in.CanEdit
|
||||||
|
out.CanAdmin = in.CanAdmin
|
||||||
|
out.CanStar = in.CanStar
|
||||||
|
out.CanDelete = in.CanDelete
|
||||||
|
out.AnnotationsPermissions = (*dashboard.AnnotationPermission)(unsafe.Pointer(in.AnnotationsPermissions))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert_v1beta1_DashboardAccess_To_dashboard_DashboardAccess is an autogenerated conversion function.
|
||||||
|
func Convert_v1beta1_DashboardAccess_To_dashboard_DashboardAccess(in *DashboardAccess, out *dashboard.DashboardAccess, s conversion.Scope) error {
|
||||||
|
return autoConvert_v1beta1_DashboardAccess_To_dashboard_DashboardAccess(in, out, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_dashboard_DashboardAccess_To_v1beta1_DashboardAccess(in *dashboard.DashboardAccess, out *DashboardAccess, s conversion.Scope) error {
|
||||||
|
out.Slug = in.Slug
|
||||||
|
out.Url = in.Url
|
||||||
|
out.CanSave = in.CanSave
|
||||||
|
out.CanEdit = in.CanEdit
|
||||||
|
out.CanAdmin = in.CanAdmin
|
||||||
|
out.CanStar = in.CanStar
|
||||||
|
out.CanDelete = in.CanDelete
|
||||||
|
out.AnnotationsPermissions = (*AnnotationPermission)(unsafe.Pointer(in.AnnotationsPermissions))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert_dashboard_DashboardAccess_To_v1beta1_DashboardAccess is an autogenerated conversion function.
|
||||||
|
func Convert_dashboard_DashboardAccess_To_v1beta1_DashboardAccess(in *dashboard.DashboardAccess, out *DashboardAccess, s conversion.Scope) error {
|
||||||
|
return autoConvert_dashboard_DashboardAccess_To_v1beta1_DashboardAccess(in, out, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
func autoConvert_url_Values_To_v1beta1_VersionsQueryOptions(in *url.Values, out *VersionsQueryOptions, s conversion.Scope) error {
|
||||||
|
// WARNING: Field TypeMeta does not have json tag, skipping.
|
||||||
|
|
||||||
|
if values, ok := map[string][]string(*in)["path"]; ok && len(values) > 0 {
|
||||||
|
if err := runtime.Convert_Slice_string_To_string(&values, &out.Path, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.Path = ""
|
||||||
|
}
|
||||||
|
if values, ok := map[string][]string(*in)["version"]; ok && len(values) > 0 {
|
||||||
|
if err := runtime.Convert_Slice_string_To_int64(&values, &out.Version, s); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.Version = 0
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert_url_Values_To_v1beta1_VersionsQueryOptions is an autogenerated conversion function.
|
||||||
|
func Convert_url_Values_To_v1beta1_VersionsQueryOptions(in *url.Values, out *VersionsQueryOptions, s conversion.Scope) error {
|
||||||
|
return autoConvert_url_Values_To_v1beta1_VersionsQueryOptions(in, out, s)
|
||||||
|
}
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
// Code generated by deepcopy-gen. DO NOT EDIT.
|
// Code generated by deepcopy-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
v0alpha1 "github.com/grafana/grafana-plugin-sdk-go/experimental/apis/data/v0alpha1"
|
v0alpha1 "github.com/grafana/grafana-plugin-sdk-go/experimental/apis/data/v0alpha1"
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
// Code generated by defaulter-gen. DO NOT EDIT.
|
// Code generated by defaulter-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
// Code generated by openapi-gen. DO NOT EDIT.
|
// Code generated by openapi-gen. DO NOT EDIT.
|
||||||
|
|
||||||
package v1alpha1
|
package v1beta1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
v0alpha1 "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
v0alpha1 "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
||||||
|
@ -15,28 +15,28 @@ import (
|
||||||
|
|
||||||
func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition {
|
func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenAPIDefinition {
|
||||||
return map[string]common.OpenAPIDefinition{
|
return map[string]common.OpenAPIDefinition{
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.AnnotationActions": schema_pkg_apis_dashboard_v1alpha1_AnnotationActions(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.AnnotationActions": schema_pkg_apis_dashboard_v1beta1_AnnotationActions(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.AnnotationPermission": schema_pkg_apis_dashboard_v1alpha1_AnnotationPermission(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.AnnotationPermission": schema_pkg_apis_dashboard_v1beta1_AnnotationPermission(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.Dashboard": schema_pkg_apis_dashboard_v1alpha1_Dashboard(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.Dashboard": schema_pkg_apis_dashboard_v1beta1_Dashboard(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardAccess": schema_pkg_apis_dashboard_v1alpha1_DashboardAccess(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardAccess": schema_pkg_apis_dashboard_v1beta1_DashboardAccess(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardConversionStatus": schema_pkg_apis_dashboard_v1alpha1_DashboardConversionStatus(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardConversionStatus": schema_pkg_apis_dashboard_v1beta1_DashboardConversionStatus(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardJSONCodec": schema_pkg_apis_dashboard_v1alpha1_DashboardJSONCodec(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardJSONCodec": schema_pkg_apis_dashboard_v1beta1_DashboardJSONCodec(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardList": schema_pkg_apis_dashboard_v1alpha1_DashboardList(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardList": schema_pkg_apis_dashboard_v1beta1_DashboardList(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardMetadata": schema_pkg_apis_dashboard_v1alpha1_DashboardMetadata(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardMetadata": schema_pkg_apis_dashboard_v1beta1_DashboardMetadata(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardStatus": schema_pkg_apis_dashboard_v1alpha1_DashboardStatus(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardStatus": schema_pkg_apis_dashboard_v1beta1_DashboardStatus(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardVersionInfo": schema_pkg_apis_dashboard_v1alpha1_DashboardVersionInfo(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardVersionInfo": schema_pkg_apis_dashboard_v1beta1_DashboardVersionInfo(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardVersionList": schema_pkg_apis_dashboard_v1alpha1_DashboardVersionList(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardVersionList": schema_pkg_apis_dashboard_v1beta1_DashboardVersionList(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardWithAccessInfo": schema_pkg_apis_dashboard_v1alpha1_DashboardWithAccessInfo(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardWithAccessInfo": schema_pkg_apis_dashboard_v1beta1_DashboardWithAccessInfo(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.LibraryPanel": schema_pkg_apis_dashboard_v1alpha1_LibraryPanel(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.LibraryPanel": schema_pkg_apis_dashboard_v1beta1_LibraryPanel(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.LibraryPanelList": schema_pkg_apis_dashboard_v1alpha1_LibraryPanelList(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.LibraryPanelList": schema_pkg_apis_dashboard_v1beta1_LibraryPanelList(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.LibraryPanelSpec": schema_pkg_apis_dashboard_v1alpha1_LibraryPanelSpec(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.LibraryPanelSpec": schema_pkg_apis_dashboard_v1beta1_LibraryPanelSpec(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.LibraryPanelStatus": schema_pkg_apis_dashboard_v1alpha1_LibraryPanelStatus(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.LibraryPanelStatus": schema_pkg_apis_dashboard_v1beta1_LibraryPanelStatus(ref),
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.VersionsQueryOptions": schema_pkg_apis_dashboard_v1alpha1_VersionsQueryOptions(ref),
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.VersionsQueryOptions": schema_pkg_apis_dashboard_v1beta1_VersionsQueryOptions(ref),
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1.Unstructured": v0alpha1.Unstructured{}.OpenAPIDefinition(),
|
"github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1.Unstructured": v0alpha1.Unstructured{}.OpenAPIDefinition(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_AnnotationActions(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_AnnotationActions(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -70,7 +70,7 @@ func schema_pkg_apis_dashboard_v1alpha1_AnnotationActions(ref common.ReferenceCa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_AnnotationPermission(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_AnnotationPermission(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -79,13 +79,13 @@ func schema_pkg_apis_dashboard_v1alpha1_AnnotationPermission(ref common.Referenc
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Default: map[string]interface{}{},
|
Default: map[string]interface{}{},
|
||||||
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.AnnotationActions"),
|
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.AnnotationActions"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"organization": {
|
"organization": {
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Default: map[string]interface{}{},
|
Default: map[string]interface{}{},
|
||||||
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.AnnotationActions"),
|
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.AnnotationActions"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -93,11 +93,11 @@ func schema_pkg_apis_dashboard_v1alpha1_AnnotationPermission(ref common.Referenc
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Dependencies: []string{
|
Dependencies: []string{
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.AnnotationActions"},
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.AnnotationActions"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_Dashboard(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_Dashboard(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -132,7 +132,7 @@ func schema_pkg_apis_dashboard_v1alpha1_Dashboard(ref common.ReferenceCallback)
|
||||||
"status": {
|
"status": {
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Default: map[string]interface{}{},
|
Default: map[string]interface{}{},
|
||||||
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardStatus"),
|
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardStatus"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -140,11 +140,11 @@ func schema_pkg_apis_dashboard_v1alpha1_Dashboard(ref common.ReferenceCallback)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Dependencies: []string{
|
Dependencies: []string{
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardStatus", "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1.Unstructured", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"},
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardStatus", "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1.Unstructured", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_DashboardAccess(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_DashboardAccess(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -202,7 +202,7 @@ func schema_pkg_apis_dashboard_v1alpha1_DashboardAccess(ref common.ReferenceCall
|
||||||
},
|
},
|
||||||
"annotationsPermissions": {
|
"annotationsPermissions": {
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.AnnotationPermission"),
|
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.AnnotationPermission"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -210,11 +210,11 @@ func schema_pkg_apis_dashboard_v1alpha1_DashboardAccess(ref common.ReferenceCall
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Dependencies: []string{
|
Dependencies: []string{
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.AnnotationPermission"},
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.AnnotationPermission"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_DashboardConversionStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_DashboardConversionStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -252,7 +252,7 @@ func schema_pkg_apis_dashboard_v1alpha1_DashboardConversionStatus(ref common.Ref
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_DashboardJSONCodec(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_DashboardJSONCodec(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -263,7 +263,7 @@ func schema_pkg_apis_dashboard_v1alpha1_DashboardJSONCodec(ref common.ReferenceC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_DashboardList(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_DashboardList(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -296,7 +296,7 @@ func schema_pkg_apis_dashboard_v1alpha1_DashboardList(ref common.ReferenceCallba
|
||||||
Schema: &spec.Schema{
|
Schema: &spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Default: map[string]interface{}{},
|
Default: map[string]interface{}{},
|
||||||
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.Dashboard"),
|
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.Dashboard"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -307,11 +307,11 @@ func schema_pkg_apis_dashboard_v1alpha1_DashboardList(ref common.ReferenceCallba
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Dependencies: []string{
|
Dependencies: []string{
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.Dashboard", "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"},
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.Dashboard", "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_DashboardMetadata(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_DashboardMetadata(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -407,7 +407,7 @@ func schema_pkg_apis_dashboard_v1alpha1_DashboardMetadata(ref common.ReferenceCa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_DashboardStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_DashboardStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -416,18 +416,18 @@ func schema_pkg_apis_dashboard_v1alpha1_DashboardStatus(ref common.ReferenceCall
|
||||||
"conversion": {
|
"conversion": {
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Description: "Optional conversion status.",
|
Description: "Optional conversion status.",
|
||||||
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardConversionStatus"),
|
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardConversionStatus"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Dependencies: []string{
|
Dependencies: []string{
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardConversionStatus"},
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardConversionStatus"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_DashboardVersionInfo(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_DashboardVersionInfo(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -477,7 +477,7 @@ func schema_pkg_apis_dashboard_v1alpha1_DashboardVersionInfo(ref common.Referenc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_DashboardVersionList(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_DashboardVersionList(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -510,7 +510,7 @@ func schema_pkg_apis_dashboard_v1alpha1_DashboardVersionList(ref common.Referenc
|
||||||
Schema: &spec.Schema{
|
Schema: &spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Default: map[string]interface{}{},
|
Default: map[string]interface{}{},
|
||||||
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardVersionInfo"),
|
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardVersionInfo"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -520,11 +520,11 @@ func schema_pkg_apis_dashboard_v1alpha1_DashboardVersionList(ref common.Referenc
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Dependencies: []string{
|
Dependencies: []string{
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardVersionInfo", "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"},
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardVersionInfo", "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_DashboardWithAccessInfo(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_DashboardWithAccessInfo(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -560,13 +560,13 @@ func schema_pkg_apis_dashboard_v1alpha1_DashboardWithAccessInfo(ref common.Refer
|
||||||
"status": {
|
"status": {
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Default: map[string]interface{}{},
|
Default: map[string]interface{}{},
|
||||||
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardStatus"),
|
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardStatus"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"access": {
|
"access": {
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Default: map[string]interface{}{},
|
Default: map[string]interface{}{},
|
||||||
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardAccess"),
|
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardAccess"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -574,11 +574,11 @@ func schema_pkg_apis_dashboard_v1alpha1_DashboardWithAccessInfo(ref common.Refer
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Dependencies: []string{
|
Dependencies: []string{
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardAccess", "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.DashboardStatus", "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1.Unstructured", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"},
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardAccess", "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.DashboardStatus", "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1.Unstructured", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_LibraryPanel(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_LibraryPanel(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -609,13 +609,13 @@ func schema_pkg_apis_dashboard_v1alpha1_LibraryPanel(ref common.ReferenceCallbac
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Description: "Panel properties",
|
Description: "Panel properties",
|
||||||
Default: map[string]interface{}{},
|
Default: map[string]interface{}{},
|
||||||
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.LibraryPanelSpec"),
|
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.LibraryPanelSpec"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"status": {
|
"status": {
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Description: "Status will show errors",
|
Description: "Status will show errors",
|
||||||
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.LibraryPanelStatus"),
|
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.LibraryPanelStatus"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -623,11 +623,11 @@ func schema_pkg_apis_dashboard_v1alpha1_LibraryPanel(ref common.ReferenceCallbac
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Dependencies: []string{
|
Dependencies: []string{
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.LibraryPanelSpec", "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.LibraryPanelStatus", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"},
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.LibraryPanelSpec", "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.LibraryPanelStatus", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_LibraryPanelList(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_LibraryPanelList(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -660,7 +660,7 @@ func schema_pkg_apis_dashboard_v1alpha1_LibraryPanelList(ref common.ReferenceCal
|
||||||
Schema: &spec.Schema{
|
Schema: &spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
Default: map[string]interface{}{},
|
Default: map[string]interface{}{},
|
||||||
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.LibraryPanel"),
|
Ref: ref("github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.LibraryPanel"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -670,11 +670,11 @@ func schema_pkg_apis_dashboard_v1alpha1_LibraryPanelList(ref common.ReferenceCal
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Dependencies: []string{
|
Dependencies: []string{
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1.LibraryPanel", "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"},
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1.LibraryPanel", "k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_LibraryPanelSpec(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_LibraryPanelSpec(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -754,7 +754,7 @@ func schema_pkg_apis_dashboard_v1alpha1_LibraryPanelSpec(ref common.ReferenceCal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_LibraryPanelStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_LibraryPanelStatus(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
||||||
|
@ -789,7 +789,7 @@ func schema_pkg_apis_dashboard_v1alpha1_LibraryPanelStatus(ref common.ReferenceC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func schema_pkg_apis_dashboard_v1alpha1_VersionsQueryOptions(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
func schema_pkg_apis_dashboard_v1beta1_VersionsQueryOptions(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||||
return common.OpenAPIDefinition{
|
return common.OpenAPIDefinition{
|
||||||
Schema: spec.Schema{
|
Schema: spec.Schema{
|
||||||
SchemaProps: spec.SchemaProps{
|
SchemaProps: spec.SchemaProps{
|
|
@ -1,3 +1,3 @@
|
||||||
API rule violation: list_type_missing,github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1,DashboardMetadata,Finalizers
|
API rule violation: list_type_missing,github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1,DashboardMetadata,Finalizers
|
||||||
API rule violation: list_type_missing,github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1,LibraryPanelStatus,Warnings
|
API rule violation: list_type_missing,github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1,LibraryPanelStatus,Warnings
|
||||||
API rule violation: names_match,github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1,Unstructured,Object
|
API rule violation: names_match,github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1,Unstructured,Object
|
|
@ -25,7 +25,7 @@ var appManifestData = app.ManifestData{
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
Name: "v1alpha1",
|
Name: "v1beta1",
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
|
||||||
dashv0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
dashv0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
dashv2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
dashv2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/migration"
|
"github.com/grafana/grafana/apps/dashboard/pkg/migration"
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
|
"github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
|
||||||
dashv0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
dashv0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
dashv2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
dashv2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
||||||
common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
|
|
|
@ -2,9 +2,9 @@ package migration
|
||||||
|
|
||||||
import "github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
|
import "github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
|
||||||
|
|
||||||
func Migrate(dash map[string]interface{}, targetVersion int) error {
|
func Migrate(dash map[string]any, targetVersion int) error {
|
||||||
if dash == nil {
|
if dash == nil {
|
||||||
dash = map[string]interface{}{}
|
dash = map[string]any{}
|
||||||
}
|
}
|
||||||
inputVersion := schemaversion.GetSchemaVersion(dash)
|
inputVersion := schemaversion.GetSchemaVersion(dash)
|
||||||
dash["schemaVersion"] = inputVersion
|
dash["schemaVersion"] = inputVersion
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"kind": "Dashboard",
|
"kind": "Dashboard",
|
||||||
"apiVersion": "dashboard.grafana.app/v1alpha1",
|
"apiVersion": "dashboard.grafana.app/v1beta1",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"name": "sample-dash",
|
"name": "sample-dash",
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"kind": "Dashboard",
|
"kind": "Dashboard",
|
||||||
"apiVersion": "dashboard.grafana.app/v1alpha1",
|
"apiVersion": "dashboard.grafana.app/v1beta1",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"name": "dashboard-nested",
|
"name": "dashboard-nested",
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
|
|
@ -12,8 +12,10 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
k8serrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
|
||||||
claims "github.com/grafana/authlib/types"
|
claims "github.com/grafana/authlib/types"
|
||||||
dashboardsV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboardsV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/api/apierrors"
|
"github.com/grafana/grafana/pkg/api/apierrors"
|
||||||
"github.com/grafana/grafana/pkg/api/dtos"
|
"github.com/grafana/grafana/pkg/api/dtos"
|
||||||
"github.com/grafana/grafana/pkg/api/response"
|
"github.com/grafana/grafana/pkg/api/response"
|
||||||
|
@ -36,7 +38,6 @@ import (
|
||||||
"github.com/grafana/grafana/pkg/services/user"
|
"github.com/grafana/grafana/pkg/services/user"
|
||||||
"github.com/grafana/grafana/pkg/util"
|
"github.com/grafana/grafana/pkg/util"
|
||||||
"github.com/grafana/grafana/pkg/web"
|
"github.com/grafana/grafana/pkg/web"
|
||||||
k8serrors "k8s.io/apimachinery/pkg/api/errors"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -3,7 +3,7 @@ package dtos
|
||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
dashboardsV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboardsV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/components/simplejson"
|
"github.com/grafana/grafana/pkg/components/simplejson"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
authlib "github.com/grafana/authlib/types"
|
authlib "github.com/grafana/authlib/types"
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/utils"
|
"github.com/grafana/grafana/pkg/cmd/grafana-cli/utils"
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
|
||||||
dashboardV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
dashboardV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
dashboardV2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
dashboardV2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
||||||
commonV0 "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
commonV0 "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
|
||||||
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestLargeDashboardSupport(t *testing.T) {
|
func TestLargeDashboardSupport(t *testing.T) {
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
authlib "github.com/grafana/authlib/types"
|
authlib "github.com/grafana/authlib/types"
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
"github.com/grafana/grafana/pkg/infra/db"
|
"github.com/grafana/grafana/pkg/infra/db"
|
||||||
|
|
|
@ -15,8 +15,8 @@ import (
|
||||||
|
|
||||||
claims "github.com/grafana/authlib/types"
|
claims "github.com/grafana/authlib/types"
|
||||||
dashboardOG "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard"
|
dashboardOG "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard"
|
||||||
dashboardv0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
dashboardV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
|
"github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
"github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||||
|
@ -43,7 +43,7 @@ type dashboardRow struct {
|
||||||
RV int64
|
RV int64
|
||||||
|
|
||||||
// Dashboard resource
|
// Dashboard resource
|
||||||
Dash *dashboard.Dashboard
|
Dash *dashboardV1.Dashboard
|
||||||
|
|
||||||
// The folder UID (needed for access control checks)
|
// The folder UID (needed for access control checks)
|
||||||
FolderUID string
|
FolderUID string
|
||||||
|
@ -222,8 +222,8 @@ func (r *rowsWrapper) Value() []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *dashboardSqlAccess) scanRow(rows *sql.Rows, history bool) (*dashboardRow, error) {
|
func (a *dashboardSqlAccess) scanRow(rows *sql.Rows, history bool) (*dashboardRow, error) {
|
||||||
dash := &dashboard.Dashboard{
|
dash := &dashboardV1.Dashboard{
|
||||||
TypeMeta: dashboard.DashboardResourceInfo.TypeMeta(),
|
TypeMeta: dashboardV1.DashboardResourceInfo.TypeMeta(),
|
||||||
ObjectMeta: metav1.ObjectMeta{Annotations: make(map[string]string)},
|
ObjectMeta: metav1.ObjectMeta{Annotations: make(map[string]string)},
|
||||||
}
|
}
|
||||||
row := &dashboardRow{Dash: dash}
|
row := &dashboardRow{Dash: dash}
|
||||||
|
@ -257,8 +257,11 @@ func (a *dashboardSqlAccess) scanRow(rows *sql.Rows, history bool) (*dashboardRo
|
||||||
&updated, &updatedBy, &updatedByID,
|
&updated, &updatedBy, &updatedByID,
|
||||||
&version, &message, &data, &apiVersion,
|
&version, &message, &data, &apiVersion,
|
||||||
)
|
)
|
||||||
if apiVersion.String == "" {
|
switch apiVersion.String {
|
||||||
apiVersion.String = "v0alpha1" // default value
|
case "":
|
||||||
|
apiVersion.String = dashboardV0.VERSION // default value
|
||||||
|
case "v1alpha1":
|
||||||
|
apiVersion.String = dashboardV0.VERSION // downgrade to v0 (it may not have run migrations)
|
||||||
}
|
}
|
||||||
|
|
||||||
row.token = &continueToken{orgId: orgId, id: dashboard_id}
|
row.token = &continueToken{orgId: orgId, id: dashboard_id}
|
||||||
|
@ -270,7 +273,7 @@ func (a *dashboardSqlAccess) scanRow(rows *sql.Rows, history bool) (*dashboardRo
|
||||||
row.RV = version
|
row.RV = version
|
||||||
dash.ResourceVersion = fmt.Sprintf("%d", row.RV)
|
dash.ResourceVersion = fmt.Sprintf("%d", row.RV)
|
||||||
dash.Namespace = a.namespacer(orgId)
|
dash.Namespace = a.namespacer(orgId)
|
||||||
dash.APIVersion = fmt.Sprintf("%s/%s", dashboard.GROUP, apiVersion.String)
|
dash.APIVersion = fmt.Sprintf("%s/%s", dashboardV1.GROUP, apiVersion.String)
|
||||||
dash.UID = gapiutil.CalculateClusterWideUID(dash)
|
dash.UID = gapiutil.CalculateClusterWideUID(dash)
|
||||||
dash.SetCreationTimestamp(metav1.NewTime(created))
|
dash.SetCreationTimestamp(metav1.NewTime(created))
|
||||||
meta, err := utils.MetaAccessor(dash)
|
meta, err := utils.MetaAccessor(dash)
|
||||||
|
@ -345,7 +348,7 @@ func getUserID(v sql.NullString, id sql.NullInt64) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteDashboard implements DashboardAccess.
|
// DeleteDashboard implements DashboardAccess.
|
||||||
func (a *dashboardSqlAccess) DeleteDashboard(ctx context.Context, orgId int64, uid string) (*dashboard.Dashboard, bool, error) {
|
func (a *dashboardSqlAccess) DeleteDashboard(ctx context.Context, orgId int64, uid string) (*dashboardV1.Dashboard, bool, error) {
|
||||||
dash, _, err := a.GetDashboard(ctx, orgId, uid, 0)
|
dash, _, err := a.GetDashboard(ctx, orgId, uid, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
|
@ -361,7 +364,7 @@ func (a *dashboardSqlAccess) DeleteDashboard(ctx context.Context, orgId int64, u
|
||||||
return dash, true, nil
|
return dash, true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *dashboardSqlAccess) buildSaveDashboardCommand(ctx context.Context, orgId int64, dash *dashboard.Dashboard) (*dashboards.SaveDashboardCommand, bool, error) {
|
func (a *dashboardSqlAccess) buildSaveDashboardCommand(ctx context.Context, orgId int64, dash *dashboardV1.Dashboard) (*dashboards.SaveDashboardCommand, bool, error) {
|
||||||
created := false
|
created := false
|
||||||
user, ok := claims.AuthInfoFrom(ctx)
|
user, ok := claims.AuthInfoFrom(ctx)
|
||||||
if !ok || user == nil {
|
if !ok || user == nil {
|
||||||
|
@ -397,21 +400,21 @@ func (a *dashboardSqlAccess) buildSaveDashboardCommand(ctx context.Context, orgI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// v1 should be saved as schema version 41. v0 allows for older versions
|
apiVersion := strings.TrimPrefix(dash.APIVersion, dashboardV1.GROUP+"/")
|
||||||
if strings.HasSuffix(dash.APIVersion, "v1alpha1") {
|
|
||||||
schemaVersion := schemaversion.GetSchemaVersion(dash.Spec.Object)
|
|
||||||
if schemaVersion < int(schemaversion.LATEST_VERSION) {
|
|
||||||
dash.APIVersion = dashboardv0.VERSION
|
|
||||||
a.log.Info("Downgrading v1alpha1 dashboard to v0alpha1 due to schema version mismatch", "dashboard", dash.Name, "schema_version", schemaVersion)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
apiVersion := strings.TrimPrefix(dash.APIVersion, dashboard.GROUP+"/")
|
|
||||||
meta, err := utils.MetaAccessor(dash)
|
meta, err := utils.MetaAccessor(dash)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, created, err
|
return nil, created, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// v1 should be saved as schema version 41. v0 allows for older versions
|
||||||
|
if strings.HasPrefix(apiVersion, "v1") {
|
||||||
|
schemaVersion := schemaversion.GetSchemaVersion(dash.Spec.Object)
|
||||||
|
if schemaVersion < int(schemaversion.LATEST_VERSION) {
|
||||||
|
apiVersion = dashboardV0.VERSION
|
||||||
|
a.log.Info("Downgrading v1alpha1 dashboard to v0alpha1 due to schema version mismatch", "dashboard", dash.Name, "schema_version", schemaVersion)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return &dashboards.SaveDashboardCommand{
|
return &dashboards.SaveDashboardCommand{
|
||||||
OrgID: orgId,
|
OrgID: orgId,
|
||||||
Message: meta.GetMessage(),
|
Message: meta.GetMessage(),
|
||||||
|
@ -424,7 +427,7 @@ func (a *dashboardSqlAccess) buildSaveDashboardCommand(ctx context.Context, orgI
|
||||||
}, created, nil
|
}, created, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *dashboardSqlAccess) SaveDashboard(ctx context.Context, orgId int64, dash *dashboard.Dashboard, failOnExisting bool) (*dashboard.Dashboard, bool, error) {
|
func (a *dashboardSqlAccess) SaveDashboard(ctx context.Context, orgId int64, dash *dashboardV1.Dashboard, failOnExisting bool) (*dashboardV1.Dashboard, bool, error) {
|
||||||
user, ok := claims.AuthInfoFrom(ctx)
|
user, ok := claims.AuthInfoFrom(ctx)
|
||||||
if !ok || user == nil {
|
if !ok || user == nil {
|
||||||
return nil, false, fmt.Errorf("no user found in context")
|
return nil, false, fmt.Errorf("no user found in context")
|
||||||
|
@ -464,7 +467,7 @@ func (a *dashboardSqlAccess) SaveDashboard(ctx context.Context, orgId int64, das
|
||||||
return dash, created, err
|
return dash, created, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *dashboardSqlAccess) GetLibraryPanels(ctx context.Context, query LibraryPanelQuery) (*dashboard.LibraryPanelList, error) {
|
func (a *dashboardSqlAccess) GetLibraryPanels(ctx context.Context, query LibraryPanelQuery) (*dashboardV0.LibraryPanelList, error) {
|
||||||
limit := int(query.Limit)
|
limit := int(query.Limit)
|
||||||
query.Limit += 1 // for continue
|
query.Limit += 1 // for continue
|
||||||
if query.OrgID == 0 {
|
if query.OrgID == 0 {
|
||||||
|
@ -483,7 +486,7 @@ func (a *dashboardSqlAccess) GetLibraryPanels(ctx context.Context, query Library
|
||||||
}
|
}
|
||||||
q := rawQuery
|
q := rawQuery
|
||||||
|
|
||||||
res := &dashboard.LibraryPanelList{}
|
res := &dashboardV0.LibraryPanelList{}
|
||||||
rows, err := sqlx.DB.GetSqlxSession().Query(ctx, q, req.GetArgs()...)
|
rows, err := sqlx.DB.GetSqlxSession().Query(ctx, q, req.GetArgs()...)
|
||||||
defer func() {
|
defer func() {
|
||||||
if rows != nil {
|
if rows != nil {
|
||||||
|
@ -524,9 +527,9 @@ func (a *dashboardSqlAccess) GetLibraryPanels(ctx context.Context, query Library
|
||||||
}
|
}
|
||||||
lastID = p.ID
|
lastID = p.ID
|
||||||
|
|
||||||
item := dashboard.LibraryPanel{
|
item := dashboardV0.LibraryPanel{
|
||||||
TypeMeta: metav1.TypeMeta{
|
TypeMeta: metav1.TypeMeta{
|
||||||
APIVersion: fmt.Sprintf("%s/%s", dashboard.GROUP, "v0alpha1"),
|
APIVersion: dashboardV0.APIVERSION,
|
||||||
Kind: "LibraryPanel",
|
Kind: "LibraryPanel",
|
||||||
},
|
},
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
@ -534,10 +537,10 @@ func (a *dashboardSqlAccess) GetLibraryPanels(ctx context.Context, query Library
|
||||||
CreationTimestamp: metav1.NewTime(p.Created),
|
CreationTimestamp: metav1.NewTime(p.Created),
|
||||||
ResourceVersion: strconv.FormatInt(p.Updated.UnixMilli(), 10),
|
ResourceVersion: strconv.FormatInt(p.Updated.UnixMilli(), 10),
|
||||||
},
|
},
|
||||||
Spec: dashboard.LibraryPanelSpec{},
|
Spec: dashboardV0.LibraryPanelSpec{},
|
||||||
}
|
}
|
||||||
|
|
||||||
status := &dashboard.LibraryPanelStatus{
|
status := &dashboardV0.LibraryPanelStatus{
|
||||||
Missing: v0alpha1.Unstructured{},
|
Missing: v0alpha1.Unstructured{},
|
||||||
}
|
}
|
||||||
err = json.Unmarshal(p.Model, &item.Spec)
|
err = json.Unmarshal(p.Model, &item.Spec)
|
||||||
|
|
|
@ -10,7 +10,8 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboardV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
|
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
|
@ -134,20 +135,20 @@ func TestBuildSaveDashboardCommand(t *testing.T) {
|
||||||
expectedAPI string
|
expectedAPI string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "with schema version 36 should save as v0alpha1",
|
name: "with schema version 36 should save as v0",
|
||||||
schemaVersion: 36,
|
schemaVersion: 36,
|
||||||
expectedAPI: "v0alpha1",
|
expectedAPI: dashboardV0.VERSION,
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "with schema version 41 should save as v1alpha1",
|
|
||||||
schemaVersion: 41,
|
|
||||||
expectedAPI: "v1alpha1",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "with empty schema version should save as v0alpha1",
|
|
||||||
schemaVersion: 0,
|
|
||||||
expectedAPI: "v0alpha1",
|
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// name: "with schema version 41 should save as v1",
|
||||||
|
// schemaVersion: 41,
|
||||||
|
// expectedAPI: dashboardV1.VERSION,
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// name: "with empty schema version should save as v0",
|
||||||
|
// schemaVersion: 0,
|
||||||
|
// expectedAPI: dashboardV0.VERSION,
|
||||||
|
// },
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
|
@ -167,9 +168,9 @@ func TestBuildSaveDashboardCommand(t *testing.T) {
|
||||||
dashSpec["schemaVersion"] = tc.schemaVersion
|
dashSpec["schemaVersion"] = tc.schemaVersion
|
||||||
}
|
}
|
||||||
|
|
||||||
dash := &dashboard.Dashboard{
|
dash := &dashboardV1.Dashboard{
|
||||||
TypeMeta: metav1.TypeMeta{
|
TypeMeta: metav1.TypeMeta{
|
||||||
APIVersion: dashboard.APIVERSION,
|
APIVersion: dashboardV1.APIVERSION,
|
||||||
},
|
},
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: "test-dash",
|
Name: "test-dash",
|
||||||
|
@ -205,7 +206,7 @@ func TestBuildSaveDashboardCommand(t *testing.T) {
|
||||||
&dashboards.Dashboard{
|
&dashboards.Dashboard{
|
||||||
ID: 1234,
|
ID: 1234,
|
||||||
Version: 2,
|
Version: 2,
|
||||||
APIVersion: dashboard.APIVERSION,
|
APIVersion: dashboardV1.VERSION,
|
||||||
}, nil).Once()
|
}, nil).Once()
|
||||||
cmd, created, err = access.buildSaveDashboardCommand(ctx, 1, dash)
|
cmd, created, err = access.buildSaveDashboardCommand(ctx, 1, dash)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
|
@ -9,7 +9,7 @@ import (
|
||||||
|
|
||||||
claims "github.com/grafana/authlib/types"
|
claims "github.com/grafana/authlib/types"
|
||||||
|
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
"github.com/grafana/grafana/pkg/services/dashboards"
|
"github.com/grafana/grafana/pkg/services/dashboards"
|
||||||
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
||||||
|
|
|
@ -9,7 +9,7 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
|
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
"github.com/grafana/grafana/pkg/infra/log"
|
"github.com/grafana/grafana/pkg/infra/log"
|
||||||
|
|
|
@ -3,7 +3,8 @@ package legacy
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboardV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
|
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -54,10 +55,10 @@ type DashboardAccess interface {
|
||||||
resource.ResourceIndexServer
|
resource.ResourceIndexServer
|
||||||
LegacyMigrator
|
LegacyMigrator
|
||||||
|
|
||||||
GetDashboard(ctx context.Context, orgId int64, uid string, version int64) (*dashboard.Dashboard, int64, error)
|
GetDashboard(ctx context.Context, orgId int64, uid string, version int64) (*dashboardV1.Dashboard, int64, error)
|
||||||
SaveDashboard(ctx context.Context, orgId int64, dash *dashboard.Dashboard, failOnExisting bool) (*dashboard.Dashboard, bool, error)
|
SaveDashboard(ctx context.Context, orgId int64, dash *dashboardV1.Dashboard, failOnExisting bool) (*dashboardV1.Dashboard, bool, error)
|
||||||
DeleteDashboard(ctx context.Context, orgId int64, uid string) (*dashboard.Dashboard, bool, error)
|
DeleteDashboard(ctx context.Context, orgId int64, uid string) (*dashboardV1.Dashboard, bool, error)
|
||||||
|
|
||||||
// Get a typed list
|
// Get a typed list
|
||||||
GetLibraryPanels(ctx context.Context, query LibraryPanelQuery) (*dashboard.LibraryPanelList, error)
|
GetLibraryPanels(ctx context.Context, query LibraryPanelQuery) (*dashboardV0.LibraryPanelList, error)
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/selection"
|
"k8s.io/apimachinery/pkg/selection"
|
||||||
|
|
||||||
claims "github.com/grafana/authlib/types"
|
claims "github.com/grafana/authlib/types"
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"k8s.io/apimachinery/pkg/selection"
|
"k8s.io/apimachinery/pkg/selection"
|
||||||
|
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
"github.com/grafana/grafana/pkg/services/dashboards"
|
"github.com/grafana/grafana/pkg/services/dashboards"
|
||||||
|
|
|
@ -4,17 +4,17 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
"k8s.io/apiserver/pkg/admission"
|
"k8s.io/apiserver/pkg/admission"
|
||||||
|
|
||||||
dashboardV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
dashboardV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
dashboardV2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
dashboardV2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/migration"
|
"github.com/grafana/grafana/apps/dashboard/pkg/migration"
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
|
"github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (b *DashboardsAPIBuilder) Mutate(ctx context.Context, a admission.Attributes, o admission.ObjectInterfaces) (err error) {
|
func (b *DashboardsAPIBuilder) Mutate(ctx context.Context, a admission.Attributes, o admission.ObjectInterfaces) (err error) {
|
||||||
|
|
|
@ -4,18 +4,19 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
dashv0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
|
||||||
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
|
|
||||||
common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
|
||||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/apiserver/pkg/admission"
|
"k8s.io/apiserver/pkg/admission"
|
||||||
|
|
||||||
|
dashv0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
|
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
|
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
||||||
|
"github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion"
|
||||||
|
common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
||||||
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
|
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDashboardAPIBuilder_Mutate(t *testing.T) {
|
func TestDashboardAPIBuilder_Mutate(t *testing.T) {
|
||||||
|
|
|
@ -22,7 +22,7 @@ import (
|
||||||
claims "github.com/grafana/authlib/types"
|
claims "github.com/grafana/authlib/types"
|
||||||
internal "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard"
|
internal "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard"
|
||||||
dashv0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
dashv0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
dashv2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
dashv2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/migration/conversion"
|
"github.com/grafana/grafana/apps/dashboard/pkg/migration/conversion"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||||
|
|
|
@ -5,18 +5,19 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
dashv0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
|
||||||
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
|
||||||
dashv2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
|
||||||
common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
|
||||||
"github.com/grafana/grafana/pkg/services/dashboards"
|
|
||||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
|
||||||
"github.com/grafana/grafana/pkg/services/user"
|
|
||||||
"github.com/stretchr/testify/mock"
|
"github.com/stretchr/testify/mock"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/apiserver/pkg/admission"
|
"k8s.io/apiserver/pkg/admission"
|
||||||
|
|
||||||
|
dashv0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
|
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
|
dashv2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
||||||
|
common "github.com/grafana/grafana/pkg/apimachinery/apis/common/v0alpha1"
|
||||||
|
"github.com/grafana/grafana/pkg/services/dashboards"
|
||||||
|
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||||
|
"github.com/grafana/grafana/pkg/services/user"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDashboardAPIBuilder_Validate(t *testing.T) {
|
func TestDashboardAPIBuilder_Validate(t *testing.T) {
|
||||||
|
|
|
@ -5,16 +5,16 @@ import (
|
||||||
_ "embed"
|
_ "embed"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/validation/field"
|
"k8s.io/apimachinery/pkg/util/validation/field"
|
||||||
|
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
v0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
v1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
v2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ValidateDashboardSpec validates the dashboard spec and throws a detailed error if there are validation errors.
|
// ValidateDashboardSpec validates the dashboard spec and throws a detailed error if there are validation errors.
|
||||||
|
@ -28,11 +28,11 @@ func (b *DashboardsAPIBuilder) ValidateDashboardSpec(ctx context.Context, obj ru
|
||||||
mode := fieldValidationMode
|
mode := fieldValidationMode
|
||||||
if mode != metav1.FieldValidationIgnore {
|
if mode != metav1.FieldValidationIgnore {
|
||||||
switch obj.(type) {
|
switch obj.(type) {
|
||||||
case *v0alpha1.Dashboard:
|
case *v0.Dashboard:
|
||||||
errorOnSchemaMismatches = false // Never error for v0
|
errorOnSchemaMismatches = false // Never error for v0
|
||||||
case *v1alpha1.Dashboard:
|
case *v1.Dashboard:
|
||||||
errorOnSchemaMismatches = !b.features.IsEnabled(ctx, featuremgmt.FlagDashboardDisableSchemaValidationV1)
|
errorOnSchemaMismatches = !b.features.IsEnabled(ctx, featuremgmt.FlagDashboardDisableSchemaValidationV1)
|
||||||
case *v2alpha1.Dashboard:
|
case *v2.Dashboard:
|
||||||
errorOnSchemaMismatches = !b.features.IsEnabled(ctx, featuremgmt.FlagDashboardDisableSchemaValidationV2)
|
errorOnSchemaMismatches = !b.features.IsEnabled(ctx, featuremgmt.FlagDashboardDisableSchemaValidationV2)
|
||||||
default:
|
default:
|
||||||
return nil, fmt.Errorf("invalid dashboard type: %T", obj)
|
return nil, fmt.Errorf("invalid dashboard type: %T", obj)
|
||||||
|
@ -48,12 +48,12 @@ func (b *DashboardsAPIBuilder) ValidateDashboardSpec(ctx context.Context, obj ru
|
||||||
var schemaVersionError field.ErrorList
|
var schemaVersionError field.ErrorList
|
||||||
if errorOnSchemaMismatches || alwaysLogSchemaValidationErrors {
|
if errorOnSchemaMismatches || alwaysLogSchemaValidationErrors {
|
||||||
switch v := obj.(type) {
|
switch v := obj.(type) {
|
||||||
case *v0alpha1.Dashboard:
|
case *v0.Dashboard:
|
||||||
errors, schemaVersionError = v0alpha1.ValidateDashboardSpec(v, alwaysLogSchemaValidationErrors)
|
errors, schemaVersionError = v0.ValidateDashboardSpec(v, alwaysLogSchemaValidationErrors)
|
||||||
case *v1alpha1.Dashboard:
|
case *v1.Dashboard:
|
||||||
errors, schemaVersionError = v1alpha1.ValidateDashboardSpec(v, alwaysLogSchemaValidationErrors)
|
errors, schemaVersionError = v1.ValidateDashboardSpec(v, alwaysLogSchemaValidationErrors)
|
||||||
case *v2alpha1.Dashboard:
|
case *v2.Dashboard:
|
||||||
errors = v2alpha1.ValidateDashboardSpec(v)
|
errors = v2.ValidateDashboardSpec(v)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,9 +18,6 @@ import (
|
||||||
"k8s.io/kube-openapi/pkg/spec3"
|
"k8s.io/kube-openapi/pkg/spec3"
|
||||||
"k8s.io/kube-openapi/pkg/validation/spec"
|
"k8s.io/kube-openapi/pkg/validation/spec"
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/storage/legacysql/dualwrite"
|
|
||||||
"github.com/grafana/grafana/pkg/storage/unified/search"
|
|
||||||
|
|
||||||
dashboardv0alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
dashboardv0alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||||
|
@ -30,7 +27,9 @@ import (
|
||||||
dashboardsearch "github.com/grafana/grafana/pkg/services/dashboards/service/search"
|
dashboardsearch "github.com/grafana/grafana/pkg/services/dashboards/service/search"
|
||||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||||
foldermodel "github.com/grafana/grafana/pkg/services/folder"
|
foldermodel "github.com/grafana/grafana/pkg/services/folder"
|
||||||
|
"github.com/grafana/grafana/pkg/storage/legacysql/dualwrite"
|
||||||
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
||||||
|
"github.com/grafana/grafana/pkg/storage/unified/search"
|
||||||
"github.com/grafana/grafana/pkg/util/errhttp"
|
"github.com/grafana/grafana/pkg/util/errhttp"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/grafana/grafana-app-sdk/logging"
|
"github.com/grafana/grafana-app-sdk/logging"
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1"
|
provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1"
|
||||||
"github.com/grafana/grafana/pkg/cmd/grafana-cli/logger"
|
"github.com/grafana/grafana/pkg/cmd/grafana-cli/logger"
|
||||||
"github.com/grafana/grafana/pkg/infra/slugify"
|
"github.com/grafana/grafana/pkg/infra/slugify"
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/client-go/dynamic"
|
"k8s.io/client-go/dynamic"
|
||||||
|
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
||||||
iam "github.com/grafana/grafana/pkg/apis/iam/v0alpha1"
|
iam "github.com/grafana/grafana/pkg/apis/iam/v0alpha1"
|
||||||
"github.com/grafana/grafana/pkg/services/apiserver"
|
"github.com/grafana/grafana/pkg/services/apiserver"
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
dashboardV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
dashboardV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1"
|
provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1"
|
||||||
"github.com/grafana/grafana/pkg/registry/apis/provisioning/repository"
|
"github.com/grafana/grafana/pkg/registry/apis/provisioning/repository"
|
||||||
)
|
)
|
||||||
|
|
|
@ -4,16 +4,17 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
dashboardv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
|
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestReadRuntimeCOnfig(t *testing.T) {
|
func TestReadRuntimeCOnfig(t *testing.T) {
|
||||||
out, err := ReadRuntimeConfig("all/all=true," + dashboardv1.APIVERSION + "=false")
|
out, err := ReadRuntimeConfig("all/all=true," + dashboardV1.APIVERSION + "=false")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, []RuntimeConfig{
|
require.Equal(t, []RuntimeConfig{
|
||||||
{Group: "all", Version: "all", Enabled: true},
|
{Group: "all", Version: "all", Enabled: true},
|
||||||
{Group: "dashboard.grafana.app", Version: "v1alpha1", Enabled: false},
|
{Group: dashboardV1.GROUP, Version: dashboardV1.VERSION, Enabled: false},
|
||||||
}, out)
|
}, out)
|
||||||
require.Equal(t, "all/all=true", fmt.Sprintf("%v", out[0]))
|
require.Equal(t, "all/all=true", fmt.Sprintf("%v", out[0]))
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
openfgav1 "github.com/openfga/api/proto/openfga/v1"
|
openfgav1 "github.com/openfga/api/proto/openfga/v1"
|
||||||
"google.golang.org/protobuf/types/known/structpb"
|
"google.golang.org/protobuf/types/known/structpb"
|
||||||
|
|
||||||
dashboardalpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
authzextv1 "github.com/grafana/grafana/pkg/services/authz/proto/v1"
|
authzextv1 "github.com/grafana/grafana/pkg/services/authz/proto/v1"
|
||||||
)
|
)
|
||||||
|
@ -377,8 +377,8 @@ func AddRenderContext(req *openfgav1.CheckRequest) {
|
||||||
User: req.TupleKey.User,
|
User: req.TupleKey.User,
|
||||||
Relation: RelationSetView,
|
Relation: RelationSetView,
|
||||||
Object: NewGroupResourceIdent(
|
Object: NewGroupResourceIdent(
|
||||||
dashboardalpha1.DashboardResourceInfo.GroupResource().Group,
|
dashboardV1.DashboardResourceInfo.GroupResource().Group,
|
||||||
dashboardalpha1.DashboardResourceInfo.GroupResource().Resource,
|
dashboardV1.DashboardResourceInfo.GroupResource().Resource,
|
||||||
"",
|
"",
|
||||||
),
|
),
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package zanzana
|
package zanzana
|
||||||
|
|
||||||
import (
|
import (
|
||||||
dashboards "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboards "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
"go.opentelemetry.io/otel/attribute"
|
"go.opentelemetry.io/otel/attribute"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
|
@ -22,7 +23,6 @@ import (
|
||||||
"github.com/grafana/grafana/pkg/setting"
|
"github.com/grafana/grafana/pkg/setting"
|
||||||
"github.com/grafana/grafana/pkg/storage/legacysql/dualwrite"
|
"github.com/grafana/grafana/pkg/storage/legacysql/dualwrite"
|
||||||
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type K8sClientFactory func(ctx context.Context, version string) client.K8sHandler
|
type K8sClientFactory func(ctx context.Context, version string) client.K8sHandler
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
|
|
||||||
dashboardv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboardv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/infra/log"
|
"github.com/grafana/grafana/pkg/infra/log"
|
||||||
"github.com/grafana/grafana/pkg/services/apiserver/client"
|
"github.com/grafana/grafana/pkg/services/apiserver/client"
|
||||||
)
|
)
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
"slices"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -43,7 +44,6 @@ import (
|
||||||
"github.com/grafana/grafana/pkg/services/user"
|
"github.com/grafana/grafana/pkg/services/user"
|
||||||
"github.com/grafana/grafana/pkg/setting"
|
"github.com/grafana/grafana/pkg/setting"
|
||||||
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
||||||
"golang.org/x/exp/slices"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDashboardService(t *testing.T) {
|
func TestDashboardService(t *testing.T) {
|
||||||
|
|
|
@ -18,7 +18,7 @@ import (
|
||||||
|
|
||||||
"github.com/grafana/dskit/concurrency"
|
"github.com/grafana/dskit/concurrency"
|
||||||
|
|
||||||
dashboardv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboardv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
folderv1 "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
folderv1 "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||||
"github.com/grafana/grafana/pkg/bus"
|
"github.com/grafana/grafana/pkg/bus"
|
||||||
|
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/infra/log"
|
"github.com/grafana/grafana/pkg/infra/log"
|
||||||
"github.com/grafana/grafana/pkg/services/dashboards"
|
"github.com/grafana/grafana/pkg/services/dashboards"
|
||||||
"github.com/grafana/grafana/pkg/services/folder"
|
"github.com/grafana/grafana/pkg/services/folder"
|
||||||
|
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,11 @@ package apistore
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
dashboardv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
|
dashboardv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type LargeObjectSupportFake struct {
|
type LargeObjectSupportFake struct {
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
|
||||||
authtypes "github.com/grafana/authlib/types"
|
authtypes "github.com/grafana/authlib/types"
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
)
|
)
|
||||||
|
|
|
@ -16,7 +16,7 @@ import (
|
||||||
"k8s.io/apiserver/pkg/storage"
|
"k8s.io/apiserver/pkg/storage"
|
||||||
|
|
||||||
authtypes "github.com/grafana/authlib/types"
|
authtypes "github.com/grafana/authlib/types"
|
||||||
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
)
|
)
|
||||||
|
|
|
@ -17,7 +17,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
"github.com/grafana/authlib/types"
|
"github.com/grafana/authlib/types"
|
||||||
dashboardv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboardv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import (
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
|
|
||||||
dashV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
"github.com/grafana/grafana/pkg/services/store/kind/dashboard"
|
"github.com/grafana/grafana/pkg/services/store/kind/dashboard"
|
||||||
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
||||||
|
|
|
@ -20,7 +20,7 @@ import (
|
||||||
"github.com/grafana/grafana/pkg/tests/testsuite"
|
"github.com/grafana/grafana/pkg/tests/testsuite"
|
||||||
|
|
||||||
dashboardV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
dashboardV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
dashboardV2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
dashboardV2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -112,8 +112,8 @@ func runDashboardTest(t *testing.T, helper *apis.K8sTestHelper, gvr schema.Group
|
||||||
|
|
||||||
func TestIntegrationDashboardsAppV0Alpha1(t *testing.T) {
|
func TestIntegrationDashboardsAppV0Alpha1(t *testing.T) {
|
||||||
gvr := schema.GroupVersionResource{
|
gvr := schema.GroupVersionResource{
|
||||||
Group: "dashboard.grafana.app",
|
Group: dashboardV1.GROUP,
|
||||||
Version: "v0alpha1",
|
Version: dashboardV1.VERSION,
|
||||||
Resource: "dashboards",
|
Resource: "dashboards",
|
||||||
}
|
}
|
||||||
if testing.Short() {
|
if testing.Short() {
|
||||||
|
@ -182,17 +182,17 @@ func TestIntegrationDashboardsAppV0Alpha1(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIntegrationDashboardsAppV1Alpha1(t *testing.T) {
|
func TestIntegrationDashboardsAppV1(t *testing.T) {
|
||||||
gvr := schema.GroupVersionResource{
|
gvr := schema.GroupVersionResource{
|
||||||
Group: "dashboard.grafana.app",
|
Group: dashboardV1.GROUP,
|
||||||
Version: "v1alpha1",
|
Version: dashboardV1.VERSION,
|
||||||
Resource: "dashboards",
|
Resource: "dashboards",
|
||||||
}
|
}
|
||||||
if testing.Short() {
|
if testing.Short() {
|
||||||
t.Skip("skipping integration test")
|
t.Skip("skipping integration test")
|
||||||
}
|
}
|
||||||
|
|
||||||
t.Run("v1alpha1 with dual writer mode 0", func(t *testing.T) {
|
t.Run("v1 with dual writer mode 0", func(t *testing.T) {
|
||||||
helper := apis.NewK8sTestHelper(t, testinfra.GrafanaOpts{
|
helper := apis.NewK8sTestHelper(t, testinfra.GrafanaOpts{
|
||||||
DisableAnonymous: true,
|
DisableAnonymous: true,
|
||||||
UnifiedStorageConfig: map[string]setting.UnifiedStorageConfig{
|
UnifiedStorageConfig: map[string]setting.UnifiedStorageConfig{
|
||||||
|
@ -204,7 +204,7 @@ func TestIntegrationDashboardsAppV1Alpha1(t *testing.T) {
|
||||||
runDashboardTest(t, helper, gvr)
|
runDashboardTest(t, helper, gvr)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("v1alpha1 with dual writer mode 1", func(t *testing.T) {
|
t.Run("v1 with dual writer mode 1", func(t *testing.T) {
|
||||||
helper := apis.NewK8sTestHelper(t, testinfra.GrafanaOpts{
|
helper := apis.NewK8sTestHelper(t, testinfra.GrafanaOpts{
|
||||||
DisableAnonymous: true,
|
DisableAnonymous: true,
|
||||||
UnifiedStorageConfig: map[string]setting.UnifiedStorageConfig{
|
UnifiedStorageConfig: map[string]setting.UnifiedStorageConfig{
|
||||||
|
@ -216,7 +216,7 @@ func TestIntegrationDashboardsAppV1Alpha1(t *testing.T) {
|
||||||
runDashboardTest(t, helper, gvr)
|
runDashboardTest(t, helper, gvr)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("v1alpha1 with dual writer mode 2", func(t *testing.T) {
|
t.Run("v1 with dual writer mode 2", func(t *testing.T) {
|
||||||
helper := apis.NewK8sTestHelper(t, testinfra.GrafanaOpts{
|
helper := apis.NewK8sTestHelper(t, testinfra.GrafanaOpts{
|
||||||
DisableAnonymous: true,
|
DisableAnonymous: true,
|
||||||
UnifiedStorageConfig: map[string]setting.UnifiedStorageConfig{
|
UnifiedStorageConfig: map[string]setting.UnifiedStorageConfig{
|
||||||
|
@ -228,7 +228,7 @@ func TestIntegrationDashboardsAppV1Alpha1(t *testing.T) {
|
||||||
runDashboardTest(t, helper, gvr)
|
runDashboardTest(t, helper, gvr)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("v1alpha1 with dual writer mode 3", func(t *testing.T) {
|
t.Run("v1 with dual writer mode 3", func(t *testing.T) {
|
||||||
helper := apis.NewK8sTestHelper(t, testinfra.GrafanaOpts{
|
helper := apis.NewK8sTestHelper(t, testinfra.GrafanaOpts{
|
||||||
DisableAnonymous: true,
|
DisableAnonymous: true,
|
||||||
UnifiedStorageConfig: map[string]setting.UnifiedStorageConfig{
|
UnifiedStorageConfig: map[string]setting.UnifiedStorageConfig{
|
||||||
|
@ -240,7 +240,7 @@ func TestIntegrationDashboardsAppV1Alpha1(t *testing.T) {
|
||||||
runDashboardTest(t, helper, gvr)
|
runDashboardTest(t, helper, gvr)
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("v1alpha1 with dual writer mode 4", func(t *testing.T) {
|
t.Run("v1 with dual writer mode 4", func(t *testing.T) {
|
||||||
t.Skip("skipping test because of authorizer issue")
|
t.Skip("skipping test because of authorizer issue")
|
||||||
helper := apis.NewK8sTestHelper(t, testinfra.GrafanaOpts{
|
helper := apis.NewK8sTestHelper(t, testinfra.GrafanaOpts{
|
||||||
DisableAnonymous: true,
|
DisableAnonymous: true,
|
||||||
|
@ -343,14 +343,14 @@ func TestIntegrationLegacySupport(t *testing.T) {
|
||||||
Path: "/api/dashboards/uid/test-v0",
|
Path: "/api/dashboards/uid/test-v0",
|
||||||
}, &dtos.DashboardFullWithMeta{})
|
}, &dtos.DashboardFullWithMeta{})
|
||||||
require.Equal(t, 200, rsp.Response.StatusCode)
|
require.Equal(t, 200, rsp.Response.StatusCode)
|
||||||
require.Equal(t, "v0alpha1", rsp.Result.Meta.APIVersion)
|
require.Equal(t, dashboardV0.VERSION, rsp.Result.Meta.APIVersion)
|
||||||
|
|
||||||
rsp = apis.DoRequest(helper, apis.RequestParams{
|
rsp = apis.DoRequest(helper, apis.RequestParams{
|
||||||
User: helper.Org1.Admin,
|
User: helper.Org1.Admin,
|
||||||
Path: "/api/dashboards/uid/test-v1",
|
Path: "/api/dashboards/uid/test-v1",
|
||||||
}, &dtos.DashboardFullWithMeta{})
|
}, &dtos.DashboardFullWithMeta{})
|
||||||
require.Equal(t, 200, rsp.Response.StatusCode)
|
require.Equal(t, 200, rsp.Response.StatusCode)
|
||||||
require.Equal(t, "v0alpha1", rsp.Result.Meta.APIVersion) // v0alpha1 is used as the default version for /api
|
require.Equal(t, dashboardV0.VERSION, rsp.Result.Meta.APIVersion)
|
||||||
|
|
||||||
// V2 should send a not acceptable
|
// V2 should send a not acceptable
|
||||||
rsp = apis.DoRequest(helper, apis.RequestParams{
|
rsp = apis.DoRequest(helper, apis.RequestParams{
|
||||||
|
|
|
@ -9,10 +9,15 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
dashboardv0alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
"github.com/stretchr/testify/require"
|
||||||
dashboardv1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
dashboardv2alpha1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
folders "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
|
dashboardV0 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v0alpha1"
|
||||||
|
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
|
dashboardV2 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v2alpha1"
|
||||||
|
foldersV1 "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/apiserver/rest"
|
"github.com/grafana/grafana/pkg/apiserver/rest"
|
||||||
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
||||||
"github.com/grafana/grafana/pkg/services/folder"
|
"github.com/grafana/grafana/pkg/services/folder"
|
||||||
|
@ -22,10 +27,6 @@ import (
|
||||||
"github.com/grafana/grafana/pkg/tests/testinfra"
|
"github.com/grafana/grafana/pkg/tests/testinfra"
|
||||||
"github.com/grafana/grafana/pkg/tests/testsuite"
|
"github.com/grafana/grafana/pkg/tests/testsuite"
|
||||||
"github.com/grafana/grafana/pkg/util"
|
"github.com/grafana/grafana/pkg/util"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
"github.com/grafana/grafana/pkg/apimachinery/identity"
|
||||||
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
"github.com/grafana/grafana/pkg/apimachinery/utils"
|
||||||
|
@ -258,11 +259,11 @@ func runDashboardValidationTests(t *testing.T, ctx TestContext) {
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "v0alpha1 dashboard with wrong spec should not throw on v0",
|
name: "v0alpha1 dashboard with wrong spec should not throw on v0",
|
||||||
resourceInfo: dashboardv0alpha1.DashboardResourceInfo,
|
resourceInfo: dashboardV0.DashboardResourceInfo,
|
||||||
expectSpecErr: false,
|
expectSpecErr: false,
|
||||||
testObject: &unstructured.Unstructured{
|
testObject: &unstructured.Unstructured{
|
||||||
Object: map[string]interface{}{
|
Object: map[string]interface{}{
|
||||||
"apiVersion": dashboardv0alpha1.DashboardResourceInfo.TypeMeta().APIVersion,
|
"apiVersion": dashboardV0.DashboardResourceInfo.TypeMeta().APIVersion,
|
||||||
"kind": "Dashboard",
|
"kind": "Dashboard",
|
||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"generateName": "test-",
|
"generateName": "test-",
|
||||||
|
@ -279,11 +280,11 @@ func runDashboardValidationTests(t *testing.T, ctx TestContext) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "v1 dashboard with wrong spec should throw on v1",
|
name: "v1 dashboard with wrong spec should throw on v1",
|
||||||
resourceInfo: dashboardv1.DashboardResourceInfo,
|
resourceInfo: dashboardV1.DashboardResourceInfo,
|
||||||
expectSpecErr: true,
|
expectSpecErr: true,
|
||||||
testObject: &unstructured.Unstructured{
|
testObject: &unstructured.Unstructured{
|
||||||
Object: map[string]interface{}{
|
Object: map[string]interface{}{
|
||||||
"apiVersion": dashboardv1.DashboardResourceInfo.TypeMeta().APIVersion,
|
"apiVersion": dashboardV1.DashboardResourceInfo.TypeMeta().APIVersion,
|
||||||
"kind": "Dashboard",
|
"kind": "Dashboard",
|
||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"generateName": "test-",
|
"generateName": "test-",
|
||||||
|
@ -300,11 +301,11 @@ func runDashboardValidationTests(t *testing.T, ctx TestContext) {
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "v2alpha1 dashboard with correct spec should not throw on v2",
|
name: "v2alpha1 dashboard with correct spec should not throw on v2",
|
||||||
resourceInfo: dashboardv2alpha1.DashboardResourceInfo,
|
resourceInfo: dashboardV2.DashboardResourceInfo,
|
||||||
expectSpecErr: false,
|
expectSpecErr: false,
|
||||||
testObject: &unstructured.Unstructured{
|
testObject: &unstructured.Unstructured{
|
||||||
Object: map[string]interface{}{
|
Object: map[string]interface{}{
|
||||||
"apiVersion": dashboardv2alpha1.DashboardResourceInfo.TypeMeta().APIVersion,
|
"apiVersion": dashboardV2.DashboardResourceInfo.TypeMeta().APIVersion,
|
||||||
"kind": "Dashboard",
|
"kind": "Dashboard",
|
||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"generateName": "test-",
|
"generateName": "test-",
|
||||||
|
@ -786,12 +787,12 @@ func createTestContext(t *testing.T, helper *apis.K8sTestHelper, orgUsers apis.O
|
||||||
|
|
||||||
// getDashboardGVR returns the dashboard GroupVersionResource
|
// getDashboardGVR returns the dashboard GroupVersionResource
|
||||||
func getDashboardGVR() schema.GroupVersionResource {
|
func getDashboardGVR() schema.GroupVersionResource {
|
||||||
return dashboardv1.DashboardResourceInfo.GroupVersionResource()
|
return dashboardV1.DashboardResourceInfo.GroupVersionResource()
|
||||||
}
|
}
|
||||||
|
|
||||||
// getFolderGVR returns the folder GroupVersionResource
|
// getFolderGVR returns the folder GroupVersionResource
|
||||||
func getFolderGVR() schema.GroupVersionResource {
|
func getFolderGVR() schema.GroupVersionResource {
|
||||||
return folders.FolderResourceInfo.GroupVersionResource()
|
return foldersV1.FolderResourceInfo.GroupVersionResource()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get a resource client for the specified user
|
// Get a resource client for the specified user
|
||||||
|
@ -822,8 +823,8 @@ func createFolderObject(t *testing.T, title string, namespace string, parentFold
|
||||||
|
|
||||||
folderObj := &unstructured.Unstructured{
|
folderObj := &unstructured.Unstructured{
|
||||||
Object: map[string]interface{}{
|
Object: map[string]interface{}{
|
||||||
"apiVersion": folders.FolderResourceInfo.GroupVersion().String(),
|
"apiVersion": foldersV1.FolderResourceInfo.GroupVersion().String(),
|
||||||
"kind": folders.FolderResourceInfo.GroupVersionKind().Kind,
|
"kind": foldersV1.FolderResourceInfo.GroupVersionKind().Kind,
|
||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"generateName": "test-folder-",
|
"generateName": "test-folder-",
|
||||||
"namespace": namespace,
|
"namespace": namespace,
|
||||||
|
@ -878,8 +879,8 @@ func createDashboardObject(t *testing.T, title string, folderUID string, generat
|
||||||
|
|
||||||
dashObj := &unstructured.Unstructured{
|
dashObj := &unstructured.Unstructured{
|
||||||
Object: map[string]interface{}{
|
Object: map[string]interface{}{
|
||||||
"apiVersion": dashboardv1.DashboardResourceInfo.GroupVersion().String(),
|
"apiVersion": dashboardV1.DashboardResourceInfo.GroupVersion().String(),
|
||||||
"kind": dashboardv1.DashboardResourceInfo.GroupVersionKind().Kind,
|
"kind": dashboardV1.DashboardResourceInfo.GroupVersionKind().Kind,
|
||||||
"metadata": map[string]interface{}{
|
"metadata": map[string]interface{}{
|
||||||
"generateName": "test-",
|
"generateName": "test-",
|
||||||
"annotations": map[string]interface{}{
|
"annotations": map[string]interface{}{
|
||||||
|
@ -1464,7 +1465,7 @@ func runDashboardPermissionTests(t *testing.T, ctx TestContext) {
|
||||||
//statusErr := ctx.Helper.AsStatusError(err)
|
//statusErr := ctx.Helper.AsStatusError(err)
|
||||||
//require.Equal(t, http.StatusNotFound, int(statusErr.Status().Code), "Should get 404 Not Found")
|
//require.Equal(t, http.StatusNotFound, int(statusErr.Status().Code), "Should get 404 Not Found")
|
||||||
// TODO: Find out why this throws a 500 instead of a 404 with this message:
|
// TODO: Find out why this throws a 500 instead of a 404 with this message:
|
||||||
// an error on the server (\"Internal Server Error: \\\"/apis/dashboard.grafana.app/v1alpha1/namespaces/org-3/dashboards/test-cs6xk\\\": Dashboard not found\") has prevented the request from succeeding"
|
// an error on the server (\"Internal Server Error: \\\"/apis/dashboard.grafana.app/v1beta1/namespaces/org-3/dashboards/test-cs6xk\\\": Dashboard not found\") has prevented the request from succeeding"
|
||||||
|
|
||||||
// Clean up
|
// Clean up
|
||||||
err = adminClient.Resource.Delete(context.Background(), org1DashUID, v1.DeleteOptions{})
|
err = adminClient.Resource.Delete(context.Background(), org1DashUID, v1.DeleteOptions{})
|
||||||
|
@ -1649,7 +1650,7 @@ func runCrossOrgTests(t *testing.T, org1Ctx, org2Ctx TestContext) {
|
||||||
require.Error(t, err, "Should not be able to access dashboard from another org")
|
require.Error(t, err, "Should not be able to access dashboard from another org")
|
||||||
//statusErr := org1Ctx.Helper.AsStatusError(err)
|
//statusErr := org1Ctx.Helper.AsStatusError(err)
|
||||||
// TODO: Find out why this throws a 500 instead of a 404 with this message:
|
// TODO: Find out why this throws a 500 instead of a 404 with this message:
|
||||||
// "an error on the server (\"Internal Server Error: \\\"/apis/dashboard.grafana.app/v1alpha1/namespaces/default/dashboards/test-rbm2q\\\": Dashboard not found\") has prevented the request from succeeding"
|
// "an error on the server (\"Internal Server Error: \\\"/apis/dashboard.grafana.app/v1beta1/namespaces/default/dashboards/test-rbm2q\\\": Dashboard not found\") has prevented the request from succeeding"
|
||||||
//require.Equal(t, http.StatusNotFound, int(statusErr.Status().Code), "Should get 404 Not Found")
|
//require.Equal(t, http.StatusNotFound, int(statusErr.Status().Code), "Should get 404 Not Found")
|
||||||
|
|
||||||
// Get a dashboard as admin from the target org to then send an update request
|
// Get a dashboard as admin from the target org to then send an update request
|
||||||
|
@ -1871,7 +1872,7 @@ func runDashboardHttpTest(t *testing.T, ctx TestContext, foreignOrgCtx TestConte
|
||||||
"POST", locTC.name, userTC.name)
|
"POST", locTC.name, userTC.name)
|
||||||
|
|
||||||
// Construct the dashboard URL
|
// Construct the dashboard URL
|
||||||
dashboardPath := fmt.Sprintf("/apis/dashboard.grafana.app/v1alpha1/namespaces/%s/dashboards", ctx.Helper.Namespacer(ctx.OrgID))
|
dashboardPath := fmt.Sprintf("/apis/dashboard.grafana.app/v1beta1/namespaces/%s/dashboards", ctx.Helper.Namespacer(ctx.OrgID))
|
||||||
|
|
||||||
// Create dashboard JSON with a single template
|
// Create dashboard JSON with a single template
|
||||||
var metadata string
|
var metadata string
|
||||||
|
@ -1884,7 +1885,7 @@ func runDashboardHttpTest(t *testing.T, ctx TestContext, foreignOrgCtx TestConte
|
||||||
|
|
||||||
dashboardJSON := fmt.Sprintf(`{
|
dashboardJSON := fmt.Sprintf(`{
|
||||||
"kind": "Dashboard",
|
"kind": "Dashboard",
|
||||||
"apiVersion": "dashboard.grafana.app/v1alpha1",
|
"apiVersion": "dashboard.grafana.app/v1beta1",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
%s
|
%s
|
||||||
},
|
},
|
||||||
|
@ -1915,7 +1916,7 @@ func runDashboardHttpTest(t *testing.T, ctx TestContext, foreignOrgCtx TestConte
|
||||||
"Failed to %s dashboard as %s: %s", "POST", userTC.user.Identity.GetLogin(), createResp.Response.Status)
|
"Failed to %s dashboard as %s: %s", "POST", userTC.user.Identity.GetLogin(), createResp.Response.Status)
|
||||||
|
|
||||||
// Construct the dashboard path with the actual UID for GET/DELETE
|
// Construct the dashboard path with the actual UID for GET/DELETE
|
||||||
dashboardPath = fmt.Sprintf("/apis/dashboard.grafana.app/v1alpha1/namespaces/%s/dashboards/%s",
|
dashboardPath = fmt.Sprintf("/apis/dashboard.grafana.app/v1beta1/namespaces/%s/dashboards/%s",
|
||||||
ctx.Helper.Namespacer(ctx.OrgID), dashboardUID)
|
ctx.Helper.Namespacer(ctx.OrgID), dashboardUID)
|
||||||
|
|
||||||
// Verify the dashboard was created by getting it via the admin client
|
// Verify the dashboard was created by getting it via the admin client
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
apiVersion: dashboard.grafana.app/v1alpha1
|
apiVersion: dashboard.grafana.app/v1beta1
|
||||||
kind: Dashboard
|
kind: Dashboard
|
||||||
metadata:
|
metadata:
|
||||||
name: test-v1
|
name: test-v1
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
"openapi": "3.0.0",
|
"openapi": "3.0.0",
|
||||||
"info": {
|
"info": {
|
||||||
"description": "Grafana dashboards as resources",
|
"description": "Grafana dashboards as resources",
|
||||||
"title": "dashboard.grafana.app/v1alpha1"
|
"title": "dashboard.grafana.app/v1beta1"
|
||||||
},
|
},
|
||||||
"paths": {
|
"paths": {
|
||||||
"/apis/dashboard.grafana.app/v1alpha1/": {
|
"/apis/dashboard.grafana.app/v1beta1/": {
|
||||||
"get": {
|
"get": {
|
||||||
"tags": [
|
"tags": [
|
||||||
"API Discovery"
|
"API Discovery"
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/apis/dashboard.grafana.app/v1alpha1/namespaces/{namespace}/dashboards": {
|
"/apis/dashboard.grafana.app/v1beta1/namespaces/{namespace}/dashboards": {
|
||||||
"get": {
|
"get": {
|
||||||
"tags": [
|
"tags": [
|
||||||
"Dashboard"
|
"Dashboard"
|
||||||
|
@ -141,27 +141,27 @@
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardList"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardList"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/json;stream=watch": {
|
"application/json;stream=watch": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardList"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardList"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/vnd.kubernetes.protobuf": {
|
"application/vnd.kubernetes.protobuf": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardList"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardList"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/vnd.kubernetes.protobuf;stream=watch": {
|
"application/vnd.kubernetes.protobuf;stream=watch": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardList"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardList"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/yaml": {
|
"application/yaml": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardList"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardList"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -170,7 +170,7 @@
|
||||||
"x-kubernetes-action": "list",
|
"x-kubernetes-action": "list",
|
||||||
"x-kubernetes-group-version-kind": {
|
"x-kubernetes-group-version-kind": {
|
||||||
"group": "dashboard.grafana.app",
|
"group": "dashboard.grafana.app",
|
||||||
"version": "v1alpha1",
|
"version": "v1beta1",
|
||||||
"kind": "Dashboard"
|
"kind": "Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -213,17 +213,17 @@
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/vnd.kubernetes.protobuf": {
|
"application/vnd.kubernetes.protobuf": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/yaml": {
|
"application/yaml": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -235,17 +235,17 @@
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/vnd.kubernetes.protobuf": {
|
"application/vnd.kubernetes.protobuf": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/yaml": {
|
"application/yaml": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -255,17 +255,17 @@
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/vnd.kubernetes.protobuf": {
|
"application/vnd.kubernetes.protobuf": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/yaml": {
|
"application/yaml": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -275,17 +275,17 @@
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/vnd.kubernetes.protobuf": {
|
"application/vnd.kubernetes.protobuf": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/yaml": {
|
"application/yaml": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -294,7 +294,7 @@
|
||||||
"x-kubernetes-action": "post",
|
"x-kubernetes-action": "post",
|
||||||
"x-kubernetes-group-version-kind": {
|
"x-kubernetes-group-version-kind": {
|
||||||
"group": "dashboard.grafana.app",
|
"group": "dashboard.grafana.app",
|
||||||
"version": "v1alpha1",
|
"version": "v1beta1",
|
||||||
"kind": "Dashboard"
|
"kind": "Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -448,7 +448,7 @@
|
||||||
"x-kubernetes-action": "deletecollection",
|
"x-kubernetes-action": "deletecollection",
|
||||||
"x-kubernetes-group-version-kind": {
|
"x-kubernetes-group-version-kind": {
|
||||||
"group": "dashboard.grafana.app",
|
"group": "dashboard.grafana.app",
|
||||||
"version": "v1alpha1",
|
"version": "v1beta1",
|
||||||
"kind": "Dashboard"
|
"kind": "Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -474,7 +474,7 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/apis/dashboard.grafana.app/v1alpha1/namespaces/{namespace}/dashboards/{name}": {
|
"/apis/dashboard.grafana.app/v1beta1/namespaces/{namespace}/dashboards/{name}": {
|
||||||
"get": {
|
"get": {
|
||||||
"tags": [
|
"tags": [
|
||||||
"Dashboard"
|
"Dashboard"
|
||||||
|
@ -487,17 +487,17 @@
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/vnd.kubernetes.protobuf": {
|
"application/vnd.kubernetes.protobuf": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/yaml": {
|
"application/yaml": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -506,7 +506,7 @@
|
||||||
"x-kubernetes-action": "get",
|
"x-kubernetes-action": "get",
|
||||||
"x-kubernetes-group-version-kind": {
|
"x-kubernetes-group-version-kind": {
|
||||||
"group": "dashboard.grafana.app",
|
"group": "dashboard.grafana.app",
|
||||||
"version": "v1alpha1",
|
"version": "v1beta1",
|
||||||
"kind": "Dashboard"
|
"kind": "Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -549,17 +549,17 @@
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/vnd.kubernetes.protobuf": {
|
"application/vnd.kubernetes.protobuf": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/yaml": {
|
"application/yaml": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -571,17 +571,17 @@
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/vnd.kubernetes.protobuf": {
|
"application/vnd.kubernetes.protobuf": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/yaml": {
|
"application/yaml": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -591,17 +591,17 @@
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/vnd.kubernetes.protobuf": {
|
"application/vnd.kubernetes.protobuf": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/yaml": {
|
"application/yaml": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -610,7 +610,7 @@
|
||||||
"x-kubernetes-action": "put",
|
"x-kubernetes-action": "put",
|
||||||
"x-kubernetes-group-version-kind": {
|
"x-kubernetes-group-version-kind": {
|
||||||
"group": "dashboard.grafana.app",
|
"group": "dashboard.grafana.app",
|
||||||
"version": "v1alpha1",
|
"version": "v1beta1",
|
||||||
"kind": "Dashboard"
|
"kind": "Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -712,7 +712,7 @@
|
||||||
"x-kubernetes-action": "delete",
|
"x-kubernetes-action": "delete",
|
||||||
"x-kubernetes-group-version-kind": {
|
"x-kubernetes-group-version-kind": {
|
||||||
"group": "dashboard.grafana.app",
|
"group": "dashboard.grafana.app",
|
||||||
"version": "v1alpha1",
|
"version": "v1beta1",
|
||||||
"kind": "Dashboard"
|
"kind": "Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -791,17 +791,17 @@
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/vnd.kubernetes.protobuf": {
|
"application/vnd.kubernetes.protobuf": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/yaml": {
|
"application/yaml": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -811,17 +811,17 @@
|
||||||
"content": {
|
"content": {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/vnd.kubernetes.protobuf": {
|
"application/vnd.kubernetes.protobuf": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"application/yaml": {
|
"application/yaml": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -830,7 +830,7 @@
|
||||||
"x-kubernetes-action": "patch",
|
"x-kubernetes-action": "patch",
|
||||||
"x-kubernetes-group-version-kind": {
|
"x-kubernetes-group-version-kind": {
|
||||||
"group": "dashboard.grafana.app",
|
"group": "dashboard.grafana.app",
|
||||||
"version": "v1alpha1",
|
"version": "v1beta1",
|
||||||
"kind": "Dashboard"
|
"kind": "Dashboard"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -866,7 +866,7 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/apis/dashboard.grafana.app/v1alpha1/namespaces/{namespace}/dashboards/{name}/dto": {
|
"/apis/dashboard.grafana.app/v1beta1/namespaces/{namespace}/dashboards/{name}/dto": {
|
||||||
"get": {
|
"get": {
|
||||||
"tags": [
|
"tags": [
|
||||||
"Dashboard"
|
"Dashboard"
|
||||||
|
@ -879,7 +879,7 @@
|
||||||
"content": {
|
"content": {
|
||||||
"*/*": {
|
"*/*": {
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardWithAccessInfo"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardWithAccessInfo"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -888,7 +888,7 @@
|
||||||
"x-kubernetes-action": "connect",
|
"x-kubernetes-action": "connect",
|
||||||
"x-kubernetes-group-version-kind": {
|
"x-kubernetes-group-version-kind": {
|
||||||
"group": "dashboard.grafana.app",
|
"group": "dashboard.grafana.app",
|
||||||
"version": "v1alpha1",
|
"version": "v1beta1",
|
||||||
"kind": "DashboardWithAccessInfo"
|
"kind": "DashboardWithAccessInfo"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -918,7 +918,7 @@
|
||||||
},
|
},
|
||||||
"components": {
|
"components": {
|
||||||
"schemas": {
|
"schemas": {
|
||||||
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.AnnotationActions": {
|
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.AnnotationActions": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"canAdd",
|
"canAdd",
|
||||||
|
@ -940,7 +940,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.AnnotationPermission": {
|
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.AnnotationPermission": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"dashboard",
|
"dashboard",
|
||||||
|
@ -951,7 +951,7 @@
|
||||||
"default": {},
|
"default": {},
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.AnnotationActions"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.AnnotationActions"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -959,13 +959,13 @@
|
||||||
"default": {},
|
"default": {},
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.AnnotationActions"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.AnnotationActions"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard": {
|
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"metadata",
|
"metadata",
|
||||||
|
@ -1001,7 +1001,7 @@
|
||||||
"default": {},
|
"default": {},
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardStatus"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardStatus"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -1010,11 +1010,11 @@
|
||||||
{
|
{
|
||||||
"group": "dashboard.grafana.app",
|
"group": "dashboard.grafana.app",
|
||||||
"kind": "Dashboard",
|
"kind": "Dashboard",
|
||||||
"version": "v1alpha1"
|
"version": "v1beta1"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardAccess": {
|
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardAccess": {
|
||||||
"description": "Information about how the requesting user can use a given dashboard",
|
"description": "Information about how the requesting user can use a given dashboard",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
|
@ -1027,7 +1027,7 @@
|
||||||
],
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
"annotationsPermissions": {
|
"annotationsPermissions": {
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.AnnotationPermission"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.AnnotationPermission"
|
||||||
},
|
},
|
||||||
"canAdmin": {
|
"canAdmin": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
|
@ -1059,7 +1059,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardConversionStatus": {
|
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardConversionStatus": {
|
||||||
"description": "ConversionStatus is the status of the conversion of the dashboard.",
|
"description": "ConversionStatus is the status of the conversion of the dashboard.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
|
@ -1085,7 +1085,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardList": {
|
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardList": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
"metadata",
|
"metadata",
|
||||||
|
@ -1102,7 +1102,7 @@
|
||||||
"default": {},
|
"default": {},
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.Dashboard"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.Dashboard"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -1124,24 +1124,24 @@
|
||||||
{
|
{
|
||||||
"group": "dashboard.grafana.app",
|
"group": "dashboard.grafana.app",
|
||||||
"kind": "DashboardList",
|
"kind": "DashboardList",
|
||||||
"version": "v1alpha1"
|
"version": "v1beta1"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardStatus": {
|
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardStatus": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"conversion": {
|
"conversion": {
|
||||||
"description": "Optional conversion status.",
|
"description": "Optional conversion status.",
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardConversionStatus"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardConversionStatus"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardWithAccessInfo": {
|
"com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardWithAccessInfo": {
|
||||||
"description": "This is like the legacy DTO where access and metadata are all returned in a single call",
|
"description": "This is like the legacy DTO where access and metadata are all returned in a single call",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [
|
"required": [
|
||||||
|
@ -1155,7 +1155,7 @@
|
||||||
"default": {},
|
"default": {},
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardAccess"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardAccess"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -1187,7 +1187,7 @@
|
||||||
"default": {},
|
"default": {},
|
||||||
"allOf": [
|
"allOf": [
|
||||||
{
|
{
|
||||||
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1alpha1.DashboardStatus"
|
"$ref": "#/components/schemas/com.github.grafana.grafana.apps.dashboard.pkg.apis.dashboard.v1beta1.DashboardStatus"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -1196,7 +1196,7 @@
|
||||||
{
|
{
|
||||||
"group": "dashboard.grafana.app",
|
"group": "dashboard.grafana.app",
|
||||||
"kind": "DashboardWithAccessInfo",
|
"kind": "DashboardWithAccessInfo",
|
||||||
"version": "v1alpha1"
|
"version": "v1beta1"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
|
@ -65,7 +65,7 @@ func TestIntegrationOpenAPIs(t *testing.T) {
|
||||||
Version: "v0alpha1",
|
Version: "v0alpha1",
|
||||||
}, {
|
}, {
|
||||||
Group: "dashboard.grafana.app",
|
Group: "dashboard.grafana.app",
|
||||||
Version: "v1alpha1",
|
Version: "v1beta1",
|
||||||
}, {
|
}, {
|
||||||
Group: "dashboard.grafana.app",
|
Group: "dashboard.grafana.app",
|
||||||
Version: "v2alpha1",
|
Version: "v2alpha1",
|
||||||
|
|
|
@ -7,6 +7,7 @@ import (
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
|
||||||
|
dashboardV1 "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
"github.com/grafana/grafana/pkg/registry/apis/provisioning/resources"
|
"github.com/grafana/grafana/pkg/registry/apis/provisioning/resources"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -24,22 +25,24 @@ func TestIntegrationProvisioning_Client(t *testing.T) {
|
||||||
|
|
||||||
t.Run("dashboard client support", func(t *testing.T) {
|
t.Run("dashboard client support", func(t *testing.T) {
|
||||||
_, _, err := clients.ForResource(schema.GroupVersionResource{
|
_, _, err := clients.ForResource(schema.GroupVersionResource{
|
||||||
Group: "dashboard.grafana.app",
|
Group: dashboardV1.GROUP,
|
||||||
|
Version: dashboardV1.VERSION,
|
||||||
Resource: "dashboards",
|
Resource: "dashboards",
|
||||||
Version: "v1alpha1",
|
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// With empty version, we should get the preferred version (v1alpha1)
|
// With empty version, we should get the preferred version (v1beta1)
|
||||||
_, _, err = clients.ForResource(schema.GroupVersionResource{
|
_, gvk, err := clients.ForResource(schema.GroupVersionResource{
|
||||||
Group: "dashboard.grafana.app",
|
Group: dashboardV1.GROUP,
|
||||||
Resource: "dashboards",
|
Resource: "dashboards",
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, dashboardV1.VERSION, gvk.Version)
|
||||||
|
require.Equal(t, "Dashboard", gvk.Kind)
|
||||||
|
|
||||||
_, _, err = clients.ForKind(schema.GroupVersionKind{
|
_, _, err = clients.ForKind(schema.GroupVersionKind{
|
||||||
Group: "dashboard.grafana.app",
|
Group: dashboardV1.GROUP,
|
||||||
Version: "v1alpha1",
|
Version: dashboardV1.VERSION,
|
||||||
Kind: "Dashboard",
|
Kind: "Dashboard",
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"apiVersion": "dashboard.grafana.app/v1alpha1",
|
"apiVersion": "dashboard.grafana.app/v1beta1",
|
||||||
"kind": "Dashboard",
|
"kind": "Dashboard",
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"name": "root_dashboard",
|
"name": "root_dashboard",
|
||||||
|
|
|
@ -23,7 +23,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/client-go/rest"
|
"k8s.io/client-go/rest"
|
||||||
|
|
||||||
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1alpha1"
|
dashboard "github.com/grafana/grafana/apps/dashboard/pkg/apis/dashboard/v1beta1"
|
||||||
folder "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
folder "github.com/grafana/grafana/apps/folder/pkg/apis/folder/v1beta1"
|
||||||
provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1"
|
provisioning "github.com/grafana/grafana/pkg/apis/provisioning/v0alpha1"
|
||||||
grafanarest "github.com/grafana/grafana/pkg/apiserver/rest"
|
grafanarest "github.com/grafana/grafana/pkg/apiserver/rest"
|
||||||
|
|
|
@ -1235,7 +1235,7 @@ const v1ProvisionedDashboardResource = {
|
||||||
resource: {
|
resource: {
|
||||||
type: {
|
type: {
|
||||||
group: 'dashboard.grafana.app',
|
group: 'dashboard.grafana.app',
|
||||||
version: 'v1alpha1',
|
version: 'v1beta1',
|
||||||
kind: 'Dashboard',
|
kind: 'Dashboard',
|
||||||
resource: 'dashboards',
|
resource: 'dashboards',
|
||||||
},
|
},
|
||||||
|
@ -1243,7 +1243,7 @@ const v1ProvisionedDashboardResource = {
|
||||||
existing: {},
|
existing: {},
|
||||||
action: 'update',
|
action: 'update',
|
||||||
dryRun: {
|
dryRun: {
|
||||||
apiVersion: 'dashboard.grafana.app/v1alpha1',
|
apiVersion: 'dashboard.grafana.app/v1beta1',
|
||||||
kind: 'Dashboard',
|
kind: 'Dashboard',
|
||||||
metadata: {
|
metadata: {
|
||||||
annotations: {
|
annotations: {
|
||||||
|
|
|
@ -34,7 +34,7 @@ export interface DashboardVersionError extends Error {
|
||||||
status: number;
|
status: number;
|
||||||
data: {
|
data: {
|
||||||
// The version which was stored when the dashboard was created / updated.
|
// The version which was stored when the dashboard was created / updated.
|
||||||
// Currently known versions are: 'v2alpha1' | 'v1alpha1' | 'v0alpha1'
|
// Currently known versions are: 'v2alpha1' | 'v1beta1' | 'v0alpha1'
|
||||||
storedVersion: string;
|
storedVersion: string;
|
||||||
message: string;
|
message: string;
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,7 +8,7 @@ import { K8sDashboardAPI } from './v1';
|
||||||
|
|
||||||
const mockDashboardDto: DashboardWithAccessInfo<DashboardDataDTO> = {
|
const mockDashboardDto: DashboardWithAccessInfo<DashboardDataDTO> = {
|
||||||
kind: 'DashboardWithAccessInfo',
|
kind: 'DashboardWithAccessInfo',
|
||||||
apiVersion: 'v1alpha1',
|
apiVersion: 'v1beta1',
|
||||||
|
|
||||||
metadata: {
|
metadata: {
|
||||||
name: 'dash-uid',
|
name: 'dash-uid',
|
||||||
|
@ -293,7 +293,7 @@ describe('v1 dashboard API', () => {
|
||||||
await expect(api.getDashboardDTO('test')).rejects.toThrow('backend conversion not yet implemented');
|
await expect(api.getDashboardDTO('test')).rejects.toThrow('backend conversion not yet implemented');
|
||||||
});
|
});
|
||||||
|
|
||||||
it.each(['v0alpha1', 'v1alpha1'])('should not throw for %s conversion errors', async (correctStoredVersion) => {
|
it.each(['v0alpha1', 'v1beta1'])('should not throw for %s conversion errors', async (correctStoredVersion) => {
|
||||||
const mockDashboardWithError = {
|
const mockDashboardWithError = {
|
||||||
...mockDashboardDto,
|
...mockDashboardDto,
|
||||||
status: {
|
status: {
|
||||||
|
|
|
@ -27,7 +27,7 @@ export class K8sDashboardAPI implements DashboardAPI<DashboardDTO, Dashboard> {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.client = new ScopedResourceClient<DashboardDataDTO>({
|
this.client = new ScopedResourceClient<DashboardDataDTO>({
|
||||||
group: 'dashboard.grafana.app',
|
group: 'dashboard.grafana.app',
|
||||||
version: 'v1alpha1',
|
version: 'v1beta1',
|
||||||
resource: 'dashboards',
|
resource: 'dashboards',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -244,14 +244,14 @@ describe('v2 dashboard API', () => {
|
||||||
await expect(api.getDashboardDTO('test')).rejects.toThrow('backend conversion not yet implemented');
|
await expect(api.getDashboardDTO('test')).rejects.toThrow('backend conversion not yet implemented');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should throw DashboardVersionError for v1alpha1 conversion error', async () => {
|
it('should throw DashboardVersionError for v1beta1 conversion error', async () => {
|
||||||
const mockDashboardWithError = {
|
const mockDashboardWithError = {
|
||||||
...mockDashboardDto,
|
...mockDashboardDto,
|
||||||
status: {
|
status: {
|
||||||
conversion: {
|
conversion: {
|
||||||
failed: true,
|
failed: true,
|
||||||
error: 'backend conversion not yet implemented',
|
error: 'backend conversion not yet implemented',
|
||||||
storedVersion: 'v1alpha1',
|
storedVersion: 'v1beta1',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -44,6 +44,7 @@ export class K8sDashboardV2API
|
||||||
if (
|
if (
|
||||||
dashboard.status?.conversion?.failed &&
|
dashboard.status?.conversion?.failed &&
|
||||||
(dashboard.status.conversion.storedVersion === 'v1alpha1' ||
|
(dashboard.status.conversion.storedVersion === 'v1alpha1' ||
|
||||||
|
dashboard.status.conversion.storedVersion === 'v1beta1' ||
|
||||||
dashboard.status.conversion.storedVersion === 'v0alpha1')
|
dashboard.status.conversion.storedVersion === 'v0alpha1')
|
||||||
) {
|
) {
|
||||||
throw new DashboardVersionError(dashboard.status.conversion.storedVersion, dashboard.status.conversion.error);
|
throw new DashboardVersionError(dashboard.status.conversion.storedVersion, dashboard.status.conversion.error);
|
||||||
|
|
Loading…
Reference in New Issue