Skip to content

STOR-2878: Graduate MutableCSINodeAllocatableCount to GA#2673

Open
Phaow wants to merge 1 commit intoopenshift:masterfrom
Phaow:graduate-mutable-csinode-allocatablecount
Open

STOR-2878: Graduate MutableCSINodeAllocatableCount to GA#2673
Phaow wants to merge 1 commit intoopenshift:masterfrom
Phaow:graduate-mutable-csinode-allocatablecount

Conversation

@Phaow
Copy link

@Phaow Phaow commented Jan 27, 2026

User description

  • Graduate MutableCSINodeAllocatableCount to GA.

PR Type

Enhancement


Description

  • Graduate MutableCSINodeAllocatableCount feature gate to GA

  • Enable feature in Default profile alongside preview profiles

  • Update feature gate documentation and manifest files

  • Reorder feature in documentation table to GA section


Diagram Walkthrough

flowchart LR
  A["MutableCSINodeAllocatableCount<br/>Feature Gate"] -->|Add Default profile| B["Enable in DevPreview,<br/>TechPreview, Default"]
  B -->|Update manifests| C["Move to GA section<br/>in featuregates"]
  C -->|Update docs| D["Reorder in features.md<br/>documentation table"]
Loading

File Walkthrough

Relevant files
Enhancement
features.go
Enable MutableCSINodeAllocatableCount in Default profile 

features/features.go

  • Add configv1.Default to the enableIn() call for
    FeatureGateMutableCSINodeAllocatableCount
  • Fix indentation formatting for FeatureGateKMSEncryption definition
+7/-7     
Documentation
features.md
Move MutableCSINodeAllocatableCount to GA documentation   

features.md

  • Remove MutableCSINodeAllocatableCount from preview-only section
  • Add MutableCSINodeAllocatableCount to GA section with enabled status
    across all profiles
  • Reorder feature in documentation table to reflect GA graduation
+1/-1     
Configuration changes
featureGate-Hypershift-Default.yaml
Move feature to Default section in Hypershift manifest     

payload-manifests/featuregates/featureGate-Hypershift-Default.yaml

  • Remove MutableCSINodeAllocatableCount from TechPreviewNoUpgrade
    section
  • Add MutableCSINodeAllocatableCount to Default section
  • Reflect graduation from preview to GA status
+3/-3     
featureGate-SelfManagedHA-Default.yaml
Move feature to Default section in SelfManagedHA manifest

payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml

  • Remove MutableCSINodeAllocatableCount from TechPreviewNoUpgrade
    section
  • Add MutableCSINodeAllocatableCount to Default section
  • Reflect graduation from preview to GA status
+3/-3     

Special notes for your reviewer:

  • MutableCSINodeAllocatableCount is a featuregate we have the same name in both upstream and downstream. In downstream we only add an parameter to the aws ebs csidriver(enable the feature) by our operator. In addition, it is expected only support for aws currently. Even if Azure/Gcloud started support it, it won't be enabled automatically. We still need use our driver operator enable it set the parameter to csidriver object. It should be fully tested before we enable it for other csi drivers which start to support it.
  • We have 2 mock tests with [Feature:OffByDefault] tag and real e2e for aws 3 tests(in Suite:openshift/conformance/serial), total test count is 5.
[sig-storage] MutableCSINodeAllocatableCount [FeatureGate:MutableCSINodeAllocatableCount] [Beta] [Feature:OffByDefault] Dynamic Allocatable Count should observe dynamic changes in CSINode allocatable count
[sig-storage] MutableCSINodeAllocatableCount [FeatureGate:MutableCSINodeAllocatableCount] [Beta] [Feature:OffByDefault] Attach Limit Exceeded should transition pod to failed state when attachment limit exceeded
[sig-storage][FeatureGate:MutableCSINodeAllocatableCount][Jira:"Storage"][Serial][Driver: ebs.csi.aws.com] should be set the nodeAllocatableUpdatePeriodSeconds correctly by driver operator [Suite:openshift/conformance/serial]
[sig-storage][FeatureGate:MutableCSINodeAllocatableCount][Jira:"Storage"][Serial][Driver: ebs.csi.aws.com] should automatically update CSINode allocatable count when instance attached ENI count changes [Suite:openshift/conformance/serial]
[sig-storage][FeatureGate:MutableCSINodeAllocatableCount][Jira:"Storage"][Serial][Driver: ebs.csi.aws.com] should immediately update CSINode allocatable count when ResourceExhausted errors occur [Suite:openshift/conformance/serial]

