Merge pull request #133126 from RomanBednar/fix-populator-test

improve CRD handling in VolumePopulator test
This commit is contained in:
Kubernetes Prow Robot
2025-08-15 09:09:07 -07:00
committed by GitHub

View File

@@ -19,6 +19,8 @@ package testsuites
import (
"context"
"fmt"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
crdclientset "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
"strconv"
"strings"
"sync"
@@ -297,12 +299,34 @@ func (p *provisioningTestSuite) DefineTests(driver storageframework.TestDriver,
framework.ExpectNoError(err)
ginkgo.DeferCleanup(f.DeleteNamespace, valNamespace.Name)
ginkgo.By("Deploying validator")
valManifests := []string{
"test/e2e/testing-manifests/storage-csi/any-volume-datasource/crd/populator.storage.k8s.io_volumepopulators.yaml",
"test/e2e/testing-manifests/storage-csi/any-volume-datasource/volume-data-source-validator/rbac-data-source-validator.yaml",
"test/e2e/testing-manifests/storage-csi/any-volume-datasource/volume-data-source-validator/setup-data-source-validator.yaml",
}
crdManifestPath := "test/e2e/testing-manifests/storage-csi/any-volume-datasource/crd/populator.storage.k8s.io_volumepopulators.yaml"
crdItems, err := storageutils.LoadFromManifests(crdManifestPath)
framework.ExpectNoError(err, "Failed to load VolumePopulator CRD manifest")
gomega.Expect(crdItems).To(gomega.HaveLen(1), "Expected exactly one CRD in manifest")
crd, ok := crdItems[0].(*apiextensionsv1.CustomResourceDefinition)
gomega.Expect(ok).To(gomega.BeTrueBecause("Resource in loaded manifest file is not a CustomResourceDefinition: %s", crdManifestPath))
config, err := framework.LoadConfig()
framework.ExpectNoError(err)
apiExtensionClient, err := crdclientset.NewForConfig(config)
framework.ExpectNoError(err)
ginkgo.By(fmt.Sprintf("Checking if %s CRD exists", crd.Name))
_, err = apiExtensionClient.ApiextensionsV1().CustomResourceDefinitions().Get(ctx, crd.Name, metav1.GetOptions{})
if err != nil && apierrors.IsNotFound(err) {
ginkgo.By("VolumePopulator CRD not found, test will create it and remove when done")
valManifests = append(valManifests, crdManifestPath)
} else if err != nil {
framework.ExpectNoError(err, "Error checking for VolumePopulator CRD existence")
}
ginkgo.By("Deploying validator")
err = storageutils.CreateFromManifests(ctx, f, valNamespace,
func(item interface{}) error { return nil },
valManifests...)