@@ -27,6 +27,7 @@ import (
27
27
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
28
28
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
29
29
apiextensionsinstall "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install"
30
+ apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
30
31
v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
31
32
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
32
33
"k8s.io/apimachinery/pkg/runtime"
@@ -35,12 +36,12 @@ import (
35
36
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
36
37
"k8s.io/client-go/rest"
37
38
"sigs.k8s.io/controller-runtime/pkg/client"
39
+ "sigs.k8s.io/controller-runtime/pkg/envtest"
38
40
39
41
webhooktesting "github.com/jetstack/cert-manager/cmd/webhook/app/testing"
40
42
"github.com/jetstack/cert-manager/pkg/api"
41
43
apitesting "github.com/jetstack/cert-manager/pkg/api/testing"
42
44
"github.com/jetstack/cert-manager/test/internal/apiserver"
43
- "sigs.k8s.io/controller-runtime/pkg/envtest"
44
45
)
45
46
46
47
type StopFunc func ()
@@ -56,11 +57,10 @@ func RunControlPlane(t *testing.T, ctx context.Context) (*rest.Config, StopFunc)
56
57
for _ , crd := range crds {
57
58
t .Logf ("Found CRD with name %q" , crd .Name )
58
59
}
59
- patchCRDConversion (crds , webhookOpts .URL , webhookOpts .CAPEM )
60
- patchCRDServed (crds )
60
+ crds = patchCRDConversion (crds , webhookOpts .URL , webhookOpts .CAPEM )
61
61
62
62
if _ , err := envtest .InstallCRDs (config , envtest.CRDInstallOptions {
63
- CRDs : crdsToRuntimeObjects ( crds ) ,
63
+ CRDs : crds ,
64
64
}); err != nil {
65
65
t .Fatal (err )
66
66
}
@@ -97,21 +97,26 @@ func init() {
97
97
apiextensionsinstall .Install (internalScheme )
98
98
}
99
99
100
- func patchCRDConversion (crds []* v1.CustomResourceDefinition , url string , caPEM []byte ) {
100
+ func patchCRDConversion (crds []apiextensionsv1.CustomResourceDefinition , url string , caPEM []byte ) []apiextensionsv1.CustomResourceDefinition {
101
+ out := []apiextensionsv1.CustomResourceDefinition {}
101
102
for _ , crd := range crds {
102
103
for i := range crd .Spec .Versions {
103
104
crd .Spec .Versions [i ].Served = true
104
105
}
105
106
if crd .Spec .Conversion == nil {
107
+ out = append (out , crd )
106
108
continue
107
109
}
108
110
if crd .Spec .Conversion .Webhook == nil {
111
+ out = append (out , crd )
109
112
continue
110
113
}
111
114
if crd .Spec .Conversion .Webhook .ClientConfig == nil {
115
+ out = append (out , crd )
112
116
continue
113
117
}
114
118
if crd .Spec .Conversion .Webhook .ClientConfig .Service == nil {
119
+ out = append (out , crd )
115
120
continue
116
121
}
117
122
path := ""
@@ -122,17 +127,19 @@ func patchCRDConversion(crds []*v1.CustomResourceDefinition, url string, caPEM [
122
127
crd .Spec .Conversion .Webhook .ClientConfig .URL = & url
123
128
crd .Spec .Conversion .Webhook .ClientConfig .CABundle = caPEM
124
129
crd .Spec .Conversion .Webhook .ClientConfig .Service = nil
130
+ out = append (out , crd )
125
131
}
132
+ return out
126
133
}
127
134
128
- func readCustomResourcesAtPath (t * testing.T , path string ) []* v1 .CustomResourceDefinition {
135
+ func readCustomResourcesAtPath (t * testing.T , path string ) []apiextensionsv1 .CustomResourceDefinition {
129
136
serializer := jsonserializer .NewSerializerWithOptions (jsonserializer .DefaultMetaFactory , internalScheme , internalScheme , jsonserializer.SerializerOptions {
130
137
Yaml : true ,
131
138
})
132
139
converter := runtime .UnsafeObjectConvertor (internalScheme )
133
140
codec := versioning .NewCodec (serializer , serializer , converter , internalScheme , internalScheme , internalScheme , runtime .InternalGroupVersioner , runtime .InternalGroupVersioner , internalScheme .Name ())
134
141
135
- var crds []* v1 .CustomResourceDefinition
142
+ var crds []apiextensionsv1 .CustomResourceDefinition
136
143
if err := filepath .Walk (path , func (path string , info os.FileInfo , err error ) error {
137
144
if err != nil {
138
145
return err
@@ -142,7 +149,7 @@ func readCustomResourcesAtPath(t *testing.T, path string) []*v1.CustomResourceDe
142
149
}
143
150
crd , err := readCRDsAtPath (codec , converter , path )
144
151
if err != nil {
145
- return err
152
+ return fmt . Errorf ( "failed reading CRDs at path %s: %w" , path , err )
146
153
}
147
154
crds = append (crds , crd ... )
148
155
return nil
@@ -152,13 +159,13 @@ func readCustomResourcesAtPath(t *testing.T, path string) []*v1.CustomResourceDe
152
159
return crds
153
160
}
154
161
155
- func readCRDsAtPath (codec runtime.Codec , converter runtime.ObjectConvertor , path string ) ([]* v1 .CustomResourceDefinition , error ) {
162
+ func readCRDsAtPath (codec runtime.Codec , converter runtime.ObjectConvertor , path string ) ([]apiextensionsv1 .CustomResourceDefinition , error ) {
156
163
data , err := os .ReadFile (path )
157
164
if err != nil {
158
165
return nil , err
159
166
}
160
167
161
- var crds []* v1 .CustomResourceDefinition
168
+ var crds []apiextensionsv1 .CustomResourceDefinition
162
169
for _ , d := range strings .Split (string (data ), "\n ---\n " ) {
163
170
// skip empty YAML documents
164
171
if strings .TrimSpace (d ) == "" {
@@ -170,8 +177,8 @@ func readCRDsAtPath(codec runtime.Codec, converter runtime.ObjectConvertor, path
170
177
return nil , err
171
178
}
172
179
173
- out := & v1 .CustomResourceDefinition {}
174
- if err := converter .Convert (internalCRD , out , nil ); err != nil {
180
+ out := apiextensionsv1 .CustomResourceDefinition {}
181
+ if err := converter .Convert (internalCRD , & out , nil ); err != nil {
175
182
return nil , err
176
183
}
177
184
@@ -181,16 +188,6 @@ func readCRDsAtPath(codec runtime.Codec, converter runtime.ObjectConvertor, path
181
188
return crds , nil
182
189
}
183
190
184
- func crdsToRuntimeObjects (in []* v1.CustomResourceDefinition ) []client.Object {
185
- out := make ([]client.Object , len (in ))
186
-
187
- for i , crd := range in {
188
- out [i ] = client .Object (crd )
189
- }
190
-
191
- return out
192
- }
193
-
194
191
func getValidatingWebhookConfig (url string , caPEM []byte ) client.Object {
195
192
failurePolicy := admissionregistrationv1 .Fail
196
193
sideEffects := admissionregistrationv1 .SideEffectClassNone
0 commit comments