@openshift-ci-robot
Copy link

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 Jan 27, 2026
@openshift-ci-robot
Copy link

openshift-ci-robot commented Jan 27, 2026

@Phaow: This pull request references STOR-2878 which is a valid jira issue.

Details

In response to this:

  • Graduate MutableCSINodeAllocatableCount to GA.

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 openshift-ci bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jan 27, 2026
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Jan 27, 2026

Hello @Phaow! Some important instructions when contributing to openshift/api:
API design plays an important part in the user experience of OpenShift and as such API PRs are subject to a high level of scrutiny to ensure they follow our best practices. If you haven't already done so, please review the OpenShift API Conventions and ensure that your proposed changes are compliant. Following these conventions will help expedite the api review process for your PR.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Jan 27, 2026

@Phaow: This pull request references STOR-2878 which is a valid jira issue.

Details

In response to this:

User description

  • Graduate MutableCSINodeAllocatableCount to GA.

PR Type

Enhancement


Description

  • Graduate MutableCSINodeAllocatableCount feature gate to GA

  • Enable feature in Default profile alongside preview profiles

  • Update feature gate documentation and manifest files

  • Reorder feature in documentation table to GA section


Diagram Walkthrough

flowchart LR
 A["MutableCSINodeAllocatableCount<br/>Feature Gate"] -->|Add Default profile| B["Enable in DevPreview,<br/>TechPreview, Default"]
 B -->|Update manifests| C["Move to GA section<br/>in featuregates"]
 C -->|Update docs| D["Reorder in features.md<br/>documentation table"]
Loading

File Walkthrough

Relevant files
Enhancement
features.go
Enable MutableCSINodeAllocatableCount in Default profile 

features/features.go

  • Add configv1.Default to the enableIn() call for
    FeatureGateMutableCSINodeAllocatableCount
  • Fix indentation formatting for FeatureGateKMSEncryption definition
+7/-7     
Documentation
features.md
Move MutableCSINodeAllocatableCount to GA documentation   

features.md

  • Remove MutableCSINodeAllocatableCount from preview-only section
  • Add MutableCSINodeAllocatableCount to GA section with enabled status
    across all profiles
  • Reorder feature in documentation table to reflect GA graduation
+1/-1     
Configuration changes
featureGate-Hypershift-Default.yaml
Move feature to Default section in Hypershift manifest     

payload-manifests/featuregates/featureGate-Hypershift-Default.yaml

  • Remove MutableCSINodeAllocatableCount from TechPreviewNoUpgrade
    section
  • Add MutableCSINodeAllocatableCount to Default section
  • Reflect graduation from preview to GA status
+3/-3     
featureGate-SelfManagedHA-Default.yaml
Move feature to Default section in SelfManagedHA manifest

payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml

  • Remove MutableCSINodeAllocatableCount from TechPreviewNoUpgrade
    section
  • Add MutableCSINodeAllocatableCount to Default section
  • Reflect graduation from preview to GA status
+3/-3     

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
Copy link

coderabbitai bot commented Jan 27, 2026

📝 Walkthrough

Walkthrough

This pull request moves the MutableCSINodeAllocatableCount feature from disabled to enabled in multiple FeatureGate manifests (Hypershift-Default, Hypershift-OKD, SelfManagedHA-Default, SelfManagedHA-OKD), reorders its row in features.md (removed then reintroduced elsewhere), and updates features.go to enable SigstoreImageVerification and MutableCSINodeAllocatableCount for Default and OKD in addition to their existing tiers. No exported/public signatures were changed.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description check ✅ Passed The description is comprehensive and directly related to the changeset, detailing the feature graduation, profile enablement, manifest updates, and test coverage.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check ✅ Passed The title clearly summarizes the main change: graduating the MutableCSINodeAllocatableCount feature gate to GA, which is directly reflected in all modified files.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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

@qodo-code-review
Copy link

qodo-code-review bot commented Jan 27, 2026

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

  • Update
Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

@openshift-ci openshift-ci bot added the size/S Denotes a PR that changes 10-29 lines, ignoring generated files. label Jan 27, 2026
@qodo-code-review
Copy link

qodo-code-review bot commented Jan 27, 2026

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
General
Simplify feature gate enablement for GA

To correctly reflect the feature's GA status, remove the redundant
DevPreviewNoUpgrade and TechPreviewNoUpgrade feature sets from the enableIn
call, leaving only configv1.Default.

