Skip to content
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

slim down catalogs transferred to diconnected clusters #85

Merged
merged 1 commit into from Jul 14, 2021
Merged

slim down catalogs transferred to diconnected clusters #85

merged 1 commit into from Jul 14, 2021

Conversation

estroz
Copy link
Member

@estroz estroz commented Jun 23, 2021

Signed-off-by: Eric Stroczynski ericstroczynski@gmail.com

@estroz
Copy link
Member Author

estroz commented Jun 23, 2021

Feel free to add other reviewers, not sure who else needs to look at this.

/cc @ecordell @dmesser @joelanford

- *Catalog*: one or more indices serving content.

Catalog invariants:
- Bundles, channels, and packages have unique names within their parent type (bundle->channel->package->catalog).
Copy link
Member

Choose a reason for hiding this comment

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

There's another invariant which is that the csv name has to be unique in the entire catalog.

Copy link
Member

Choose a reason for hiding this comment

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

(but we should definitely not use csv name as an identifier, as we want to create bundle formats that do not have csvs at all)

Copy link
Member Author

Choose a reason for hiding this comment

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

Is the ultimate invariant that a bundle will have a unique name within a catalog, or package name + bundle name will be unique?

@estroz estroz changed the title catalog-data-transfer-reduction.md: slim down catalogs transferred to diconnected clusters slim down catalogs transferred to diconnected clusters Jun 30, 2021
@estroz estroz requested a review from kevinrizza July 6, 2021 20:20
@kevinrizza
Copy link
Member

/approve

@estroz
Copy link
Member Author

estroz commented Jul 7, 2021

Going to whip up an opm alpha diff command based on what's in here.

Copy link

@dmesser dmesser left a comment

Choose a reason for hiding this comment

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

This EP would benefit from some tangible examples with sample catalog content, e.g.

  • some fictional package, channel and bundle names
  • their update graph between those bundles
  • changes that are introduced over time in the upstream / online catalog as a result of operators getting published
  • the output of the diff operation at the beginning of time and after some time when new operators have been published
  • what actually gets mirrored
  • how the initial catalog is registered in the disconnected environment
  • how the updated catalog is transferred and registered/merged in the disconnected environment

enhancements/catalog-data-transfer-reduction.md Outdated Show resolved Hide resolved
enhancements/catalog-data-transfer-reduction.md Outdated Show resolved Hide resolved
enhancements/catalog-data-transfer-reduction.md Outdated Show resolved Hide resolved
Comment on lines 408 to 412
- `output` and some catalog data (potentially an entire CatalogSource)
can be placed in some directory being watched by a daemon
that will perform any necessary catalog add/merge behavior,
then create/update a CatalogSource in-cluster.
- This may have security implications.
Copy link

Choose a reason for hiding this comment

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

It would be really nice to have this command create and push a merged catalog into a static location from which existing CatalogSource objects get their image.

enhancements/catalog-data-transfer-reduction.md Outdated Show resolved Hide resolved
@estroz
Copy link
Member Author

estroz commented Jul 14, 2021

@dmesser will add a more robust example soon. Otherwise, comments addressed.

- If `a` does not exist, `a'` is added to `B` because `A` does not have the newest bundle state `a'`.
- If `a'` does not exist, `a` is not added to `B` because `A` has the newest bundle state `a`.

The `headsOnly` mode is a special case of the above algorithm, because
Copy link

Choose a reason for hiding this comment

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

To supplement the user context here: the special case here is when a user mirrors for the first time: they just want the channel heads, not the entire history of all Operators ever released, since they are starting on a green field.

Then, for subsequently triggered mirroring runs they would use latest to only download the difference between the initial mirroring run and whatever has been published in the meantime. Here we want to download the Operator history all the way back to the cannel heads of A, because we need that for update graphs to be complete.

… diconnected clusters

Signed-off-by: Eric Stroczynski <ericstroczynski@gmail.com>
@estroz estroz merged commit 27e5377 into operator-framework:master Jul 14, 2021
@estroz estroz deleted the catalog-update-data-reduction branch July 14, 2021 16:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants