@@ -8,11 +8,8 @@ import (
8
8
"fmt"
9
9
"sync"
10
10
11
- "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
12
- "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install"
13
11
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
14
- "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
15
- "k8s.io/apimachinery/pkg/runtime"
12
+ "k8s.io/apimachinery/pkg/runtime/schema"
16
13
"k8s.io/apimachinery/pkg/util/yaml"
17
14
)
18
15
@@ -33,22 +30,15 @@ func (c crdFile) mustUnmarshal() *apiextensionsv1.CustomResourceDefinition {
33
30
panic (fmt .Errorf ("unable to read crd file %s: %s" , path , err ))
34
31
}
35
32
36
- u := & unstructured. Unstructured {}
33
+ crd := & apiextensionsv1. CustomResourceDefinition {}
37
34
reader := bytes .NewReader (data )
38
35
decoder := yaml .NewYAMLOrJSONDecoder (reader , 30 )
39
- if err = decoder .Decode (u ); err != nil {
40
- panic (fmt .Errorf ("crd unmarshaling failed: %s" , err ))
41
- }
42
-
43
- // Step through unversioned type to support v1beta1 -> v1
44
- unversioned := & apiextensions.CustomResourceDefinition {}
45
- if err = scheme .Convert (u , unversioned , nil ); err != nil {
46
- panic (fmt .Errorf ("failed to convert crd: %s\n to v1: %s" , u , err ))
36
+ if err = decoder .Decode (crd ); err != nil {
37
+ panic (fmt .Errorf ("failed to unmarshal to crd: %s" , err ))
47
38
}
48
39
49
- crd := & apiextensionsv1.CustomResourceDefinition {}
50
- if err = scheme .Convert (unversioned , crd , nil ); err != nil {
51
- panic (fmt .Errorf ("failed to convert crd: %s\n to v1: %s" , u , err ))
40
+ if gvk := crd .GroupVersionKind (); gvk != supportedGVK {
41
+ panic (fmt .Errorf ("%s not supported" , gvk ))
52
42
}
53
43
54
44
return crd
@@ -59,13 +49,12 @@ var (
59
49
60
50
// loaded stores previously unmarshaled CustomResourceDefinitions indexed by their file descriptor.
61
51
loaded = map [crdFile ]* apiextensionsv1.CustomResourceDefinition {}
62
- // scheme provides conversions between type versions .
63
- scheme = runtime . NewScheme ()
52
+ // supportedGVK is the version of CustomResourceDefinition supported for unmarshaling .
53
+ supportedGVK schema. GroupVersionKind
64
54
)
65
55
66
56
func init () {
67
- // Add conversions between CRD versions
68
- install .Install (scheme )
57
+ supportedGVK = apiextensionsv1 .SchemeGroupVersion .WithKind ("CustomResourceDefinition" )
69
58
}
70
59
71
60
// getCRD lazily loads and returns the CustomResourceDefinition unmarshaled from a file.
0 commit comments