Skip to content

NO-JIRA: Add ReadWriteOncePod support for Cinder CSI driver - #16870

Open
Surote wants to merge 1 commit into
openshift:mainfrom
Surote:no-jira-cinder-rwop
Open

NO-JIRA: Add ReadWriteOncePod support for Cinder CSI driver#16870
Surote wants to merge 1 commit into
openshift:mainfrom
Surote:no-jira-cinder-rwop

Conversation

@Surote

@Surote Surote commented Jul 28, 2026

Copy link
Copy Markdown

Analysis / Root cause:

The provisioner-to-access-mode mapping in frontend/public/components/storage/shared.ts did not list ReadWriteOncePod for the OpenStack Cinder CSI driver (cinder.csi.openstack.org), so the access mode was not offered in the console when creating a PVC or a StorageClass-backed volume with that provisioner. The Cinder CSI driver reports the SINGLE_NODE_SINGLE_WRITER capability, which maps to ReadWriteOncePod, so the mode is valid for both Filesystem and Block volume modes.

Separately, the in-tree kubernetes.io/cinder entry listed ReadWriteOncePod twice in both of its volume mode arrays.

Solution description:

  • cinder.csi.openstack.org: added ReadWriteOncePod to the Filesystem and Block access mode lists.
  • kubernetes.io/cinder: removed the duplicated ReadWriteOncePod entry from both lists. This had no functional effect, since getAccessModeForProvisioner de-duplicates the result with a Set, but the mapping itself was incorrect.

No API, extension, or i18n changes. ReadWriteOncePod is already part of the AccessMode type, initialAccessModes, and getAccessModeOptions.

Screenshots / screen recording:

Test setup:

An OpenShift cluster running on OpenStack with the Cinder CSI driver installed, providing a StorageClass whose provisioner is cinder.csi.openstack.org.

Test cases:

  1. Navigate to Storage → PersistentVolumeClaims → Create PersistentVolumeClaim.
  2. Select a StorageClass backed by cinder.csi.openstack.org.
  3. Verify the access mode options include "Read write once pod (RWOP)" alongside "Single user (RWO)".
  4. Select RWOP with volume mode Filesystem, create the PVC, and verify it binds and reports ReadWriteOncePod.
  5. Repeat step 4 with volume mode Block.
  6. Regression: with a StorageClass backed by another provisioner (for example manila.csi.openstack.org), verify its access mode options are unchanged.

Browser conformance:

  • Chrome
  • Firefox
  • Safari (or Epiphany on Linux)

Additional info:

Reference: Kubernetes access modes and the Cinder CSI driver capabilities.

Reviewers and assignees:

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Bug Fixes
    • Corrected supported storage access modes for Kubernetes Cinder volumes.
    • Added ReadWriteOncePod support for OpenStack Cinder CSI volumes.
    • Removed a duplicate access mode entry to ensure accurate volume configuration options.

The Cinder CSI driver supports the SINGLE_NODE_SINGLE_WRITER access mode,
so ReadWriteOncePod is a valid access mode for both Filesystem and Block
volumes provisioned by cinder.csi.openstack.org.

Also remove the duplicate ReadWriteOncePod entry from the in-tree
kubernetes.io/cinder mapping. The duplicate had no functional effect
since getAccessModeForProvisioner dedupes the list, but the mapping was
incorrect.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@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: LGTM mode

@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 28, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@Surote: This pull request explicitly references no jira issue.

Details

In response to this:

Analysis / Root cause:

The provisioner-to-access-mode mapping in frontend/public/components/storage/shared.ts did not list ReadWriteOncePod for the OpenStack Cinder CSI driver (cinder.csi.openstack.org), so the access mode was not offered in the console when creating a PVC or a StorageClass-backed volume with that provisioner. The Cinder CSI driver reports the SINGLE_NODE_SINGLE_WRITER capability, which maps to ReadWriteOncePod, so the mode is valid for both Filesystem and Block volume modes.

Separately, the in-tree kubernetes.io/cinder entry listed ReadWriteOncePod twice in both of its volume mode arrays.

Solution description:

  • cinder.csi.openstack.org: added ReadWriteOncePod to the Filesystem and Block access mode lists.
  • kubernetes.io/cinder: removed the duplicated ReadWriteOncePod entry from both lists. This had no functional effect, since getAccessModeForProvisioner de-duplicates the result with a Set, but the mapping itself was incorrect.

No API, extension, or i18n changes. ReadWriteOncePod is already part of the AccessMode type, initialAccessModes, and getAccessModeOptions.

Screenshots / screen recording:

Test setup:

An OpenShift cluster running on OpenStack with the Cinder CSI driver installed, providing a StorageClass whose provisioner is cinder.csi.openstack.org.

Test cases:

  1. Navigate to Storage → PersistentVolumeClaims → Create PersistentVolumeClaim.
  2. Select a StorageClass backed by cinder.csi.openstack.org.
  3. Verify the access mode options include "Read write once pod (RWOP)" alongside "Single user (RWO)".
  4. Select RWOP with volume mode Filesystem, create the PVC, and verify it binds and reports ReadWriteOncePod.
  5. Repeat step 4 with volume mode Block.
  6. Regression: with a StorageClass backed by another provisioner (for example manila.csi.openstack.org), verify its access mode options are unchanged.

Browser conformance:

  • Chrome
  • Firefox
  • Safari (or Epiphany on Linux)

Additional info:

Reference: Kubernetes access modes and the Cinder CSI driver capabilities.

Reviewers and assignees:

🤖 Generated with Claude Code

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.

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

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: Pro Plus

Run ID: 1c3f976f-af16-4e08-9e4f-7f73bff86f1d

📥 Commits

Reviewing files that changed from the base of the PR and between 2f12191 and 81e73e4.

📒 Files selected for processing (1)
  • frontend/public/components/storage/shared.ts

Walkthrough

Changes

Provisioner access modes

Layer / File(s) Summary
Update Cinder access mode mappings
frontend/public/components/storage/shared.ts
Removes the duplicate ReadWriteOncePod entry for kubernetes.io/cinder and adds ReadWriteOncePod to both access mode mappings for cinder.csi.openstack.org.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Suggested reviewers: logonoff

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly states the main change: adding ReadWriteOncePod support for the Cinder CSI driver.
Description check ✅ Passed The description covers the root cause, solution, tests, and context; only minor template fields are left incomplete.
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 The PR only changes shared.ts; no Ginkgo test titles were added or modified, so there are no unstable names to flag.
Test Structure And Quality ✅ Passed No Ginkgo test files or test blocks were changed; the PR only updates storage access-mode mapping in shared.ts.
Microshift Test Compatibility ✅ Passed No new Ginkgo tests were added; the PR only changes frontend storage access-mode mappings in shared.ts.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the only change is a frontend storage mapping in shared.ts.
Topology-Aware Scheduling Compatibility ✅ Passed Only frontend storage access-mode mapping changed; no deployment manifests, operators, controllers, or scheduling constraints were modified.
Ote Binary Stdout Contract ✅ Passed PR only updates frontend storage access-mode mappings; no main/init/TestMain/suite setup or stdout logging code is present.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed Only frontend/shared mapping data changed; no new Ginkgo e2e tests or network/IP handling code was added.
No-Weak-Crypto ✅ Passed Changed file only updates storage access-mode mappings; no crypto algorithms, custom crypto, or secret/token comparisons are present.
Container-Privileges ✅ Passed Only frontend/public/components/storage/shared.ts changed; no container/K8s manifests or privileged settings were added.
No-Sensitive-Data-In-Logs ✅ Passed The patch only edits static access-mode mappings in shared.ts; no logging statements or sensitive identifiers 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.

@openshift-ci
openshift-ci Bot requested review from Leo6Leo and fsgreco July 28, 2026 13:21
@openshift-ci openshift-ci Bot added the component/core Related to console core functionality label Jul 28, 2026
@openshift-ci

openshift-ci Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: Surote
Once this PR has been reviewed and has the lgtm label, please assign spadgett 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

@openshift-ci openshift-ci Bot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Jul 28, 2026
@openshift-ci

openshift-ci Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Hi @Surote. Thanks for your PR.

I'm waiting for a openshift member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work.

Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

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.

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

Labels

component/core Related to console core functionality jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants