Skip to content

Commit aa13e2d

Browse files
committed
check ClusterImagePolicy conflicts only on default clusters
Signed-off-by: Qi Wang <qiwan@redhat.com>
1 parent 0a8e123 commit aa13e2d

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

pkg/operator/status.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,22 @@ func (optr *Operator) syncUpgradeableStatus(co *configv1.ClusterOperator) error
280280
coStatusCondition.Reason = "ClusterOnCgroupV1"
281281
coStatusCondition.Message = "Cluster is using deprecated cgroup v1 and is not upgradable. Please update the `CgroupMode` in the `nodes.config.openshift.io` object to 'v2'. Once upgraded, the cluster cannot be changed back to cgroup v1"
282282
}
283+
284+
// Check for ClusterImagePolicy named "openshift" which conflicts with the cluster default ClusterImagePolicy object
285+
// Only check for Default featureSet clusters allowing 4.20 ci techpreview builds upgrades
286+
// Use SigstoreImageVerificationPKI as an featureset indicator: if it's disabled, the cluster is on Default feature set
287+
// (SigstoreImageVerificationPKI is only enabled in TechPreview/DevPreview in 4.20, not in Default, and thefeature set changes won’t be backported, making this method stable for 4.20.).
288+
// This avoids the API call to get the FeatureGate resource
289+
if optr.fgHandler != nil && !optr.fgHandler.Enabled(features.FeatureGateSigstoreImageVerificationPKI) {
290+
if _, err := optr.configClient.ConfigV1().ClusterImagePolicies().Get(context.TODO(), "openshift", metav1.GetOptions{}); err == nil {
291+
coStatusCondition.Status = configv1.ConditionFalse
292+
coStatusCondition.Reason = "ConflictingClusterImagePolicy"
293+
coStatusCondition.Message = "ClusterImagePolicy resource named 'openshift' conflicts with the cluster default ClusterImagePolicy object and blocks upgrades. Please delete the 'openshift' ClusterImagePolicy resource and reapply it with a different name if needed"
294+
} else if !apierrors.IsNotFound(err) {
295+
return err
296+
}
297+
}
298+
283299
var degraded, interrupted bool
284300
for _, pool := range pools {
285301
interrupted = isPoolStatusConditionTrue(pool, mcfgv1.MachineConfigPoolBuildInterrupted)

0 commit comments

Comments
 (0)