You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When using the dependencies.yamlolm.package option to resolve dependencies between operators, switching a channel of a dependent operator up to a new version allows the dependency to be downgraded, resulting in an error: conflicting CRD owner in namespace
What did you do?
Installed OCP 4.6 nightly build 9/17/2020 which has OLM 0.16.1.
Created a catalog index image with the following operator bundle taxonomy using the command:
What did you expect to see?
I expected v4.1-eus to be blocked from upgrading since it depends on an older version of operator A than what is installed.
What did you see instead? Under which circumstances?
Operator B successfully installed v4.1.1 in channel v4.1.1-eus
AND
Operator A was installed a second time by a second auto-generated subscription:
OLM generates this event: conflicting CRD owner in namespace
Environment
operator-lifecycle-manager version:
0.16.1
Kubernetes version information:
Client Version: 4.6.0-0.nightly-2020-09-15-112431
Server Version: 4.6.0-0.nightly-2020-09-17-073141
Kubernetes Version: v1.19.0+b4ffb45
Kubernetes cluster kind:
OCP on aws
Possible Solution
Additional context
We're trying to model a scenario where we can use a Channel to constrain all dependency operators to other channels with the same characteristics. In this case an eus or lts channel.
The text was updated successfully, but these errors were encountered:
Thanks for filing a detailed issue and especially for sharing the index image you used (with digest!). I was able to repro this at f02ac99. I also found that this isn't reproducible as described starting from d074613.
The relevant change in d074613 is that all CSVs gained a representation in the resolver's constraint system, whereas before, only CSVs that were not associated with a Subscription were directly represented. As a result, the resolver now understands that the installed "A 1.2.0" operator provides the same GVK as other versions of A, and rejects any solution that requires more than one version of A to be installed.
The issue you reported can currently still happen if you modify A such that it doesn't provide a GVK, or such that different versions of A provide different GVKs. This is because package name can't be reliably inferred from a CSV, and as a result, the resolver won't include the already-installed CSV in the constraint prohibiting solutions that include more than 1 operator per package name. I have a patch almost ready to go that will resolve that issue as well.
Bug Report
When using the
dependencies.yaml
olm.package
option to resolve dependencies between operators, switching a channel of a dependent operator up to a new version allows the dependency to be downgraded, resulting in an error:conflicting CRD owner in namespace
What did you do?
opm registry add --mode semver-skippatch
deptest
v4.1-eus
What did you expect to see?
I expected
v4.1-eus
to be blocked from upgrading since it depends on an older version of operator A than what is installed.What did you see instead? Under which circumstances?
Operator B successfully installed
v4.1.1
in channelv4.1.1-eus
AND
Operator A was installed a second time by a second auto-generated subscription:
The install plan:
OLM generates this event:
conflicting CRD owner in namespace
Environment
operator-lifecycle-manager version:
0.16.1
Kubernetes version information:
Client Version: 4.6.0-0.nightly-2020-09-15-112431
Server Version: 4.6.0-0.nightly-2020-09-17-073141
Kubernetes Version: v1.19.0+b4ffb45
Kubernetes cluster kind:
OCP on aws
Possible Solution
Additional context
We're trying to model a scenario where we can use a Channel to constrain all dependency operators to other channels with the same characteristics. In this case an
eus
orlts
channel.The text was updated successfully, but these errors were encountered: