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