Skip to content

api: move catalog sourcing fields to discriminated union #1088

Closed
@joelanford

Description

@joelanford

In order for us to support sourcing bundles directly, as is requested in #597, we need the ClusterExtension API to be structured such that one and exactly one sourcing mechanism can be specified.

A discriminated union is a good solution to this problem. If this path is chosen, special attention should be paid to the definition of a discriminated union because it likely requires very specific validations to exist.

The fields that are currently in the spec root that are related to catalog sourcing are:

  • packageName
  • version
  • channel
  • upgradeConstraintPolicy

These fields should be moved to a discriminated union type that is specific to sourcing from catalogs.

Here's a rough sketch of what the new structure could look like:

spec:
  source:
    type: Catalog
    catalog:
      packageName: foo
      channel: bar
      version: 1.0.0
      upgradeConstraintPolicy: Enforce

If we have the above structure, there will be a logical place to add support for direct bundle installs in the future, like so:

spec:
  source:
    type: BundleImage
    bundleImage:
      ref: quay.io/acme-co/widget-operator-bundle:v1.0.0

Metadata

Metadata

Assignees

Labels

epic/v1-apiv1.0Issues related to the initial stable release of OLMv1

Type

No type

Projects

Status

Done

Relationships

None yet

Development

No branches or pull requests

Issue actions