Skip to content

Commit 5ff6e2d

Browse files
committed
Changes required to use envtest from controller-runtime v0.10
Environment.CRDs is now a slice of apiextensionsv1.CustomResourceDefinitions instead of client.Object kubernetes-sigs/controller-runtime#1626 (comment) Signed-off-by: irbekrm <irbekrm@gmail.com>
1 parent 7e9753c commit 5ff6e2d

File tree

1 file changed

+19
-22
lines changed

1 file changed

+19
-22
lines changed

test/integration/framework/apiserver.go

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
2828
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
2929
apiextensionsinstall "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install"
30+
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
3031
v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
3132
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3233
"k8s.io/apimachinery/pkg/runtime"
@@ -35,12 +36,12 @@ import (
3536
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
3637
"k8s.io/client-go/rest"
3738
"sigs.k8s.io/controller-runtime/pkg/client"
39+
"sigs.k8s.io/controller-runtime/pkg/envtest"
3840

3941
webhooktesting "github.com/jetstack/cert-manager/cmd/webhook/app/testing"
4042
"github.com/jetstack/cert-manager/pkg/api"
4143
apitesting "github.com/jetstack/cert-manager/pkg/api/testing"
4244
"github.com/jetstack/cert-manager/test/internal/apiserver"
43-
"sigs.k8s.io/controller-runtime/pkg/envtest"
4445
)
4546

4647
type StopFunc func()
@@ -56,11 +57,10 @@ func RunControlPlane(t *testing.T, ctx context.Context) (*rest.Config, StopFunc)
5657
for _, crd := range crds {
5758
t.Logf("Found CRD with name %q", crd.Name)
5859
}
59-
patchCRDConversion(crds, webhookOpts.URL, webhookOpts.CAPEM)
60-
patchCRDServed(crds)
60+
crds = patchCRDConversion(crds, webhookOpts.URL, webhookOpts.CAPEM)
6161

6262
if _, err := envtest.InstallCRDs(config, envtest.CRDInstallOptions{
63-
CRDs: crdsToRuntimeObjects(crds),
63+
CRDs: crds,
6464
}); err != nil {
6565
t.Fatal(err)
6666
}
@@ -97,21 +97,26 @@ func init() {
9797
apiextensionsinstall.Install(internalScheme)
9898
}
9999

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{}
101102
for _, crd := range crds {
102103
for i := range crd.Spec.Versions {
103104
crd.Spec.Versions[i].Served = true
104105
}
105106
if crd.Spec.Conversion == nil {
107+
out = append(out, crd)
106108
continue
107109
}
108110
if crd.Spec.Conversion.Webhook == nil {
111+
out = append(out, crd)
109112
continue
110113
}
111114
if crd.Spec.Conversion.Webhook.ClientConfig == nil {
115+
out = append(out, crd)
112116
continue
113117
}
114118
if crd.Spec.Conversion.Webhook.ClientConfig.Service == nil {
119+
out = append(out, crd)
115120
continue
116121
}
117122
path := ""
@@ -122,17 +127,19 @@ func patchCRDConversion(crds []*v1.CustomResourceDefinition, url string, caPEM [
122127
crd.Spec.Conversion.Webhook.ClientConfig.URL = &url
123128
crd.Spec.Conversion.Webhook.ClientConfig.CABundle = caPEM
124129
crd.Spec.Conversion.Webhook.ClientConfig.Service = nil
130+
out = append(out, crd)
125131
}
132+
return out
126133
}
127134

128-
func readCustomResourcesAtPath(t *testing.T, path string) []*v1.CustomResourceDefinition {
135+
func readCustomResourcesAtPath(t *testing.T, path string) []apiextensionsv1.CustomResourceDefinition {
129136
serializer := jsonserializer.NewSerializerWithOptions(jsonserializer.DefaultMetaFactory, internalScheme, internalScheme, jsonserializer.SerializerOptions{
130137
Yaml: true,
131138
})
132139
converter := runtime.UnsafeObjectConvertor(internalScheme)
133140
codec := versioning.NewCodec(serializer, serializer, converter, internalScheme, internalScheme, internalScheme, runtime.InternalGroupVersioner, runtime.InternalGroupVersioner, internalScheme.Name())
134141

135-
var crds []*v1.CustomResourceDefinition
142+
var crds []apiextensionsv1.CustomResourceDefinition
136143
if err := filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
137144
if err != nil {
138145
return err
@@ -142,7 +149,7 @@ func readCustomResourcesAtPath(t *testing.T, path string) []*v1.CustomResourceDe
142149
}
143150
crd, err := readCRDsAtPath(codec, converter, path)
144151
if err != nil {
145-
return err
152+
return fmt.Errorf("failed reading CRDs at path %s: %w", path, err)
146153
}
147154
crds = append(crds, crd...)
148155
return nil
@@ -152,13 +159,13 @@ func readCustomResourcesAtPath(t *testing.T, path string) []*v1.CustomResourceDe
152159
return crds
153160
}
154161

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) {
156163
data, err := os.ReadFile(path)
157164
if err != nil {
158165
return nil, err
159166
}
160167

161-
var crds []*v1.CustomResourceDefinition
168+
var crds []apiextensionsv1.CustomResourceDefinition
162169
for _, d := range strings.Split(string(data), "\n---\n") {
163170
// skip empty YAML documents
164171
if strings.TrimSpace(d) == "" {
@@ -170,8 +177,8 @@ func readCRDsAtPath(codec runtime.Codec, converter runtime.ObjectConvertor, path
170177
return nil, err
171178
}
172179

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 {
175182
return nil, err
176183
}
177184

@@ -181,16 +188,6 @@ func readCRDsAtPath(codec runtime.Codec, converter runtime.ObjectConvertor, path
181188
return crds, nil
182189
}
183190

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-
194191
func getValidatingWebhookConfig(url string, caPEM []byte) client.Object {
195192
failurePolicy := admissionregistrationv1.Fail
196193
sideEffects := admissionregistrationv1.SideEffectClassNone

0 commit comments

Comments
 (0)