@@ -3,10 +3,21 @@ package envtest
3
3
import (
4
4
"reflect"
5
5
6
+ apiextensionsinstall "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install"
6
7
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
7
8
"k8s.io/apimachinery/pkg/runtime"
8
9
)
9
10
11
+ var (
12
+ crdScheme = runtime .NewScheme ()
13
+ )
14
+
15
+ // init is required to correctly initialize the crdScheme package variable.
16
+ // Installs the CRDv1 and CRDv1beta1 from the apiextensions package.
17
+ func init () {
18
+ apiextensionsinstall .Install (crdScheme )
19
+ }
20
+
10
21
// mergePaths merges two string slices containing paths.
11
22
// This function makes no guarantees about order of the merged slice.
12
23
func mergePaths (s1 , s2 []string ) []string {
@@ -30,10 +41,10 @@ func mergePaths(s1, s2 []string) []string {
30
41
// This function makes no guarantees about order of the merged slice.
31
42
func mergeCRDs (s1 , s2 []runtime.Object ) []runtime.Object {
32
43
m := make (map [string ]* unstructured.Unstructured )
33
- for _ , obj := range runtimeListToUnstructured (s1 ) {
44
+ for _ , obj := range runtimeCRDListToUnstructured (s1 ) {
34
45
m [obj .GetName ()] = obj
35
46
}
36
- for _ , obj := range runtimeListToUnstructured (s2 ) {
47
+ for _ , obj := range runtimeCRDListToUnstructured (s2 ) {
37
48
m [obj .GetName ()] = obj
38
49
}
39
50
merged := make ([]runtime.Object , len (m ))
@@ -57,21 +68,20 @@ func existsUnstructured(s1, s2 []*unstructured.Unstructured) bool {
57
68
return false
58
69
}
59
70
60
- func runtimeListToUnstructured (l []runtime.Object ) []* unstructured.Unstructured {
71
+ func runtimeCRDListToUnstructured (l []runtime.Object ) []* unstructured.Unstructured {
61
72
res := []* unstructured.Unstructured {}
62
73
for _ , obj := range l {
63
- m , err := runtime .DefaultUnstructuredConverter .ToUnstructured (obj .DeepCopyObject ())
64
- if err != nil {
74
+ u := & unstructured.Unstructured {}
75
+ if err := crdScheme .Convert (obj , u , nil ); err != nil {
76
+ log .Error (err , "error converting to unstructured object" , "object-kind" , obj .GetObjectKind ())
65
77
continue
66
78
}
67
- res = append (res , & unstructured.Unstructured {
68
- Object : m ,
69
- })
79
+ res = append (res , u )
70
80
}
71
81
return res
72
82
}
73
83
74
- func unstructuredListToRuntime (l []* unstructured.Unstructured ) []runtime.Object {
84
+ func unstructuredCRDListToRuntime (l []* unstructured.Unstructured ) []runtime.Object {
75
85
res := []runtime.Object {}
76
86
for _ , obj := range l {
77
87
res = append (res , obj .DeepCopy ())
0 commit comments