Skip to content

Commit 61b9d60

Browse files
committed
(fix) Admission Webhook names must be unique
Problem: OLM currently creates all ValidatingWebhookConfigurations and MutatingWebhookConfigurations using the name provided in the WebhookDescription. This causes an issue when an operator that defines an admission webhook in the CSV is installed in multiple namespaces, causes the two operators to fight over the admission webhook. Solution: Generate a unique name for each webhook using the GenerateName field in the Object Metadata.
1 parent a947685 commit 61b9d60

32 files changed

+1091
-1197
lines changed

deploy/chart/crds/0000_50_olm_00-catalogsources.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
44
annotations:
5-
controller-gen.kubebuilder.io/version: v0.2.8
5+
controller-gen.kubebuilder.io/version: v0.3.0
66
creationTimestamp: null
77
name: catalogsources.operators.coreos.com
88
spec:

deploy/chart/crds/0000_50_olm_00-clusterserviceversions.yaml

Lines changed: 37 additions & 64 deletions
Large diffs are not rendered by default.

deploy/chart/crds/0000_50_olm_00-installplans.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
44
annotations:
5-
controller-gen.kubebuilder.io/version: v0.2.8
5+
controller-gen.kubebuilder.io/version: v0.3.0
66
creationTimestamp: null
77
name: installplans.operators.coreos.com
88
spec:

deploy/chart/crds/0000_50_olm_00-operatorgroups.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
44
annotations:
5-
controller-gen.kubebuilder.io/version: v0.2.8
5+
controller-gen.kubebuilder.io/version: v0.3.0
66
creationTimestamp: null
77
name: operatorgroups.operators.coreos.com
88
spec:

