Scopes: Add groups property to ScopeDashboardBinding (#92077)

- Note: The `dashboardTitle` property and this property (`groups`) are likely to move from the `spec` container to the `status` container within the `scopeDashboardBinding` object in the future.
This commit is contained in:
Kyle Brandt 2024-08-20 12:32:16 -04:00 committed by GitHub
parent 15a623c344
commit cab5818bc7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 42 additions and 7 deletions

View File

@ -53,6 +53,7 @@ var ScopeDashboardBindingResourceInfo = common.NewResourceInfo(GROUP, VERSION,
{Name: "Created At", Type: "date"},
{Name: "Dashboard", Type: "string"},
{Name: "Scope", Type: "string"},
{Name: "Groups", Type: "array"},
},
Reader: func(obj any) ([]interface{}, error) {
m, ok := obj.(*ScopeDashboardBinding)
@ -64,6 +65,7 @@ var ScopeDashboardBindingResourceInfo = common.NewResourceInfo(GROUP, VERSION,
m.CreationTimestamp.UTC().Format(time.RFC3339),
m.Spec.Dashboard,
m.Spec.Scope,
m.Spec.Groups,
}, nil
},
},

View File

@ -60,9 +60,16 @@ type ScopeDashboardBinding struct {
}
type ScopeDashboardBindingSpec struct {
Dashboard string `json:"dashboard"`
Dashboard string `json:"dashboard"`
// DashboardTitle should be populated and update from the dashboard
DashboardTitle string `json:"dashboardTitle"`
// Groups is used for the grouping of dashboards that are suggested based
// on a scope. The source of truth for this information has not been
// determined yet.
Groups []string `json:"groups,omitempty"`
Scope string `json:"scope"`
}

View File

@ -108,7 +108,7 @@ func (in *ScopeDashboardBinding) DeepCopyInto(out *ScopeDashboardBinding) {
*out = *in
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
out.Spec = in.Spec
in.Spec.DeepCopyInto(&out.Spec)
return
}
@ -166,6 +166,11 @@ func (in *ScopeDashboardBindingList) DeepCopyObject() runtime.Object {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ScopeDashboardBindingSpec) DeepCopyInto(out *ScopeDashboardBindingSpec) {
*out = *in
if in.Groups != nil {
in, out := &in.Groups, &out.Groups
*out = make([]string, len(*in))
copy(*out, *in)
}
return
}

View File

@ -265,9 +265,25 @@ func schema_pkg_apis_scope_v0alpha1_ScopeDashboardBindingSpec(ref common.Referen
},
"dashboardTitle": {
SchemaProps: spec.SchemaProps{
Default: "",
Type: []string{"string"},
Format: "",
Description: "DashboardTitle should be populated and update from the dashboard",
Default: "",
Type: []string{"string"},
Format: "",
},
},
"groups": {
SchemaProps: spec.SchemaProps{
Description: "Groups is used for the grouping of dashboards that are suggested based on a scope. The source of truth for this information has not been determined yet.",
Type: []string{"array"},
Items: &spec.SchemaOrArray{
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Default: "",
Type: []string{"string"},
Format: "",
},
},
},
},
},
"scope": {

View File

@ -1,2 +1,3 @@
API rule violation: list_type_missing,github.com/grafana/grafana/pkg/apis/scope/v0alpha1,FindScopeDashboardBindingsResults,Items
API rule violation: list_type_missing,github.com/grafana/grafana/pkg/apis/scope/v0alpha1,ScopeDashboardBindingSpec,Groups
API rule violation: names_match,github.com/grafana/grafana/pkg/apis/scope/v0alpha1,ScopeNodeSpec,LinkID

View File

@ -4,4 +4,6 @@ metadata:
name: example_abc
spec:
scope: example
dashboard: abc
dashboard: abc
dashboardTitle: "Example Dashboard ABC"
groups: ["group1", "group2"]

View File

@ -4,4 +4,6 @@ metadata:
name: example_xyz
spec:
scope: example
dashboard: xyz
dashboard: xyz
dashboardTitle: "Example Dashboard XYZ"
groups: ["group2", "group3"]