features/features.go [927-933]

 	FeatureGateMutableCSINodeAllocatableCount = newFeatureGate("MutableCSINodeAllocatableCount").
 							reportProblemsToJiraComponent("Storage / Kubernetes External Components").
 							contactPerson("jsafrane").
 							productScope(kubernetes).
 							enhancementPR("https://github.com/kubernetes/enhancements/issues/4876").
-							enableIn(configv1.DevPreviewNoUpgrade, configv1.TechPreviewNoUpgrade, configv1.Default).
+							enableIn(configv1.Default).
 							mustRegister()

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 7

__

Why: The suggestion correctly points out that for a GA feature, enablement in DevPreviewNoUpgrade and TechPreviewNoUpgrade is redundant, improving code clarity and correctly reflecting the feature's lifecycle status.

Medium
  • Update

@Phaow
Copy link
Author

Phaow commented Jan 28, 2026

/test unit

@qodo-code-review
Copy link

qodo-code-review bot commented Jan 28, 2026

PR-Agent: could not fine a component named unit in a supported language in this PR.

@Phaow Phaow force-pushed the graduate-mutable-csinode-allocatablecount branch from ab0c5a1 to a0c674f Compare January 28, 2026 01:43
@openshift-ci openshift-ci bot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/S Denotes a PR that changes 10-29 lines, ignoring generated files. labels Jan 28, 2026
@Phaow
Copy link
Author

Phaow commented Jan 28, 2026

/test minor-e2e-upgrade-minor

@qodo-code-review
Copy link

qodo-code-review bot commented Jan 28, 2026

PR-Agent: could not fine a component named minor-e2e-upgrade-minor in a supported language in this PR.

@openshift-ci-robot
Copy link

openshift-ci-robot commented Jan 29, 2026

@Phaow: This pull request references STOR-2878 which is a valid jira issue.

Details

In response to this:

User description

  • Graduate MutableCSINodeAllocatableCount to GA.

PR Type

Enhancement


Description

  • Graduate MutableCSINodeAllocatableCount feature gate to GA

  • Enable feature in Default profile alongside preview profiles

  • Update feature gate documentation and manifest files

  • Reorder feature in documentation table to GA section


Diagram Walkthrough

flowchart LR
 A["MutableCSINodeAllocatableCount<br/>Feature Gate"] -->|Add Default profile| B["Enable in DevPreview,<br/>TechPreview, Default"]
 B -->|Update manifests| C["Move to GA section<br/>in featuregates"]
 C -->|Update docs| D["Reorder in features.md<br/>documentation table"]
Loading

File Walkthrough

Relevant files
Enhancement
features.go
Enable MutableCSINodeAllocatableCount in Default profile 

features/features.go

  • Add configv1.Default to the enableIn() call for
    FeatureGateMutableCSINodeAllocatableCount
  • Fix indentation formatting for FeatureGateKMSEncryption definition
+7/-7     
Documentation
features.md
Move MutableCSINodeAllocatableCount to GA documentation   

features.md

  • Remove MutableCSINodeAllocatableCount from preview-only section
  • Add MutableCSINodeAllocatableCount to GA section with enabled status
    across all profiles
  • Reorder feature in documentation table to reflect GA graduation
+1/-1     
Configuration changes
featureGate-Hypershift-Default.yaml
Move feature to Default section in Hypershift manifest     

payload-manifests/featuregates/featureGate-Hypershift-Default.yaml

  • Remove MutableCSINodeAllocatableCount from TechPreviewNoUpgrade
    section
  • Add MutableCSINodeAllocatableCount to Default section
  • Reflect graduation from preview to GA status
+3/-3     
featureGate-SelfManagedHA-Default.yaml
Move feature to Default section in SelfManagedHA manifest

payload-manifests/featuregates/featureGate-SelfManagedHA-Default.yaml

  • Remove MutableCSINodeAllocatableCount from TechPreviewNoUpgrade
    section
  • Add MutableCSINodeAllocatableCount to Default section
  • Reflect graduation from preview to GA status
+3/-3     

Special notes for your reviewer:

  • MutableCSINodeAllocatableCount is a featuregate we have the same name in both upstream and downstream. In downstream we only add an parameter to the aws ebs csidriver(enable the feature) by our operator. In addition, it is expected only support for aws currently. Even if Azure/Gcloud started support it, it won't be enabled automatically. We still need use our driver operator enable it set the parameter to csidriver object. It should be fully tested before we enable it for other csi drivers which start to support it.
  • We have 2 mock tests with [Feature:OffByDefault] tag and real e2e for aws 3 tests(in Suite:openshift/conformance/serial), total test count is 5.
