Skip to content

OCPNODE-4055: Add Additional Storage Support - API validation test cases#31384

Open
BhargaviGudi wants to merge 1 commit into
openshift:mainfrom
BhargaviGudi:additionStorageSupportAPI
Open

OCPNODE-4055: Add Additional Storage Support - API validation test cases#31384
BhargaviGudi wants to merge 1 commit into
openshift:mainfrom
BhargaviGudi:additionStorageSupportAPI

Conversation

@BhargaviGudi

@BhargaviGudi BhargaviGudi commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Summary

Add comprehensive API validation tests for Additional Storage Support (additionalArtifactStores, additionalImageStores, additionalLayerStores) feature. These tests validate ContainerRuntimeConfig API behavior
using DryRun, ensuring proper validation without triggering MCO reconciliation.

Test Coverage

13 API validation tests across 4 categories:

Combined Additional Stores (3 tests)

  • Reject invalid path in any store type
  • Reject when layer stores exceed maximum count
  • Reject duplicate paths within same store type

Additional Layer Stores (8 tests)

  • Reject empty path
  • Reject relative path (non-absolute)
  • Reject path with spaces
  • Reject path with invalid characters (@, etc.)
  • Reject path exceeding 256 characters
  • Reject more than 5 layer stores (max enforcement)
  • Reject path with consecutive forward slashes
  • Reject duplicate paths

Additional Image Stores (1 test)

  • Smoke test: validation wiring

Additional Artifact Stores (1 test)

  • Smoke test: validation wiring

Test Characteristics

  • Suite: openshift/conformance/parallel
  • Execution: Non-disruptive, parallel, ~2-3 minutes total
  • Method: DryRun API calls only (no actual MCO reconciliation)
  • Feature Tag: [Feature:AdditionalStorageSupport]
  • OCPFeatureGate: AdditionalStorageConfig
  • Platform Support: AWS, GCP, vSphere, Metal IPI (skips Azure and MicroShift)

Files Changed

New Files

  • test/extended/node/additional_storage_api.go - 13 API validation tests

Modified Files

  • test/extended/node/node_utils.go - Added skipUnlessAdditionalStorageConfigEnabled() helper function with platform and feature gate checks
  • test/extended/node/README.md - Added documentation for API validation test suite

Prerequisites

  • AdditionalStorageConfig feature gate must be enabled
  • Test automatically skips on:
    • MicroShift (no MachineConfig support)
    • Microsoft Azure (known platform issues)

Related

  • Feature: Additional Storage Support
  • Availability: TechPreview (OCP 4.22), GA (OCP 4.23+/5.0)
  • Jira: OCPNODE-4055

Summary by CodeRabbit

  • New Features

    • Added end-to-end conformance coverage for the Additional Storage Support APIs.
    • Added validations for image, layer, and artifact store paths, including invalid formats, duplicates, excessive entries, length limits, and edge-case path rules.
    • Tests now conditionally skip when the required feature isn’t enabled or the platform isn’t supported.
  • Tests

    • Introduced a new parallel/disruptive-longrunning suite for Additional Storage API validation.
  • Documentation

    • Updated the Node E2E Tests documentation with suite details, prerequisites, and how to run it.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: automatic mode

@openshift-ci-robot

openshift-ci-robot commented Jul 14, 2026

Copy link
Copy Markdown

@BhargaviGudi: This pull request references OCPNODE-4055 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

Add comprehensive API validation tests for Additional Storage Support (additionalArtifactStores, additionalImageStores, additionalLayerStores) feature. These tests validate ContainerRuntimeConfig API behavior
using DryRun, ensuring proper validation without triggering MCO reconciliation.

Test Coverage

13 API validation tests across 4 categories:

Combined Additional Stores (3 tests)

  • Reject invalid path in any store type
  • Reject when layer stores exceed maximum count
  • Reject duplicate paths within same store type

Additional Layer Stores (8 tests)

  • Reject empty path
  • Reject relative path (non-absolute)
  • Reject path with spaces
  • Reject path with invalid characters (@, etc.)
  • Reject path exceeding 256 characters
  • Reject more than 5 layer stores (max enforcement)
  • Reject path with consecutive forward slashes
  • Reject duplicate paths

Additional Image Stores (1 test)

  • Smoke test: validation wiring

Additional Artifact Stores (1 test)

  • Smoke test: validation wiring

Test Characteristics

  • Suite: openshift/conformance/parallel
  • Execution: Non-disruptive, parallel, ~2-3 minutes total
  • Method: DryRun API calls only (no actual MCO reconciliation)
  • Feature Tag: [Feature:AdditionalStorageSupport]
  • OCPFeatureGate: AdditionalStorageConfig
  • Platform Support: AWS, GCP, vSphere, Metal IPI (skips Azure and MicroShift)

Files Changed

New Files

  • test/extended/node/additional_storage_api.go - 13 API validation tests

Modified Files

  • test/extended/node/node_utils.go - Added skipUnlessAdditionalStorageConfigEnabled() helper function with platform and feature gate checks
  • test/extended/node/README.md - Added documentation for API validation test suite

Prerequisites

  • AdditionalStorageConfig feature gate must be enabled
  • Test automatically skips on:
    • MicroShift (no MachineConfig support)
    • Microsoft Azure (known platform issues)

Related

  • Feature: Additional Storage Support
  • Availability: TechPreview (OCP 4.22), GA (OCP 4.23+/5.0)
  • Jira: OCPNODE-4055

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jul 14, 2026
@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 207a3bb0-ed86-49ec-ae98-6b5246aaa353

📥 Commits

Reviewing files that changed from the base of the PR and between 2507d15 and cc37cba.

📒 Files selected for processing (3)
  • test/extended/node/README.md
  • test/extended/node/additional_storage_api.go
  • test/extended/node/node_utils.go
🚧 Files skipped from review as they are similar to previous changes (3)
  • test/extended/node/node_utils.go
  • test/extended/node/README.md
  • test/extended/node/additional_storage_api.go

Walkthrough

Adds a feature-gated OpenShift conformance suite validating Additional Storage API path and count constraints through dry-run requests, with image and artifact smoke coverage and README documentation.

Changes

Additional Storage API validation

Layer / File(s) Summary
Additional Storage execution gate
test/extended/node/node_utils.go
Skips tests on MicroShift, Azure, or clusters without the AdditionalStorageConfig feature gate.
Dry-run API validation suite
test/extended/node/additional_storage_api.go
Adds combined, layer, image, and artifact store validation for invalid paths, duplicates, length limits, count limits, spaces, special characters, and consecutive slashes.
Suite execution documentation
test/extended/node/README.md
Documents the conformance suite, prerequisites, execution commands, and covered test cases.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant GinkgoSuite
  participant SkipHelper
  participant ClusterConfig
  participant ContainerRuntimeConfigAPI
  GinkgoSuite->>SkipHelper: check AdditionalStorageConfig prerequisites
  SkipHelper->>ClusterConfig: read platform and FeatureGate
  ClusterConfig-->>SkipHelper: return platform and enabled feature gates
  GinkgoSuite->>ContainerRuntimeConfigAPI: submit Additional*Stores request with DryRun
  ContainerRuntimeConfigAPI-->>GinkgoSuite: return validation result
Loading

Suggested reviewers: mrunalp, maysamacedo

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: adding Additional Storage API validation test cases.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed All Ginkgo titles in the new suite are static strings; no titles interpolate node, namespace, UUID, timestamp, or other run-specific values.
Test Structure And Quality ✅ Passed 13 focused dry-run It blocks, no real resources or waits, and a BeforeEach skip helper handles environment gating; cleanup/timeouts aren't needed.
Microshift Test Compatibility ✅ Passed PASS: It’s MicroShift-protected via [apigroup:config.openshift.io]/[apigroup:machineconfiguration.openshift.io] tags and an IsMicroShiftCluster()+g.Skip() guard.
Single Node Openshift (Sno) Test Compatibility ✅ Passed The new tests are API dry-run validations only; they don’t count nodes, schedule pods, drain nodes, or require multi-node/HA behavior, so SNO is fine.
Topology-Aware Scheduling Compatibility ✅ Passed Only API-validation tests and a feature-gate skip helper were added; no pod scheduling, replicas, affinity, or topology constraints were introduced.
Ote Binary Stdout Contract ✅ Passed No stdout writes or logging setup were added in process-level code; the new suite/helper contain no main/init/TestMain/BeforeSuite stdout calls.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed New Ginkgo tests are API-only DryRun validations; no IPv4 literals, IPv4-only parsing, or external/public connectivity were found.
No-Weak-Crypto ✅ Passed Touched files add API tests/docs and a feature-gate skip helper; no weak algorithms or secret/token comparisons were introduced.
Container-Privileges ✅ Passed Touched files add API tests and docs only; no new manifests or securityContext fields like privileged, hostPID/Network/IPC, SYS_ADMIN, or allowPrivilegeEscalation.
No-Sensitive-Data-In-Logs ✅ Passed PASS: New logs only emit test status and generic validation errors; no passwords, tokens, PII, session IDs, hostnames, or customer data were added.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@BhargaviGudi

BhargaviGudi commented Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

/assign @saschagrunert @cpmeadors

@BhargaviGudi

BhargaviGudi commented Jul 14, 2026

Copy link
Copy Markdown
Contributor Author

/label acknowledge-critical-fixes-only

@BhargaviGudi

Copy link
Copy Markdown
Contributor Author

/test e2e-gcp-ovn-techpreview

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
test/extended/node/node_utils.go (1)

908-947: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Skip-on-fetch-error masks real cluster/RBAC problems as "skipped" instead of "failed".

If IsMicroShiftCluster, Infrastructures().Get, or FeatureGates().Get fail (e.g. transient API error or an RBAC issue), the test silently skips via g.Skip(...) rather than failing. That hides genuine test-infrastructure problems behind a green/skipped result. Note this diverges from the analogous existing helper (isFeatureGateEnabled/SkipWhenFeatureGateEnabled in test/extended/machine_config/helpers.go), which uses o.Expect(err).NotTo(o.HaveOccurred(), ...) to fail loudly on fetch errors rather than skip.

🔧 Suggested fix: fail loudly on fetch errors, skip only on confirmed condition
 	isMicroShift, err := exutil.IsMicroShiftCluster(oc.AdminKubeClient())
-	if err != nil {
-		framework.Logf("Failed to detect MicroShift cluster: %v", err)
-		g.Skip("Cannot verify cluster type")
-	}
+	o.Expect(err).NotTo(o.HaveOccurred(), "Failed to detect MicroShift cluster")
 	if isMicroShift {
 		g.Skip("Skipping test on MicroShift cluster - MachineConfig resources are not available")
 	}

-	// Skip on Microsoft
+	// Skip on Microsoft Azure
 	infra, err := oc.AdminConfigClient().ConfigV1().Infrastructures().Get(ctx, "cluster", metav1.GetOptions{})
-	if err != nil {
-		framework.Logf("Failed to get Infrastructure resource: %v", err)
-		g.Skip("Cannot verify platform type")
-	}
+	o.Expect(err).NotTo(o.HaveOccurred(), "Failed to get Infrastructure resource")
 	if infra.Status.PlatformStatus != nil && infra.Status.PlatformStatus.Type == configv1.AzurePlatformType {
 		g.Skip("Skipping test on Microsoft Azure cluster")
 	}

 	// Verify AdditionalStorageConfig feature gate is enabled
 	g.By("Verifying AdditionalStorageConfig feature gate is enabled")
 	fgs, err := oc.AdminConfigClient().ConfigV1().FeatureGates().Get(ctx, "cluster", metav1.GetOptions{})
