diff --git a/pkg/controller/operators/olm/apiservices.go b/pkg/controller/operators/olm/apiservices.go index d3524cd8e7..c71b5594f3 100644 --- a/pkg/controller/operators/olm/apiservices.go +++ b/pkg/controller/operators/olm/apiservices.go @@ -295,7 +295,7 @@ func (a *Operator) getWebhookCABundle(csv *v1alpha1.ClusterServiceVersion, desc if err != nil { continue } - if crd.Spec.Conversion == nil || crd.Spec.Conversion.Webhook == nil || crd.Spec.Conversion.Webhook.ClientConfig == nil && crd.Spec.Conversion.Webhook.ClientConfig.CABundle == nil { + if crd.Spec.Conversion == nil || crd.Spec.Conversion.Webhook == nil || crd.Spec.Conversion.Webhook.ClientConfig == nil || crd.Spec.Conversion.Webhook.ClientConfig.CABundle == nil { continue } @@ -472,7 +472,7 @@ func (a *Operator) areWebhooksAvailable(csv *v1alpha1.ClusterServiceVersion) (bo return false, err } - if crd.Spec.Conversion == nil || crd.Spec.Conversion.Strategy != "Webhook" || crd.Spec.Conversion.Webhook == nil || crd.Spec.Conversion.Webhook.ClientConfig == nil && crd.Spec.Conversion.Webhook.ClientConfig.CABundle == nil { + if crd.Spec.Conversion == nil || crd.Spec.Conversion.Strategy != "Webhook" || crd.Spec.Conversion.Webhook == nil || crd.Spec.Conversion.Webhook.ClientConfig == nil || crd.Spec.Conversion.Webhook.ClientConfig.CABundle == nil { return false, fmt.Errorf("conversionWebhook not ready") } webhookCount++ diff --git a/pkg/controller/operators/olm/operator.go b/pkg/controller/operators/olm/operator.go index 539fa99ad9..efd5e33b37 100644 --- a/pkg/controller/operators/olm/operator.go +++ b/pkg/controller/operators/olm/operator.go @@ -2359,7 +2359,12 @@ func (a *Operator) updateInstallStatus(csv *v1alpha1.ClusterServiceVersion, inst return fmt.Errorf(msg) } - if !webhooksInstalled || webhookErr != nil { + if webhookErr != nil { + csv.SetPhaseWithEventIfChanged(v1alpha1.CSVPhaseInstallReady, requeueConditionReason, fmt.Sprintf("Webhook install failed: %s", webhookErr), now, a.recorder) + return webhookErr + } + + if !webhooksInstalled { msg := "webhooks not installed" csv.SetPhaseWithEventIfChanged(requeuePhase, requeueConditionReason, msg, now, a.recorder) if err := a.csvQueueSet.Requeue(csv.GetNamespace(), csv.GetName()); err != nil { diff --git a/pkg/controller/operators/olm/operator_test.go b/pkg/controller/operators/olm/operator_test.go index f2d4b3842c..8377073c23 100644 --- a/pkg/controller/operators/olm/operator_test.go +++ b/pkg/controller/operators/olm/operator_test.go @@ -3513,7 +3513,7 @@ func TestWebhookCABundleRetrieval(t *testing.T) { ), "csv1-dep1", []string{"c1.g1"}), }, crds: []runtime.Object{ - crd("c1", "v1", "g1"), + crdWithConversionWebhook(crd("c1", "v1", "g1"), nil), }, desc: v1alpha1.WebhookDescription{ GenerateName: "webhook",