From 0caf91a67f35fbcb6d392505cb976fa0ef7727bc Mon Sep 17 00:00:00 2001 From: Roman Bednar Date: Mon, 10 Aug 2026 15:47:05 +0200 Subject: [PATCH 1/3] e2e: move snapshot metadata resource handling to PrepareTest When CSI_PROW_ENABLE_SNAPSHOT_METADATA is true, PrepareTest deploys the csi-hostpath StatefulSet with the csi-snapshot-metadata sidecar that mounts a TLS secret volume. Previously, the secret, Service, and SnapshotMetadataService CR were only created in the snapshot metadata test suite's BeforeEach. Non-snapshot-metadata tests never created these resources, causing FailedMount errors on the secret volume. Move resource creation to PrepareTest so all tests that deploy the sidecar also have the backing resources. This fixes mixed test suites (e.g. OpenShift CI) that run snapshot-metadata and non-snapshot-metadata tests together. Upstream CI didn't catch this because it runs snapshot metadata tests in isolation with FOCUS=[Feature:snapshotmetadata]. --- test/e2e/storage/drivers/csi.go | 16 ++++++++++++++++ test/e2e/storage/testsuites/snapshot-metadata.go | 13 ------------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/test/e2e/storage/drivers/csi.go b/test/e2e/storage/drivers/csi.go index d25f3a367483c..8ce1496b30371 100644 --- a/test/e2e/storage/drivers/csi.go +++ b/test/e2e/storage/drivers/csi.go @@ -376,6 +376,22 @@ func (h *hostpathCSIDriver) PrepareTest(ctx context.Context, f *framework.Framew framework.Failf("deploying %s driver: %v", h.driverInfo.Name, err) } + if h.driverInfo.Capabilities[storageframework.CapSnapshotMetadata] { + // Create snapshot metadata resources (CRD is already created by test runner script) + ginkgo.By("Creating snapshot metadata resources") + err = utils.CreateSnapshotMetadataResources(ctx, f, config.Driver.GetDriverInfo().Name, driverns) + if err != nil { + framework.Failf("failed to create snapshot metadata resources: %v", err) + } + ginkgo.DeferCleanup(func(ctx context.Context) { + ginkgo.By("Cleaning up snapshot metadata resources") + err = utils.CleanupSnapshotMetadataResources(ctx, f, config.Driver.GetDriverInfo().Name, driverns) + if err != nil { + framework.Logf("Warning: failed to cleanup snapshot metadata resources: %v", err) + } + }) + } + cleanupFunc := generateDriverCleanupFunc( f, h.driverInfo.Name, diff --git a/test/e2e/storage/testsuites/snapshot-metadata.go b/test/e2e/storage/testsuites/snapshot-metadata.go index b864ba13dccdc..3bd24554142d6 100644 --- a/test/e2e/storage/testsuites/snapshot-metadata.go +++ b/test/e2e/storage/testsuites/snapshot-metadata.go @@ -307,11 +307,6 @@ func (s *snapshotMetadataTestSuite) DefineTests(driver storageframework.TestDriv config = smDriver.PrepareTest(ctx, f) - // Create snapshot metadata resources (CRD is already created by test runner script) - ginkgo.By("Creating snapshot metadata resources") - err = storageutils.CreateSnapshotMetadataResources(ctx, f, config.Driver.GetDriverInfo().Name, config.DriverNamespace.Name) - framework.ExpectNoError(err, "Failed to create snapshot metadata resources") - pattern.VolMode = v1.PersistentVolumeBlock volume = storageframework.CreateVolumeResource(ctx, smDriver, config, pattern, s.GetTestSuiteInfo().SupportedSizeRange) testPVC = volume.Pvc @@ -359,14 +354,6 @@ func (s *snapshotMetadataTestSuite) DefineTests(driver storageframework.TestDriv backupClientPod = nil } - // Cleanup snapshot metadata resources - if config != nil { - ginkgo.By("Cleaning up snapshot metadata resources") - err := storageutils.CleanupSnapshotMetadataResources(ctx, f, config.Driver.GetDriverInfo().Name, config.DriverNamespace.Name) - if err != nil { - framework.Logf("Warning: failed to cleanup snapshot metadata resources: %v", err) - } - } }) ginkgo.It("should verify GetMetadataDelta", func(ctx context.Context) { From b1f4285e270e6e470fda234b73070342483a1774 Mon Sep 17 00:00:00 2001 From: Jonathan Dobson Date: Tue, 11 Aug 2026 10:46:47 -0600 Subject: [PATCH 2/3] DO NOT MERGE: pre-merge testing CSI_PROW_ENABLE_SNAPSHOT_METADATA=true --- test/e2e/storage/drivers/csi.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/e2e/storage/drivers/csi.go b/test/e2e/storage/drivers/csi.go index 8ce1496b30371..781a34185d999 100644 --- a/test/e2e/storage/drivers/csi.go +++ b/test/e2e/storage/drivers/csi.go @@ -174,6 +174,11 @@ func InitHostPathCSIDriver() storageframework.TestDriver { // added when patching the deployment. storageframework.CapVolumeLimits: true, } + // DO NOT MERGE: pre-merge testing functionality when this env var is true in openshift/release + err := os.Setenv("CSI_PROW_ENABLE_SNAPSHOT_METADATA", "true") + if err != nil { + framework.Failf("failed to set CSI_PROW_ENABLE_SNAPSHOT_METADATA: %v", err) + } // TODO: It can be removed after the VolumeGroupSnapshot feature is default enabled if os.Getenv("CSI_PROW_ENABLE_GROUP_SNAPSHOT") == "true" { capabilities[storageframework.CapVolumeGroupSnapshot] = true From 2ba62a46d4731e2220572326d2254b41ef3c5a83 Mon Sep 17 00:00:00 2001 From: Jonathan Dobson Date: Tue, 18 Aug 2026 10:11:49 -0600 Subject: [PATCH 3/3] snapshot-metadata e2e: bump golang version --- test/e2e/storage/testsuites/snapshot-metadata.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/storage/testsuites/snapshot-metadata.go b/test/e2e/storage/testsuites/snapshot-metadata.go index 3bd24554142d6..f940f178af999 100644 --- a/test/e2e/storage/testsuites/snapshot-metadata.go +++ b/test/e2e/storage/testsuites/snapshot-metadata.go @@ -163,7 +163,7 @@ const ( sourceDevicePvcName = "source-device" targetDevicePvcName = "target-device" installToolContainerName = "install-tool" - installToolImage = "golang:1.25.7" + installToolImage = "golang:1.26.1" installToolCommand = "/bin/sh -c 'go install github.com/kubernetes-csi/external-snapshot-metadata/tools/snapshot-metadata-verifier@main && cp $(go env GOPATH)/bin/snapshot-metadata-verifier /output'" sharedVolumeName = "shared-volume" sharedVolumeMountPath = "/tools"