deploy/chart/crds/0000_50_olm_00-subscriptions.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
44
annotations:
5-
controller-gen.kubebuilder.io/version: v0.2.8
5+
controller-gen.kubebuilder.io/version: v0.3.0
66
creationTimestamp: null
77
name: subscriptions.operators.coreos.com
88
spec:

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ require (
2222
github.com/onsi/gomega v1.9.0
2323
github.com/openshift/api v0.0.0-20200331152225-585af27e34fd
2424
github.com/openshift/client-go v0.0.0-20200326155132-2a6cd50aedd0
25-
github.com/operator-framework/api v0.3.2
26-
github.com/operator-framework/operator-registry v1.12.1
25+
github.com/operator-framework/api v0.3.5
26+
github.com/operator-framework/operator-registry v1.12.2
2727
github.com/otiai10/copy v1.0.2
2828
github.com/pkg/errors v0.9.1
2929
github.com/prometheus/client_golang v1.2.1

go.sum

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -584,11 +584,14 @@ github.com/openshift/client-go v0.0.0-20200326155132-2a6cd50aedd0 h1:kMiuiZXH1Gd
584584
github.com/openshift/client-go v0.0.0-20200326155132-2a6cd50aedd0/go.mod h1:uUQ4LClRO+fg5MF/P6QxjMCb1C9f7Oh4RKepftDnEJE=
585585
github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
586586
github.com/operator-framework/api v0.1.1/go.mod h1:yzNYR7qyJqRGOOp+bT6Z/iYSbSPNxeh3Si93Gx/3OBY=
587-
github.com/operator-framework/api v0.3.2 h1:FvM+tWBIEDNfE0IxT8nr3t2HymcbItC4rngPJC467y4=
588-
github.com/operator-framework/api v0.3.2/go.mod h1:TmRmw+8XOUaDPq6SP9gA8cIexNf/Pq8LMFY7YaKQFTs=
587+
github.com/operator-framework/api v0.3.4/go.mod h1:TmRmw+8XOUaDPq6SP9gA8cIexNf/Pq8LMFY7YaKQFTs=
588+
github.com/operator-framework/api v0.3.5 h1:eUFzNOACJLsufdLiwRvj7/7O1yDgsu/6d1xM4idgE3I=
589+
github.com/operator-framework/api v0.3.5/go.mod h1:TmRmw+8XOUaDPq6SP9gA8cIexNf/Pq8LMFY7YaKQFTs=
589590
github.com/operator-framework/operator-registry v1.5.3/go.mod h1:agrQlkWOo1q8U1SAaLSS2WQ+Z9vswNT2M2HFib9iuLY=
590591
github.com/operator-framework/operator-registry v1.12.1 h1:JWk8s6LPwyJ16qQzOhALS0hycmmzUGteGQSCbfsPeBY=
591592
github.com/operator-framework/operator-registry v1.12.1/go.mod h1:rf4b/h77GUv1+geiej2KzGRQr8iBLF4dXNwr5AuGkrQ=
593+
github.com/operator-framework/operator-registry v1.12.2 h1:rQayebXFwetB9HrodU+fjbH5zFZ52uKIpDGhEzDDjZs=
594+
github.com/operator-framework/operator-registry v1.12.2/go.mod h1:8rsa504LH5BqEQJZsK+/5+5PmEFFphhQVsyDkvD+us4=
592595
github.com/otiai10/copy v1.0.1/go.mod h1:8bMCJrAqOtN/d9oyh5HR7HhLQMvcGMpGdwRDYsfOCHc=
593596
github.com/otiai10/copy v1.0.2 h1:DDNipYy6RkIkjMwy+AWzgKiNTyj2RUI9yEMeETEpVyc=
594597
github.com/otiai10/copy v1.0.2/go.mod h1:c7RpqBkwMom4bYTSkLSym4VSJz/XtncWRAj/J4PEIMY=

manifests/0000_50_olm_00-catalogsources.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
44
annotations:
5-
controller-gen.kubebuilder.io/version: v0.2.8
5+
controller-gen.kubebuilder.io/version: v0.3.0
66
creationTimestamp: null
77
name: catalogsources.operators.coreos.com
88
spec:

manifests/0000_50_olm_00-clusterserviceversions.yaml

Lines changed: 37 additions & 64 deletions
Large diffs are not rendered by default.

manifests/0000_50_olm_00-installplans.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
44
annotations:
5-
controller-gen.kubebuilder.io/version: v0.2.8
5+
controller-gen.kubebuilder.io/version: v0.3.0
66
creationTimestamp: null
77
name: installplans.operators.coreos.com
88
spec:

manifests/0000_50_olm_00-operatorgroups.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
44
annotations:
5-
controller-gen.kubebuilder.io/version: v0.2.8
5+
controller-gen.kubebuilder.io/version: v0.3.0
66
creationTimestamp: null
77
name: operatorgroups.operators.coreos.com
88
spec:

manifests/0000_50_olm_00-subscriptions.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
44
annotations:
5-
controller-gen.kubebuilder.io/version: v0.2.8
5+
controller-gen.kubebuilder.io/version: v0.3.0
66
creationTimestamp: null
77
name: subscriptions.operators.coreos.com
88
spec:

pkg/controller/install/certresources.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ type webhookDescriptionWithCAPEM struct {
103103
}
104104

105105
func (i *webhookDescriptionWithCAPEM) getName() string {
106-
return i.webhookDescription.Name
106+
return i.webhookDescription.GenerateName
107107
}
108108

109109
func (i *webhookDescriptionWithCAPEM) setCAPEM(caPEM []byte) {

pkg/controller/install/webhook.go

Lines changed: 78 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99

1010
log "github.com/sirupsen/logrus"
1111
admissionregistrationv1 "k8s.io/api/admissionregistration/v1"
12-
k8serrors "k8s.io/apimachinery/pkg/api/errors"
1312
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1413
"k8s.io/apimachinery/pkg/labels"
1514
)
@@ -72,80 +71,107 @@ func (i *StrategyDeploymentInstaller) createOrUpdateWebhook(caPEM []byte, desc v
7271
}
7372

7473
func (i *StrategyDeploymentInstaller) createOrUpdateMutatingWebhook(ogNamespacelabelSelector *metav1.LabelSelector, caPEM []byte, desc v1alpha1.WebhookDescription) error {
75-
webhooks := []admissionregistrationv1.MutatingWebhook{
76-
desc.GetMutatingWebhook(i.owner.GetNamespace(), ogNamespacelabelSelector, caPEM),
74+
webhookLabels := ownerutil.OwnerLabel(i.owner, i.owner.GetObjectKind().GroupVersionKind().Kind)
75+
webhookLabels[WebhookDescKey] = desc.GenerateName
76+
webhookSelector := labels.SelectorFromSet(webhookLabels).String()
77+
78+
existingWebhooks, err := i.strategyClient.GetOpClient().KubernetesInterface().AdmissionregistrationV1().MutatingWebhookConfigurations().List(context.TODO(), metav1.ListOptions{LabelSelector: webhookSelector})
79+
if err != nil {
80+
return err
7781
}
78-
existingHook, err := i.strategyClient.GetOpClient().KubernetesInterface().AdmissionregistrationV1().MutatingWebhookConfigurations().Get(context.TODO(), desc.Name, metav1.GetOptions{})
79-
if err == nil {
80-
// Check if the only owners are this CSV or in this CSV's replacement chain
81-
if ownerutil.Adoptable(i.owner, existingHook.GetOwnerReferences()) {
82-
ownerutil.AddNonBlockingOwner(existingHook, i.owner)
83-
}
8482

85-
// Update the list of webhooks
86-
existingHook.Webhooks = webhooks
83+
if len(existingWebhooks.Items) == 0 {
84+
// Create a MutatingWebhookConfiguration
85+
webhook := admissionregistrationv1.MutatingWebhookConfiguration{
86+
ObjectMeta: metav1.ObjectMeta{
87+
GenerateName: desc.GenerateName + "-",
88+
Namespace: i.owner.GetNamespace(),
89+
Labels: ownerutil.OwnerLabel(i.owner, i.owner.GetObjectKind().GroupVersionKind().Kind),
90+
},
91+
Webhooks: []admissionregistrationv1.MutatingWebhook{
92+
desc.GetMutatingWebhook(i.owner.GetNamespace(), ogNamespacelabelSelector, caPEM),
93+
},
94+
}
95+
addWebhookLabels(&webhook, desc)
8796

88-
// Attempt an update
89-
if _, err := i.strategyClient.GetOpClient().KubernetesInterface().AdmissionregistrationV1().MutatingWebhookConfigurations().Update(context.TODO(), existingHook, metav1.UpdateOptions{}); err != nil {
90-
log.Warnf("could not update MutatingWebhookConfiguration %s", existingHook.GetName())
97+
if _, err := i.strategyClient.GetOpClient().KubernetesInterface().AdmissionregistrationV1().MutatingWebhookConfigurations().Create(context.TODO(), &webhook, metav1.CreateOptions{}); err != nil {
98+
log.Errorf("Webhooks: Error creating MutatingWebhookConfiguration: %v", err)
9199
return err
92100
}
93-
} else if k8serrors.IsNotFound(err) {
94-
hook := admissionregistrationv1.MutatingWebhookConfiguration{
95-
ObjectMeta: metav1.ObjectMeta{Name: desc.Name,
96-
Namespace: i.owner.GetNamespace(),
97-
},
98-
Webhooks: webhooks,
101+
return nil
102+
}
103+
for _, webhook := range existingWebhooks.Items {
104+
// Update the list of webhooks
105+
webhook.Webhooks = []admissionregistrationv1.MutatingWebhook{
106+
desc.GetMutatingWebhook(i.owner.GetNamespace(), ogNamespacelabelSelector, caPEM),
99107
}
100-
// Add an owner
101-
ownerutil.AddNonBlockingOwner(&hook, i.owner)
102-
if _, err := i.strategyClient.GetOpClient().KubernetesInterface().AdmissionregistrationV1().MutatingWebhookConfigurations().Create(context.TODO(), &hook, metav1.CreateOptions{}); err != nil {
103-
log.Errorf("Webhooks: Error creating mutating MutatingVebhookConfiguration: %v", err)
108+
109+
// Attempt an update
110+
if _, err := i.strategyClient.GetOpClient().KubernetesInterface().AdmissionregistrationV1().MutatingWebhookConfigurations().Update(context.TODO(), &webhook, metav1.UpdateOptions{}); err != nil {
111+
log.Warnf("could not update MutatingWebhookConfiguration %s", webhook.GetName())
104112
return err
105113
}
106-
} else {
107-
return err
108114
}
109115

110116
return nil
111117
}
112118

113119
func (i *StrategyDeploymentInstaller) createOrUpdateValidatingWebhook(ogNamespacelabelSelector *metav1.LabelSelector, caPEM []byte, desc v1alpha1.WebhookDescription) error {
114-
webhooks := []admissionregistrationv1.ValidatingWebhook{
115-
desc.GetValidatingWebhook(i.owner.GetNamespace(), ogNamespacelabelSelector, caPEM),
120+
webhookLabels := ownerutil.OwnerLabel(i.owner, i.owner.GetObjectKind().GroupVersionKind().Kind)
121+
webhookLabels[WebhookDescKey] = desc.GenerateName
122+
webhookSelector := labels.SelectorFromSet(webhookLabels).String()
123+
124+
existingWebhooks, err := i.strategyClient.GetOpClient().KubernetesInterface().AdmissionregistrationV1().ValidatingWebhookConfigurations().List(context.TODO(), metav1.ListOptions{LabelSelector: webhookSelector})
125+
if err != nil {
126+
return err
116127
}
117-
existingHook, err := i.strategyClient.GetOpClient().KubernetesInterface().AdmissionregistrationV1().ValidatingWebhookConfigurations().Get(context.TODO(), desc.Name, metav1.GetOptions{})
118-
if err == nil {
119-
// Check if the only owners are this CSV or in this CSV's replacement chain
120-
if ownerutil.Adoptable(i.owner, existingHook.GetOwnerReferences()) {
121-
ownerutil.AddNonBlockingOwner(existingHook, i.owner)
122-
}
123128

124-
// Update the list of webhooks
125-
existingHook.Webhooks = webhooks
129+
if len(existingWebhooks.Items) == 0 {
130+
// Create a ValidatingWebhookConfiguration
131+
webhook := admissionregistrationv1.ValidatingWebhookConfiguration{
132+
ObjectMeta: metav1.ObjectMeta{
133+
GenerateName: desc.GenerateName + "-",
134+
Namespace: i.owner.GetNamespace(),
135+
Labels: ownerutil.OwnerLabel(i.owner, i.owner.GetObjectKind().GroupVersionKind().Kind),
136+
},
137+
Webhooks: []admissionregistrationv1.ValidatingWebhook{
138+
desc.GetValidatingWebhook(i.owner.GetNamespace(), ogNamespacelabelSelector, caPEM),
139+
},
140+
}
141+
addWebhookLabels(&webhook, desc)
126142

127-
// Attempt an update
128-
if _, err := i.strategyClient.GetOpClient().KubernetesInterface().AdmissionregistrationV1().ValidatingWebhookConfigurations().Update(context.TODO(), existingHook, metav1.UpdateOptions{}); err != nil {
129-
log.Warnf("could not update ValidatingWebhookConfiguration %s", existingHook.GetName())
143+
if _, err := i.strategyClient.GetOpClient().KubernetesInterface().AdmissionregistrationV1().ValidatingWebhookConfigurations().Create(context.TODO(), &webhook, metav1.CreateOptions{}); err != nil {
144+
log.Errorf("Webhooks: Error creating ValidatingWebhookConfiguration: %v", err)
130145
return err
131146
}
132-
} else if k8serrors.IsNotFound(err) {
133-
// Create a ValidatingWebhookConfiguration
134-
hook := admissionregistrationv1.ValidatingWebhookConfiguration{
135-
ObjectMeta: metav1.ObjectMeta{Name: desc.Name,
136-
Namespace: i.owner.GetNamespace(),
137-
},
138-
Webhooks: webhooks,
147+
return nil
148+
}
149+
for _, webhook := range existingWebhooks.Items {
150+
// Update the list of webhooks
151+
webhook.Webhooks = []admissionregistrationv1.ValidatingWebhook{
152+
desc.GetValidatingWebhook(i.owner.GetNamespace(), ogNamespacelabelSelector, caPEM),
139153
}
140154

141-
// Add an owner
142-
ownerutil.AddNonBlockingOwner(&hook, i.owner)
143-
if _, err := i.strategyClient.GetOpClient().KubernetesInterface().AdmissionregistrationV1().ValidatingWebhookConfigurations().Create(context.TODO(), &hook, metav1.CreateOptions{}); err != nil {
144-
log.Errorf("Webhooks: Error create creating ValidationVebhookConfiguration: %v", err)
155+
// Attempt an update
156+
if _, err := i.strategyClient.GetOpClient().KubernetesInterface().AdmissionregistrationV1().ValidatingWebhookConfigurations().Update(context.TODO(), &webhook, metav1.UpdateOptions{}); err != nil {
157+
log.Warnf("could not update ValidatingWebhookConfiguration %s", webhook.GetName())
145158
return err
146159
}
147-
} else {
148-
return err
149160
}
161+
162+
return nil
163+
}
164+
165+
const WebhookDescKey = "webhookDescriptionGenerateName"
166+
167+
// addWebhookLabels adds webhook labels to an object
168+
func addWebhookLabels(object metav1.Object, webhookDesc v1alpha1.WebhookDescription) error {
169+
labels := object.GetLabels()
170+
if labels == nil {
171+
labels = map[string]string{}
172+
}
173+
labels[WebhookDescKey] = webhookDesc.GenerateName
174+
object.SetLabels(labels)
175+
150176
return nil
151177
}

pkg/controller/operators/olm/apiservices.go

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ import (
1010
rbacv1 "k8s.io/api/rbac/v1"
1111
k8serrors "k8s.io/apimachinery/pkg/api/errors"
1212
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13+
"k8s.io/apimachinery/pkg/labels"
1314
utilerrors "k8s.io/apimachinery/pkg/util/errors"
1415

1516
"github.com/operator-framework/api/pkg/operators/v1alpha1"
1617
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/certs"
1718
olmerrors "github.com/operator-framework/operator-lifecycle-manager/pkg/controller/errors"
1819
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/install"
20+
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/ownerutil"
1921
)
2022

2123
const (
@@ -255,10 +257,8 @@ func (a *Operator) areAPIServicesAvailable(csv *v1alpha1.ClusterServiceVersion)
255257
return true, nil
256258
}
257259

258-
// updateDeploymentSpecsWithApiServiceData transforms an install strategy to include information about apiservices
259-
// it is used in generating hashes for deployment specs to know when something in the spec has changed,
260-
// but duplicates a lot of installAPIServiceRequirements and should be refactored.
261-
func (a *Operator) getCaBundle(csv *v1alpha1.ClusterServiceVersion) ([]byte, error) {
260+
// getCABundle returns the CA associated with a deployment
261+
func (a *Operator) getCABundle(csv *v1alpha1.ClusterServiceVersion) ([]byte, error) {
262262
for _, desc := range csv.GetOwnedAPIServiceDescriptions() {
263263
apiServiceName := desc.GetName()
264264
apiService, err := a.lister.APIRegistrationV1().APIServiceLister().Get(apiServiceName)
@@ -271,22 +271,27 @@ func (a *Operator) getCaBundle(csv *v1alpha1.ClusterServiceVersion) ([]byte, err
271271
}
272272

273273
for _, desc := range csv.Spec.WebhookDefinitions {
274-
webhookName := desc.Name
275-
if desc.Type == "ValidatingAdmissionWebhook" {
276-
webhook, err := a.opClient.KubernetesInterface().AdmissionregistrationV1().ValidatingWebhookConfigurations().Get(context.TODO(), webhookName, metav1.GetOptions{})
274+
webhookLabels := ownerutil.OwnerLabel(csv, v1alpha1.ClusterServiceVersionKind)
275+
webhookLabels[install.WebhookDescKey] = desc.GenerateName
276+
webhookSelector := labels.SelectorFromSet(webhookLabels).String()
277+
if desc.Type == v1alpha1.MutatingAdmissionWebhook {
278+
existingWebhooks, err := a.opClient.KubernetesInterface().AdmissionregistrationV1().MutatingWebhookConfigurations().List(context.TODO(), metav1.ListOptions{LabelSelector: webhookSelector})
277279
if err != nil {
278-
return nil, fmt.Errorf("could not retrieve generated APIService: %v", err)
280+
return nil, fmt.Errorf("could not retrieve generated MutatingWebhookConfiguration: %v", err)
279281
}
280-
if len(webhook.Webhooks[0].ClientConfig.CABundle) > 0 {
281-
return webhook.Webhooks[0].ClientConfig.CABundle, nil
282+
283+
if len(existingWebhooks.Items) > 0 {
284+
return existingWebhooks.Items[0].Webhooks[0].ClientConfig.CABundle, nil
282285
}
283-
} else {
284-
webhook, err := a.opClient.KubernetesInterface().AdmissionregistrationV1().MutatingWebhookConfigurations().Get(context.TODO(), webhookName, metav1.GetOptions{})
286+
287+
} else if desc.Type == v1alpha1.ValidatingAdmissionWebhook {
288+
existingWebhooks, err := a.opClient.KubernetesInterface().AdmissionregistrationV1().ValidatingWebhookConfigurations().List(context.TODO(), metav1.ListOptions{LabelSelector: webhookSelector})
285289
if err != nil {
286-
return nil, fmt.Errorf("could not retrieve generated APIService: %v", err)
290+
return nil, fmt.Errorf("could not retrieve generated ValidatingWebhookConfiguration: %v", err)
287291
}
288-
if len(webhook.Webhooks[0].ClientConfig.CABundle) > 0 {
289-
return webhook.Webhooks[0].ClientConfig.CABundle, nil
292+
293+
if len(existingWebhooks.Items) > 0 {
294+
return existingWebhooks.Items[0].Webhooks[0].ClientConfig.CABundle, nil
290295
}
291296
}
292297
}
@@ -313,7 +318,7 @@ func (a *Operator) updateDeploymentSpecsWithApiServiceData(csv *v1alpha1.Cluster
313318
depSpecs[sddSpec.Name] = sddSpec.Spec
314319
}
315320

316-
caBundle, err := a.getCaBundle(csv)
321+
caBundle, err := a.getCABundle(csv)
317322
if err != nil {
318323
return nil, fmt.Errorf("could not retrieve caBundle: %v", err)
319324
}
@@ -400,7 +405,7 @@ func (a *Operator) updateDeploymentSpecsWithApiServiceData(csv *v1alpha1.Cluster
400405

401406
depSpec, ok := depSpecs[desc.DeploymentName]
402407
if !ok {
403-
return nil, fmt.Errorf("StrategyDetailsDeployment missing deployment %s for owned APIServices %s", desc.DeploymentName, desc.Name)
408+
return nil, fmt.Errorf("StrategyDetailsDeployment missing deployment %s for WebhookDescription %s", desc.DeploymentName, desc.GenerateName)
404409
}
405410

406411
if depSpec.Template.Spec.ServiceAccountName == "" {

0 commit comments

Comments
 (0)