From ef016c2353b80dd434fe1b28143517ebfd158bb4 Mon Sep 17 00:00:00 2001 From: irbekrm Date: Mon, 27 Sep 2021 12:13:43 +0100 Subject: [PATCH] Changes required to use envtest from controller-runtime v0.10 Environment.CRDs is now a slice of apiextensionsv1.CustomResourceDefinitions instead of client.Object https://github.com/kubernetes-sigs/controller-runtime/pull/1626#discussion_r684454763 Signed-off-by: irbekrm --- test/integration/framework/apiserver.go | 41 ++++++++++++------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/test/integration/framework/apiserver.go b/test/integration/framework/apiserver.go index cc05d1d8032..89d82a1c9e7 100644 --- a/test/integration/framework/apiserver.go +++ b/test/integration/framework/apiserver.go @@ -27,7 +27,7 @@ import ( admissionregistrationv1 "k8s.io/api/admissionregistration/v1" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" apiextensionsinstall "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install" - v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" + apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" jsonserializer "k8s.io/apimachinery/pkg/runtime/serializer/json" @@ -35,12 +35,12 @@ import ( utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/client-go/rest" "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/envtest" webhooktesting "github.com/jetstack/cert-manager/cmd/webhook/app/testing" "github.com/jetstack/cert-manager/pkg/api" apitesting "github.com/jetstack/cert-manager/pkg/api/testing" "github.com/jetstack/cert-manager/test/internal/apiserver" - "sigs.k8s.io/controller-runtime/pkg/envtest" ) type StopFunc func() @@ -56,10 +56,10 @@ func RunControlPlane(t *testing.T, ctx context.Context) (*rest.Config, StopFunc) for _, crd := range crds { t.Logf("Found CRD with name %q", crd.Name) } - patchCRDConversion(crds, webhookOpts.URL, webhookOpts.CAPEM) + crds = patchCRDConversion(crds, webhookOpts.URL, webhookOpts.CAPEM) if _, err := envtest.InstallCRDs(config, envtest.CRDInstallOptions{ - CRDs: crdsToRuntimeObjects(crds), + CRDs: crds, }); err != nil { t.Fatal(err) } @@ -96,18 +96,23 @@ func init() { apiextensionsinstall.Install(internalScheme) } -func patchCRDConversion(crds []*v1.CustomResourceDefinition, url string, caPEM []byte) { +func patchCRDConversion(crds []apiextensionsv1.CustomResourceDefinition, url string, caPEM []byte) []apiextensionsv1.CustomResourceDefinition { + out := []apiextensionsv1.CustomResourceDefinition{} for _, crd := range crds { if crd.Spec.Conversion == nil { + out = append(out, crd) continue } if crd.Spec.Conversion.Webhook == nil { + out = append(out, crd) continue } if crd.Spec.Conversion.Webhook.ClientConfig == nil { + out = append(out, crd) continue } if crd.Spec.Conversion.Webhook.ClientConfig.Service == nil { + out = append(out, crd) continue } path := "" @@ -118,17 +123,19 @@ func patchCRDConversion(crds []*v1.CustomResourceDefinition, url string, caPEM [ crd.Spec.Conversion.Webhook.ClientConfig.URL = &url crd.Spec.Conversion.Webhook.ClientConfig.CABundle = caPEM crd.Spec.Conversion.Webhook.ClientConfig.Service = nil + out = append(out, crd) } + return out } -func readCustomResourcesAtPath(t *testing.T, path string) []*v1.CustomResourceDefinition { +func readCustomResourcesAtPath(t *testing.T, path string) []apiextensionsv1.CustomResourceDefinition { serializer := jsonserializer.NewSerializerWithOptions(jsonserializer.DefaultMetaFactory, internalScheme, internalScheme, jsonserializer.SerializerOptions{ Yaml: true, }) converter := runtime.UnsafeObjectConvertor(internalScheme) codec := versioning.NewCodec(serializer, serializer, converter, internalScheme, internalScheme, internalScheme, runtime.InternalGroupVersioner, runtime.InternalGroupVersioner, internalScheme.Name()) - var crds []*v1.CustomResourceDefinition + var crds []apiextensionsv1.CustomResourceDefinition if err := filepath.Walk(path, func(path string, info os.FileInfo, err error) error { if err != nil { return err @@ -138,7 +145,7 @@ func readCustomResourcesAtPath(t *testing.T, path string) []*v1.CustomResourceDe } crd, err := readCRDsAtPath(codec, converter, path) if err != nil { - return err + return fmt.Errorf("failed reading CRDs at path %s: %w", path, err) } crds = append(crds, crd...) return nil @@ -148,13 +155,13 @@ func readCustomResourcesAtPath(t *testing.T, path string) []*v1.CustomResourceDe return crds } -func readCRDsAtPath(codec runtime.Codec, converter runtime.ObjectConvertor, path string) ([]*v1.CustomResourceDefinition, error) { +func readCRDsAtPath(codec runtime.Codec, converter runtime.ObjectConvertor, path string) ([]apiextensionsv1.CustomResourceDefinition, error) { data, err := os.ReadFile(path) if err != nil { return nil, err } - var crds []*v1.CustomResourceDefinition + var crds []apiextensionsv1.CustomResourceDefinition for _, d := range strings.Split(string(data), "\n---\n") { // skip empty YAML documents if strings.TrimSpace(d) == "" { @@ -166,8 +173,8 @@ func readCRDsAtPath(codec runtime.Codec, converter runtime.ObjectConvertor, path return nil, err } - out := &v1.CustomResourceDefinition{} - if err := converter.Convert(internalCRD, out, nil); err != nil { + out := apiextensionsv1.CustomResourceDefinition{} + if err := converter.Convert(internalCRD, &out, nil); err != nil { return nil, err } @@ -177,16 +184,6 @@ func readCRDsAtPath(codec runtime.Codec, converter runtime.ObjectConvertor, path return crds, nil } -func crdsToRuntimeObjects(in []*v1.CustomResourceDefinition) []client.Object { - out := make([]client.Object, len(in)) - - for i, crd := range in { - out[i] = client.Object(crd) - } - - return out -} - func getValidatingWebhookConfig(url string, caPEM []byte) client.Object { failurePolicy := admissionregistrationv1.Fail sideEffects := admissionregistrationv1.SideEffectClassNone