-	if err != nil {
-		framework.Logf("Failed to get FeatureGate resource: %v", err)
-		g.Skip("Cannot verify AdditionalStorageConfig feature gate requirement")
-	}
+	o.Expect(err).NotTo(o.HaveOccurred(), "Failed to get FeatureGate resource")
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/extended/node/node_utils.go` around lines 908 - 947, Update
skipUnlessAdditionalStorageConfigEnabled to fail loudly when
IsMicroShiftCluster, Infrastructures().Get, or FeatureGates().Get returns an
error, using the established expectation pattern from
isFeatureGateEnabled/SkipWhenFeatureGateEnabled rather than g.Skip. Retain
skipping only for confirmed MicroShift, Azure, or disabled
AdditionalStorageConfig conditions.
test/extended/node/additional_storage_api.go (1)

33-493: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

Significant boilerplate duplication across all 13 test cases.

Each It repeats the same mcClient construction, ObjectMeta, and MachineConfigPoolSelector scaffolding, differing only in the ContainerRuntimeConfig fields under test. A small helper that builds the base ContainerRuntimeConfig/client and accepts a mutator (or just the store-type spec) would cut this file's size substantially and make future test additions less error-prone.

♻️ Sketch of a shared helper
func newAdditionalStorageCtrCfg(name string, cfg *machineconfigv1.ContainerRuntimeConfiguration) *machineconfigv1.ContainerRuntimeConfig {
	return &machineconfigv1.ContainerRuntimeConfig{
		ObjectMeta: metav1.ObjectMeta{Name: name},
		Spec: machineconfigv1.ContainerRuntimeConfigSpec{
			MachineConfigPoolSelector: &metav1.LabelSelector{
				MatchLabels: map[string]string{
					"pools.operator.machineconfiguration.openshift.io/worker": "",
				},
			},
			ContainerRuntimeConfig: cfg,
		},
	}
}

This is a nice-to-have; the existing verbose style is consistent with other node e2e tests (e.g. test/extended/node/node_e2e/container_runtime_config.go), so treat as optional cleanup rather than a blocker.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@test/extended/node/additional_storage_api.go` around lines 33 - 493, Reduce
repeated setup across the additional storage tests by introducing a shared
helper, such as newAdditionalStorageCtrCfg, that accepts the test name and
ContainerRuntimeConfiguration while constructing the common metadata and worker
MachineConfigPoolSelector. Update the 13 test cases in the Combined Additional
Stores, Additional Layer Stores, Additional Image Stores, and Additional
Artifact Stores contexts to use it; keep each test’s client creation and
validation-specific store fields unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@test/extended/node/additional_storage_api.go`:
- Around line 33-493: Reduce repeated setup across the additional storage tests
by introducing a shared helper, such as newAdditionalStorageCtrCfg, that accepts
the test name and ContainerRuntimeConfiguration while constructing the common
metadata and worker MachineConfigPoolSelector. Update the 13 test cases in the
Combined Additional Stores, Additional Layer Stores, Additional Image Stores,
and Additional Artifact Stores contexts to use it; keep each test’s client
creation and validation-specific store fields unchanged.

In `@test/extended/node/node_utils.go`:
- Around line 908-947: Update skipUnlessAdditionalStorageConfigEnabled to fail
loudly when IsMicroShiftCluster, Infrastructures().Get, or FeatureGates().Get
returns an error, using the established expectation pattern from
isFeatureGateEnabled/SkipWhenFeatureGateEnabled rather than g.Skip. Retain
skipping only for confirmed MicroShift, Azure, or disabled
AdditionalStorageConfig conditions.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 963c6316-91bc-4607-824c-c33012a10933

📥 Commits

Reviewing files that changed from the base of the PR and between 0f64c49 and 2507d15.

📒 Files selected for processing (3)
  • test/extended/node/README.md
  • test/extended/node/additional_storage_api.go
  • test/extended/node/node_utils.go

@openshift-ci openshift-ci Bot added the ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review label Jul 14, 2026
@BhargaviGudi

Copy link
Copy Markdown
Contributor Author

/label acknowledge-critical-fixes-only

@openshift-ci openshift-ci Bot added the acknowledge-critical-fixes-only Indicates if the issuer of the label is OK with the policy. label Jul 14, 2026
@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

@BhargaviGudi

Copy link
Copy Markdown
Contributor Author

/payload-job periodic-ci-openshift-release-main-ci-4.22-e2e-gcp-ovn-techpreview

@openshift-ci

openshift-ci Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

@BhargaviGudi: trigger 1 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-4.22-e2e-gcp-ovn-techpreview

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/77b3d950-7fa6-11f1-896a-c1d5ee81f276-0

@openshift-trt

openshift-trt Bot commented Jul 14, 2026

Copy link
Copy Markdown

Risk analysis has seen new tests most likely introduced by this PR.
Please ensure that new tests meet guidelines for naming and stability.

New Test Risks for sha: 2507d15

Job Name New Test Risk
pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview Medium - "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Artifact Stores should reject invalid additionalArtifactStores path [Validation Smoke Test]" is a new test, and was only seen in one job.
pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview Medium - "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Image Stores should reject invalid additionalImageStores path [Validation Smoke Test]" is a new test, and was only seen in one job.
pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview Medium - "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject duplicate paths in additionalLayerStores " is a new test, and was only seen in one job.
pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview Medium - "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject empty path for additionalLayerStores " is a new test, and was only seen in one job.
pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview Medium - "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject more than 5 additionalLayerStores " is a new test, and was only seen in one job.
pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview Medium - "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject path exceeding 256 characters for additionalLayerStores " is a new test, and was only seen in one job.
pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview Medium - "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject path with consecutive forward slashes for additionalLayerStores " is a new test, and was only seen in one job.
pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview Medium - "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject path with invalid characters for additionalLayerStores " is a new test, and was only seen in one job.
pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview Medium - "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject path with spaces for additionalLayerStores " is a new test, and was only seen in one job.
pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview Medium - "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject relative path for additionalLayerStores " is a new test, and was only seen in one job.
pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview Medium - "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Combined Additional Stores should reject duplicate paths within same store type in combined config " is a new test, and was only seen in one job.
pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview Medium - "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Combined Additional Stores should reject if any store type has invalid path in combined config " is a new test, and was only seen in one job.
pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview Medium - "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Combined Additional Stores should reject if layer stores exceed max even with valid image/artifact stores " is a new test, and was only seen in one job.

New tests seen in this PR at sha: 2507d15

  • "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Artifact Stores should reject invalid additionalArtifactStores path [Validation Smoke Test]" [Total: 1, Pass: 1, Fail: 0, Flake: 0]
  • "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Image Stores should reject invalid additionalImageStores path [Validation Smoke Test]" [Total: 1, Pass: 1, Fail: 0, Flake: 0]
  • "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject duplicate paths in additionalLayerStores " [Total: 1, Pass: 1, Fail: 0, Flake: 0]
  • "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject empty path for additionalLayerStores " [Total: 1, Pass: 1, Fail: 0, Flake: 0]
  • "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject more than 5 additionalLayerStores " [Total: 1, Pass: 1, Fail: 0, Flake: 0]
  • "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject path exceeding 256 characters for additionalLayerStores " [Total: 1, Pass: 1, Fail: 0, Flake: 0]
  • "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject path with consecutive forward slashes for additionalLayerStores " [Total: 1, Pass: 1, Fail: 0, Flake: 0]
  • "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject path with invalid characters for additionalLayerStores " [Total: 1, Pass: 1, Fail: 0, Flake: 0]
  • "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject path with spaces for additionalLayerStores " [Total: 1, Pass: 1, Fail: 0, Flake: 0]
  • "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Additional Layer Stores should reject relative path for additionalLayerStores " [Total: 1, Pass: 1, Fail: 0, Flake: 0]
  • "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Combined Additional Stores should reject duplicate paths within same store type in combined config " [Total: 1, Pass: 1, Fail: 0, Flake: 0]
  • "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Combined Additional Stores should reject if any store type has invalid path in combined config " [Total: 1, Pass: 1, Fail: 0, Flake: 0]
  • "[apigroup:config.openshift.io][apigroup:machineconfiguration.openshift.io][Jira:Node/CRI-O][sig-node][Feature:AdditionalStorageSupport][OCPFeatureGate:AdditionalStorageConfig][Suite:openshift/conformance/parallel] Additional Storage API Validation Combined Additional Stores should reject if layer stores exceed max even with valid image/artifact stores " [Total: 1, Pass: 1, Fail: 0, Flake: 0]

@BhargaviGudi

Copy link
Copy Markdown
Contributor Author

/verified by CI All 13 testcases are passed on 5.0 e2e-gcp-ovn-techpreview and 4.22 4.22-e2e-gcp-ovn-techpreview

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jul 15, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@BhargaviGudi: This PR has been marked as verified by CI All 13 testcases are passed on 5.0 [e2e-gcp-ovn-techpreview](https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/31384/pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview/2077062165935689728) and 4.22 [4.22-e2e-gcp-ovn-techpreview](https://prow.ci.openshift.org/view/gs/test-platform-results/logs/openshift-origin-31384-ci-4.22-e2e-gcp-ovn-techpreview/2077077497303797760).

Details

In response to this:

/verified by CI All 13 testcases are passed on 5.0 e2e-gcp-ovn-techpreview and 4.22 4.22-e2e-gcp-ovn-techpreview

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@BhargaviGudi

Copy link
Copy Markdown
Contributor Author

/retest-required

@BhargaviGudi BhargaviGudi force-pushed the additionStorageSupportAPI branch from 2507d15 to cc37cba Compare July 15, 2026 04:38
@openshift-ci-robot openshift-ci-robot removed the verified Signifies that the PR passed pre-merge verification criteria label Jul 15, 2026
@BhargaviGudi

Copy link
Copy Markdown
Contributor Author

/verified by CI All 13 testcases are passed on 5.0 e2e-gcp-ovn-techpreview and 4.22 4.22-e2e-gcp-ovn-techpreview

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jul 15, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@BhargaviGudi: This PR has been marked as verified by CI All 13 testcases are passed on 5.0 [e2e-gcp-ovn-techpreview](https://prow.ci.openshift.org/view/gs/test-platform-results/pr-logs/pull/31384/pull-ci-openshift-origin-main-e2e-gcp-ovn-techpreview/2077062165935689728) and 4.22 [4.22-e2e-gcp-ovn-techpreview](https://prow.ci.openshift.org/view/gs/test-platform-results/logs/openshift-origin-31384-ci-4.22-e2e-gcp-ovn-techpreview/2077077497303797760).

Details

In response to this:

/verified by CI All 13 testcases are passed on 5.0 e2e-gcp-ovn-techpreview and 4.22 4.22-e2e-gcp-ovn-techpreview

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot

openshift-ci-robot commented Jul 15, 2026

Copy link
Copy Markdown

@BhargaviGudi: This pull request references OCPNODE-4055 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Summary

Add comprehensive API validation tests for Additional Storage Support (additionalArtifactStores, additionalImageStores, additionalLayerStores) feature. These tests validate ContainerRuntimeConfig API behavior
using DryRun, ensuring proper validation without triggering MCO reconciliation.

Test Coverage

13 API validation tests across 4 categories:

Combined Additional Stores (3 tests)

  • Reject invalid path in any store type
  • Reject when layer stores exceed maximum count
  • Reject duplicate paths within same store type

Additional Layer Stores (8 tests)

  • Reject empty path
  • Reject relative path (non-absolute)
  • Reject path with spaces
  • Reject path with invalid characters (@, etc.)
  • Reject path exceeding 256 characters
  • Reject more than 5 layer stores (max enforcement)
  • Reject path with consecutive forward slashes
  • Reject duplicate paths

Additional Image Stores (1 test)

  • Smoke test: validation wiring

Additional Artifact Stores (1 test)

  • Smoke test: validation wiring

Test Characteristics

  • Suite: openshift/conformance/parallel
  • Execution: Non-disruptive, parallel, ~2-3 minutes total
  • Method: DryRun API calls only (no actual MCO reconciliation)
  • Feature Tag: [Feature:AdditionalStorageSupport]
  • OCPFeatureGate: AdditionalStorageConfig
  • Platform Support: AWS, GCP, vSphere, Metal IPI (skips Azure and MicroShift)

Files Changed

New Files

  • test/extended/node/additional_storage_api.go - 13 API validation tests

Modified Files

  • test/extended/node/node_utils.go - Added skipUnlessAdditionalStorageConfigEnabled() helper function with platform and feature gate checks
  • test/extended/node/README.md - Added documentation for API validation test suite

Prerequisites

  • AdditionalStorageConfig feature gate must be enabled
  • Test automatically skips on:
    • MicroShift (no MachineConfig support)
    • Microsoft Azure (known platform issues)

Related

  • Feature: Additional Storage Support
  • Availability: TechPreview (OCP 4.22), GA (OCP 4.23+/5.0)
  • Jira: OCPNODE-4055

Summary by CodeRabbit

  • New Features

  • Added end-to-end conformance coverage for the Additional Storage Support APIs.

  • Added validations for image, layer, and artifact store paths, including invalid formats, duplicates, excessive entries, length limits, and edge-case path rules.

  • Tests now conditionally skip when the required feature isn’t enabled or the platform isn’t supported.

  • Tests

  • Introduced a new parallel/disruptive-longrunning suite for Additional Storage API validation.

  • Documentation

  • Updated the Node E2E Tests documentation with suite details, prerequisites, and how to run it.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e-aws-csi
/test e2e-aws-ovn-fips
/test e2e-aws-ovn-microshift
/test e2e-aws-ovn-microshift-serial
/test e2e-aws-ovn-serial-1of2
/test e2e-aws-ovn-serial-2of2
/test e2e-gcp-csi
/test e2e-gcp-ovn
/test e2e-gcp-ovn-upgrade
/test e2e-metal-ipi-ovn-ipv6
/test e2e-vsphere-ovn
/test e2e-vsphere-ovn-upi

@openshift-ci

openshift-ci Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@BhargaviGudi: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-gcp-ovn-techpreview 2507d15 link false /test e2e-gcp-ovn-techpreview

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@saschagrunert saschagrunert left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jul 15, 2026
@openshift-ci

openshift-ci Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: BhargaviGudi, saschagrunert
Once this PR has been reviewed and has the lgtm label, please assign rphillips for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

acknowledge-critical-fixes-only Indicates if the issuer of the label is OK with the policy. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants