Replies: 2 comments 1 reply
-
Copying the text of a comment I left on a related PR: #274 (comment) @perdasilva and I chatted, and I think we got onto the same page? (correct me if I'm wrong)
These above two items would essentially replicate our existing logic. But this model could be extended to support other kinds of user-defined channel selection, where -- for example -- set-based choices can be made (e.g. in channels 1 and 2, but not 3, in which case 1 and 2 are mandatory and 3 is prohibited. Then, when we move on to honoring the upgrade edges, the $thing that defines the upgrade edges (in our current FBC model, a channel) has a variable source that (a) figures out the variable ID corresponding to the bundle that is installed, and (b) figures out the variable IDs of all of the possible successors of the currently installed variable ID. So if B1 is installed, and B2 and B3 are both successors of B1, then you'd end up with Getting back to the comments:
It needs to be possible to upgrade to a different channel though. It doesn't matter what channel a bundle was installed from. What matters is:
In fact, the channel of the currently installed bundle doesn't even make sense, really. Consider this fairly standard scenario:
Which channel did we resolve If, at a later point, a new catalog shows up that has channel TL;DR: What this all boils down to, IMO, is that our current model for channels serve two purposes:
These are disjoint concerns, in my opinion. I think we should model set-based channel membership filtering completely separate from upgrade edge filtering. With the current FBC schemas, they both originate from the same place, but that doesn't mean we need to co-mingle the implementations. I could see a future where FBC schemas look like this: ---
schema: olm.channel.v2
entries:
- bundle1
- bundle2
- bundle3
---
schema: olm.upgradeEdges
edges:
- from: bundle1
to: bundle2
- from: bundle1
to: bundle3
- from: bundle2
to: bundle3 |
Beta Was this translation helpful? Give feedback.
-
From looking at how operator authors used channels in the past, they mostly boil down to:
A lot of these can be replicated without actually using channels: version based channels won't be necessary if we can have semver based upgrade graphs, operators with different tenancy models feel like they could be their own package, and catalog based channels don't really feel necessary since they'd be on separate catalogs anyway. However, channels do help with the maturity based separation, we'd need some way to let a cluster admin specify the maturity level of packages and their dependencies on their cluster(channel/bundle level constraints?). I don't know about separating channel membership from upgrade edges though, isn't the purpose of channels primarily to contain upgrade edge information? What would an upgradeEdge object do to simplify the schema? |
Beta Was this translation helpful? Give feedback.
-
OLM V0 offered support for:
channels
replaces
,skips
, andskip-range
valuesRight now, OLM V1 is being designed to:
We should consider any other upgrade UXs that we might want to support. One usecase we discussed in the Community Meeting on June 27, 2023 was decoupling upgrade edges from channel memberships.
Beta Was this translation helpful? Give feedback.
All reactions