...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package k8s
16
17 import (
18 "fmt"
19
20 apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
21 "k8s.io/apimachinery/pkg/runtime/schema"
22 )
23
24 type SchemaReference struct {
25 CRD *apiextensions.CustomResourceDefinition
26 JsonSchema *apiextensions.JSONSchemaProps
27 GVK schema.GroupVersionKind
28 }
29
30 type SchemaReferenceUpdater interface {
31
32
33 UpdateSchema(crd *apiextensions.CustomResourceDefinition) error
34 }
35
36
37 func UpdateSchema(schemaRef *SchemaReference, crd *apiextensions.CustomResourceDefinition) error {
38 gvk := schema.GroupVersionKind{
39 Group: crd.Spec.Group,
40 Version: GetVersionFromCRD(crd),
41 Kind: crd.Spec.Names.Kind,
42 }
43 if schemaRef.GVK.String() != gvk.String() {
44 return fmt.Errorf("unexpected mismatch of GVK when updating schema reference for controller, old GVK = %s, new GVK = %s", schemaRef.GVK.String(), gvk.String())
45 }
46 schemaRef.CRD = crd
47 schemaRef.JsonSchema = GetOpenAPIV3SchemaFromCRD(crd)
48 return nil
49 }
50
View as plain text