-
Notifications
You must be signed in to change notification settings - Fork 82
add bundle release version attribute, substitutes template #342
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: grokspawn <jordan@nimblewidget.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds comprehensive documentation for a new bundle release version attribute that enables packaging-only revisions of operators. The feature introduces an optional release field for ClusterServiceVersions and file-based catalog bundles, along with a new substitutes template for managing bundle replacements.
Changes:
- Extended
olm.packageproperty schema to support optionalreleasefield with format constraints and validation rules - Documented new substitutes template (
olm.template.substitutes) for safely replacing bundles with packaging revisions - Added
releasefield documentation to ClusterServiceVersion spec with naming conventions and version ordering rules
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 8 comments.
| File | Description |
|---|---|
| content/en/docs/Reference/file-based-catalogs.md | Adds Bundle Release Property section documenting the optional release field in olm.package, including use cases, naming conventions, format constraints, and composite version ordering |
| content/en/docs/Reference/catalog-templates.md | Documents the new substitutes template for replacing bundles, including schema, workflow diagrams, validation rules, and complete working examples |
| content/en/docs/Concepts/crds/clusterserviceversion.md | Adds Release Field section to CSV documentation with format validation, naming conventions, and version ordering behavior |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
b395d1b to
2cd1921
Compare
|
lint is failing due to the number of links being evaluated. This passes locally, and hopefully #343 will help this for future updates. |
trgeiger
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Couple nits
2cd1921 to
4b7a38a
Compare
rashmigottipati
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me overall.
Can we add a brief note on backward compatibility that explicitly describes the behavior when the release field is not present? Even though the field is optional, it would be helpful to clarify how bundles without release are handled (ordering, comparison, and so on) to set correct expectations for mixed catalogs.
Signed-off-by: Jordan <jordan@nimblewidget.com>
4b7a38a to
ac225a2
Compare
| memcached-operator.v0.10.0 # version 0.10.0, no release | ||
| memcached-operator-v0.10.0-1 # version 0.10.0, release "1" | ||
| memcached-operator-v0.10.0-2 # version 0.10.0, release "2" | ||
| memcached-operator-v0.10.0-alpha # version 0.10.0, release "alpha" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this ordering correct with respect to rule #2 above?
- For bundles with the same version, those with a release are ordered before those without a release
With merge of operator-framework/api#454 (for CSV) and operator-framework/operator-registry#1792 (for FBC and substitutes template support), we have new capabilities to express the concept of a packaging-only revision of an operator.
Expressed in the ClusterServiceVersion as an optional release field, captured in the
olm.bundleFBC schema version propertyolm.packageand leveraged in the new substitutes template type, this attribute opens up a new axis in bundle operator versioning.This release version allows migration to the new version on clusters with the old version installed, and facilitates graph updates to prefer the new release version over previous versions.
Contributions:
I used claude to help generate some diagrams and examples, but I'm to blame for any mistakes.