[sig-storage] MutableCSINodeAllocatableCount [FeatureGate:MutableCSINodeAllocatableCount] [Beta] [Feature:OffByDefault] Dynamic Allocatable Count should observe dynamic changes in CSINode allocatable count
[sig-storage] MutableCSINodeAllocatableCount [FeatureGate:MutableCSINodeAllocatableCount] [Beta] [Feature:OffByDefault] Attach Limit Exceeded should transition pod to failed state when attachment limit exceeded
[sig-storage][FeatureGate:MutableCSINodeAllocatableCount][Jira:"Storage"][Serial][Driver: ebs.csi.aws.com] should be set the nodeAllocatableUpdatePeriodSeconds correctly by driver operator [Suite:openshift/conformance/serial]
[sig-storage][FeatureGate:MutableCSINodeAllocatableCount][Jira:"Storage"][Serial][Driver: ebs.csi.aws.com] should automatically update CSINode allocatable count when instance attached ENI count changes [Suite:openshift/conformance/serial]
[sig-storage][FeatureGate:MutableCSINodeAllocatableCount][Jira:"Storage"][Serial][Driver: ebs.csi.aws.com] should immediately update CSINode allocatable count when ResourceExhausted errors occur [Suite:openshift/conformance/serial]

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.

@Phaow
Copy link
Author

Phaow commented Feb 2, 2026

/test verify-feature-promotion

@qodo-code-review
Copy link

qodo-code-review bot commented Feb 2, 2026

PR-Agent: could not fine a component named verify-feature-promotion in a supported language in this PR.

@Phaow
Copy link
Author

Phaow commented Feb 4, 2026

/test verify-feature-promotion

@qodo-code-review
Copy link

qodo-code-review bot commented Feb 4, 2026

PR-Agent: could not fine a component named verify-feature-promotion in a supported language in this PR.

Signed-off-by: Penghao <pewang@redhat.com>
@Phaow Phaow force-pushed the graduate-mutable-csinode-allocatablecount branch from a0c674f to 3643afa Compare February 5, 2026 02:43
@openshift-ci openshift-ci bot added size/S Denotes a PR that changes 10-29 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Feb 5, 2026
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Feb 5, 2026

@Phaow: 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/verify-feature-promotion 3643afa link true /test verify-feature-promotion

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.

@Phaow
Copy link
Author

Phaow commented Feb 5, 2026

/retitle STOR-2878: Graduate MutableCSINodeAllocatableCount to GA

@openshift-ci openshift-ci bot changed the title [WIP] STOR-2878: Graduate MutableCSINodeAllocatableCount to GA STOR-2878: Graduate MutableCSINodeAllocatableCount to GA Feb 5, 2026
@openshift-ci openshift-ci bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Feb 5, 2026
@Phaow
Copy link
Author

Phaow commented Feb 5, 2026

I could see the verify-feature-promotion check should be staisify the requirement since currently the feature is only supported on aws, we already discussed in slack https://redhat-internal.slack.com/archives/CE4L0F143/p1769608607296699?thread_ts=1769594696.378039&cid=CE4L0F143 offline(I also mentioned in Special notes for your reviewer).

MutableCSINodeAllocatableCount

Test haawsamd64 haazureamd64 hagcpamd64 hametalamd64ipv4 hametalamd64ipv6 hametalamd64dual havsphereamd64 singleawsamd64
Attach Limit Exceeded 100% (24/24) 100% (47/47) 100% (44/44) 100% (35/35) 100% (18/18) 100% (25/25) 100% (25/25) 100% (39/39)
Dynamic Allocatable Count 100% (24/24) 100% (47/47) 100% (44/44) 100% (35/35) 100% (18/18) 100% (25/25) 100% (25/25) 100% (39/39)
EBS: ENI count changes 96% (30/31) 0/0 0/0 0/0 0/0 0/0 0/1 100% (31/31)
EBS: allocatable period 1

Hi @jsafrane @JoelSpeed , could you help review when you get a chance? Thank you! ^^

@Phaow
Copy link
Author

Phaow commented Feb 5, 2026

/assign @jsafrane @JoelSpeed

@JoelSpeed
Copy link
Contributor

/approve
/assign @jsafrane

Jan, please confirm we are expecting only AWS to be supported right now, and that future platforms will be enabled later with additional platform specific gates

@openshift-ci
Copy link
Contributor

openshift-ci bot commented Feb 5, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: JoelSpeed

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

The pull request process is described 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 approved Indicates a PR has been approved by an approver from all required OWNERS files. label Feb 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. Review effort 2/5 size/S Denotes a PR that changes 10-29 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants