Skip to content

Conversation

@BlaineEXE
Copy link
Contributor

@BlaineEXE BlaineEXE commented Jan 14, 2026

Rework BucketAccessClass feature options based on input from API review.

Review comment: #199 (comment)

Joel and Xing both seem to have trouble with the "feature options" wording, so I opted to try moving this to the top level, like PVCs.

Once we agree on the API here, I will update the rest of COSI's internal code and the KEP to match

@k8s-ci-robot
Copy link
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@k8s-ci-robot k8s-ci-robot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jan 14, 2026
@netlify
Copy link

netlify bot commented Jan 14, 2026

Deploy Preview for container-object-storage-interface ready!

Name Link
🔨 Latest commit 7c3e8ba
🔍 Latest deploy log https://app.netlify.com/projects/container-object-storage-interface/deploys/6967e2dc05b3ad0008460231
😎 Deploy Preview https://deploy-preview-222--container-object-storage-interface.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Jan 14, 2026
@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jan 14, 2026
@k8s-ci-robot
Copy link
Contributor

PR needs rebase.

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.

@k8s-ci-robot k8s-ci-robot added approved Indicates a PR has been approved by an approver from all required OWNERS files. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Jan 14, 2026
@BlaineEXE BlaineEXE changed the title rework AucketAccessClass feature options rework BucketAccessClass feature options Jan 14, 2026
Rework BucketAccessClass feature options based on input from API review.

Signed-off-by: Blaine Gardner <[email protected]>
@BlaineEXE BlaineEXE force-pushed the api-rework-baclass-feature-options branch from 6a745fa to 7c3e8ba Compare January 14, 2026 18:39
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: BlaineEXE, shanduur

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

Comment on lines +51 to 55
// multiBucketAccess specifies whether a BucketAccess using this class can reference multiple
// BucketClaims. When unspecified, multi-bucket access is allowed.
// +optional
DisallowMultiBucketAccess *bool `json:"disallowMultiBucketAccess,omitempty"`
MultiBucketAccess MultiBucketAccess `json:"multiBucketAccess,omitempty"`
}
Copy link
Contributor Author

@BlaineEXE BlaineEXE Jan 15, 2026

Choose a reason for hiding this comment

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

From meeting with Xing:

  • Usually, "single" would be the default here (more restrictive) and less restrictive option is optional.
  • Alternately, maybe this should be a required input. Having it be explicit could be more clear.

@JoelSpeed do you have recommendations around this API change?

Choose a reason for hiding this comment

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

I think in this case, I would initially say lean towards defaulting this to the more secure option, that would be SingleBucket in this case. What that gives us, is, if we ever decided MultipleBuckets were a sensible new default, it would mean that all existing instances would retain the SingleBucket default option, and we would only affect new instances.

However, there's been a recent discussion around some defaulting where we think we got the default wrong. One issue we typically have with default values in APIs is that we generally don't know if the value was defaulted, or set by a user. This means, if someone disagrees with your default, and would prefer MultipleBuckets be a default on their cluster, it's impossible for them to reliably apply their own default, without overwriting deliberate choices of SingleBucket.

What you could do, is to have the default applied by the controller at read time, and not write it back to the API. The controller would see this value is empty, and apply the SingleBucket behaviour.

This allows cluster admins to apply their own defaults if they wish to do so, it also allows folks who care to explicitly choose SingleBucket if they wanted to, and we will know they deliberately chose it, or folks can just chose MultipleBuckets.

The risk here is that if you were to choose to change the default later, some folks may not have expected that the value changes underneath them between releases, and in this case, that would be a security bad.

In OpenShift we typically call this out with the following message:

When omitted, this means no opinion and the platform is left to choose a reasonable default, which is subject to change over time. The current default is `___`.

This latter option may be a good choice if you're extremely confident we will never change the default

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. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants