Skip to content

Commit daa47be

Browse files
authored
Merge pull request kubernetes-sigs#9437 from nojnhuh/clusterctl-ctx
🌱 propagate ctx to retryWithExponentialBackoff in clusterctl
2 parents ef2f673 + 3aa37b2 commit daa47be

File tree

10 files changed

+39
-39
lines changed

10 files changed

+39
-39
lines changed

cmd/clusterctl/client/cluster/cert_manager.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ func (cm *certManagerClient) install(ctx context.Context) error {
187187
o := objs[i]
188188
// Create the Kubernetes object.
189189
// Nb. The operation is wrapped in a retry loop to make ensureCerts more resilient to unexpected conditions.
190-
if err := retryWithExponentialBackoff(createCertManagerBackoff, func() error {
190+
if err := retryWithExponentialBackoff(ctx, createCertManagerBackoff, func(ctx context.Context) error {
191191
return cm.createObj(ctx, o)
192192
}); err != nil {
193193
return err
@@ -306,7 +306,7 @@ func (cm *certManagerClient) deleteObjs(ctx context.Context, objs []unstructured
306306
continue
307307
}
308308

309-
if err := retryWithExponentialBackoff(deleteCertManagerBackoff, func() error {
309+
if err := retryWithExponentialBackoff(ctx, deleteCertManagerBackoff, func(ctx context.Context) error {
310310
if err := cm.deleteObj(ctx, obj); err != nil {
311311
// tolerate NotFound errors when deleting the test resources
312312
if apierrors.IsNotFound(err) {
@@ -560,7 +560,7 @@ func (cm *certManagerClient) waitForAPIReady(ctx context.Context, retry bool) er
560560
deleteCertManagerBackoff := newWriteBackoff()
561561
for i := range testObjs {
562562
obj := testObjs[i]
563-
if err := retryWithExponentialBackoff(deleteCertManagerBackoff, func() error {
563+
if err := retryWithExponentialBackoff(ctx, deleteCertManagerBackoff, func(ctx context.Context) error {
564564
if err := cm.deleteObj(ctx, obj); err != nil {
565565
// tolerate NotFound errors when deleting the test resources
566566
if apierrors.IsNotFound(err) {

cmd/clusterctl/client/cluster/client.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -219,13 +219,13 @@ func newClusterClient(kubeconfig Kubeconfig, configClient config.Client, options
219219
}
220220

221221
// retryWithExponentialBackoff repeats an operation until it passes or the exponential backoff times out.
222-
func retryWithExponentialBackoff(opts wait.Backoff, operation func() error) error {
222+
func retryWithExponentialBackoff(ctx context.Context, opts wait.Backoff, operation func(ctx context.Context) error) error {
223223
log := logf.Log
224224

225225
i := 0
226-
err := wait.ExponentialBackoff(opts, func() (bool, error) {
226+
err := wait.ExponentialBackoffWithContext(ctx, opts, func(ctx context.Context) (bool, error) {
227227
i++
228-
if err := operation(); err != nil {
228+
if err := operation(ctx); err != nil {
229229
if i < opts.Steps {
230230
log.V(5).Info("Retrying with backoff", "Cause", err.Error())
231231
return false, nil

cmd/clusterctl/client/cluster/components.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func (p *providerComponents) Create(ctx context.Context, objs []unstructured.Uns
8080

8181
// Create the Kubernetes object.
8282
// Nb. The operation is wrapped in a retry loop to make Create more resilient to unexpected conditions.
83-
if err := retryWithExponentialBackoff(createComponentObjectBackoff, func() error {
83+
if err := retryWithExponentialBackoff(ctx, createComponentObjectBackoff, func(ctx context.Context) error {
8484
return p.createObj(ctx, obj)
8585
}); err != nil {
8686
return err
@@ -217,7 +217,7 @@ func (p *providerComponents) Delete(ctx context.Context, options DeleteOptions)
217217
// Otherwise delete the object
218218
log.V(5).Info("Deleting", logf.UnstructuredToValues(obj)...)
219219
deleteBackoff := newWriteBackoff()
220-
if err := retryWithExponentialBackoff(deleteBackoff, func() error {
220+
if err := retryWithExponentialBackoff(ctx, deleteBackoff, func(ctx context.Context) error {
221221
if err := cs.Delete(ctx, &obj); err != nil {
222222
if apierrors.IsNotFound(err) {
223223
// Tolerate IsNotFound error that might happen because we are not enforcing a deletion order

cmd/clusterctl/client/cluster/crd_migration.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func (m *crdMigrator) run(ctx context.Context, newCRD *apiextensionsv1.CustomRes
8888

8989
// Get the current CRD.
9090
currentCRD := &apiextensionsv1.CustomResourceDefinition{}
91-
if err := retryWithExponentialBackoff(newReadBackoff(), func() error {
91+
if err := retryWithExponentialBackoff(ctx, newReadBackoff(), func(ctx context.Context) error {
9292
return m.Client.Get(ctx, client.ObjectKeyFromObject(newCRD), currentCRD)
9393
}); err != nil {
9494
// Return if the CRD doesn't exist yet. We only have to migrate if the CRD exists already.
@@ -152,7 +152,7 @@ func (m *crdMigrator) migrateResourcesForCRD(ctx context.Context, crd *apiextens
152152

153153
var i int
154154
for {
155-
if err := retryWithExponentialBackoff(newReadBackoff(), func() error {
155+
if err := retryWithExponentialBackoff(ctx, newReadBackoff(), func(ctx context.Context) error {
156156
return m.Client.List(ctx, list, client.Continue(list.GetContinue()))
157157
}); err != nil {
158158
return errors.Wrapf(err, "failed to list %q", list.GetKind())
@@ -162,7 +162,7 @@ func (m *crdMigrator) migrateResourcesForCRD(ctx context.Context, crd *apiextens
162162
obj := list.Items[i]
163163

164164
log.V(5).Info("Migrating", logf.UnstructuredToValues(obj)...)
165-
if err := retryWithExponentialBackoff(newWriteBackoff(), func() error {
165+
if err := retryWithExponentialBackoff(ctx, newWriteBackoff(), func(ctx context.Context) error {
166166
return handleMigrateErr(m.Client.Update(ctx, &obj))
167167
}); err != nil {
168168
return errors.Wrapf(err, "failed to migrate %s/%s", obj.GetNamespace(), obj.GetName())
@@ -187,7 +187,7 @@ func (m *crdMigrator) migrateResourcesForCRD(ctx context.Context, crd *apiextens
187187

188188
func (m *crdMigrator) patchCRDStoredVersions(ctx context.Context, crd *apiextensionsv1.CustomResourceDefinition, currentStorageVersion string) error {
189189
crd.Status.StoredVersions = []string{currentStorageVersion}
190-
if err := retryWithExponentialBackoff(newWriteBackoff(), func() error {
190+
if err := retryWithExponentialBackoff(ctx, newWriteBackoff(), func(ctx context.Context) error {
191191
return m.Client.Status().Update(ctx, crd)
192192
}); err != nil {
193193
return errors.Wrapf(err, "failed to update status.storedVersions for CRD %q", crd.Name)

cmd/clusterctl/client/cluster/inventory.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ func (p *inventoryClient) EnsureCustomResourceDefinitions(ctx context.Context) e
162162
// Nb. The operation is wrapped in a retry loop to make EnsureCustomResourceDefinitions more resilient to unexpected conditions.
163163
var crdIsIstalled bool
164164
listInventoryBackoff := newReadBackoff()
165-
if err := retryWithExponentialBackoff(listInventoryBackoff, func() error {
165+
if err := retryWithExponentialBackoff(ctx, listInventoryBackoff, func(ctx context.Context) error {
166166
var err error
167167
crdIsIstalled, err = checkInventoryCRDs(ctx, p.proxy)
168168
return err
@@ -189,7 +189,7 @@ func (p *inventoryClient) EnsureCustomResourceDefinitions(ctx context.Context) e
189189

190190
// Create the Kubernetes object.
191191
// Nb. The operation is wrapped in a retry loop to make EnsureCustomResourceDefinitions more resilient to unexpected conditions.
192-
if err := retryWithExponentialBackoff(createInventoryObjectBackoff, func() error {
192+
if err := retryWithExponentialBackoff(ctx, createInventoryObjectBackoff, func(ctx context.Context) error {
193193
return p.createObj(ctx, o)
194194
}); err != nil {
195195
return err
@@ -272,7 +272,7 @@ func (p *inventoryClient) createObj(ctx context.Context, o unstructured.Unstruct
272272
func (p *inventoryClient) Create(ctx context.Context, m clusterctlv1.Provider) error {
273273
// Create the Kubernetes object.
274274
createInventoryObjectBackoff := newWriteBackoff()
275-
return retryWithExponentialBackoff(createInventoryObjectBackoff, func() error {
275+
return retryWithExponentialBackoff(ctx, createInventoryObjectBackoff, func(ctx context.Context) error {
276276
cl, err := p.proxy.NewClient()
277277
if err != nil {
278278
return err
@@ -310,7 +310,7 @@ func (p *inventoryClient) List(ctx context.Context) (*clusterctlv1.ProviderList,
310310
providerList := &clusterctlv1.ProviderList{}
311311

312312
listProvidersBackoff := newReadBackoff()
313-
if err := retryWithExponentialBackoff(listProvidersBackoff, func() error {
313+
if err := retryWithExponentialBackoff(ctx, listProvidersBackoff, func(ctx context.Context) error {
314314
return listProviders(ctx, p.proxy, providerList)
315315
}); err != nil {
316316
return nil, err

cmd/clusterctl/client/cluster/mover.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ func (o *objectMover) checkProvisioningCompleted(ctx context.Context, graph *obj
234234
for i := range clusters {
235235
cluster := clusters[i]
236236
clusterObj := &clusterv1.Cluster{}
237-
if err := retryWithExponentialBackoff(readClusterBackoff, func() error {
237+
if err := retryWithExponentialBackoff(ctx, readClusterBackoff, func(ctx context.Context) error {
238238
return getClusterObj(ctx, o.fromProxy, cluster, clusterObj)
239239
}); err != nil {
240240
return err
@@ -264,7 +264,7 @@ func (o *objectMover) checkProvisioningCompleted(ctx context.Context, graph *obj
264264
for i := range machines {
265265
machine := machines[i]
266266
machineObj := &clusterv1.Machine{}
267-
if err := retryWithExponentialBackoff(readMachinesBackoff, func() error {
267+
if err := retryWithExponentialBackoff(ctx, readMachinesBackoff, func(ctx context.Context) error {
268268
return getMachineObj(ctx, o.fromProxy, machine, machineObj)
269269
}); err != nil {
270270
return err
@@ -574,7 +574,7 @@ func setClusterPause(ctx context.Context, proxy Proxy, clusters []*node, value b
574574
log.V(5).Info("Set Cluster.Spec.Paused", "paused", value, "Cluster", klog.KRef(cluster.identity.Namespace, cluster.identity.Name))
575575

576576
// Nb. The operation is wrapped in a retry loop to make setClusterPause more resilient to unexpected conditions.
577-
if err := retryWithExponentialBackoff(setClusterPauseBackoff, func() error {
577+
if err := retryWithExponentialBackoff(ctx, setClusterPauseBackoff, func(ctx context.Context) error {
578578
return patchCluster(ctx, proxy, cluster, patch, mutators...)
579579
}); err != nil {
580580
return errors.Wrapf(err, "error setting Cluster.Spec.Paused=%t", value)
@@ -601,7 +601,7 @@ func setClusterClassPause(ctx context.Context, proxy Proxy, clusterclasses []*no
601601
}
602602

603603
// Nb. The operation is wrapped in a retry loop to make setClusterClassPause more resilient to unexpected conditions.
604-
if err := retryWithExponentialBackoff(setClusterClassPauseBackoff, func() error {
604+
if err := retryWithExponentialBackoff(ctx, setClusterClassPauseBackoff, func(ctx context.Context) error {
605605
return pauseClusterClass(ctx, proxy, clusterclass, pause, mutators...)
606606
}); err != nil {
607607
return errors.Wrapf(err, "error updating ClusterClass %s/%s", clusterclass.identity.Namespace, clusterclass.identity.Name)
@@ -648,7 +648,7 @@ func waitReadyForMove(ctx context.Context, proxy Proxy, nodes []*node, dryRun bo
648648
key := client.ObjectKeyFromObject(obj)
649649

650650
blockLogged := false
651-
if err := retryWithExponentialBackoff(backoff, func() error {
651+
if err := retryWithExponentialBackoff(ctx, backoff, func(ctx context.Context) error {
652652
if err := c.Get(ctx, key, obj); err != nil {
653653
return errors.Wrapf(err, "error getting %s/%s", obj.GroupVersionKind(), key)
654654
}
@@ -788,7 +788,7 @@ func (o *objectMover) ensureNamespaces(ctx context.Context, graph *objectGraph,
788788
}
789789
namespaces.Insert(namespace)
790790

791-
if err := retryWithExponentialBackoff(ensureNamespaceBackoff, func() error {
791+
if err := retryWithExponentialBackoff(ctx, ensureNamespaceBackoff, func(ctx context.Context) error {
792792
return o.ensureNamespace(ctx, toProxy, namespace)
793793
}); err != nil {
794794
return err
@@ -872,7 +872,7 @@ func (o *objectMover) createGroup(ctx context.Context, group moveGroup, toProxy
872872
for _, nodeToCreate := range group {
873873
// Creates the Kubernetes object corresponding to the nodeToCreate.
874874
// Nb. The operation is wrapped in a retry loop to make move more resilient to unexpected conditions.
875-
err := retryWithExponentialBackoff(createTargetObjectBackoff, func() error {
875+
err := retryWithExponentialBackoff(ctx, createTargetObjectBackoff, func(ctx context.Context) error {
876876
return o.createTargetObject(ctx, nodeToCreate, toProxy, mutators, existingNamespaces)
877877
})
878878
if err != nil {
@@ -894,7 +894,7 @@ func (o *objectMover) backupGroup(ctx context.Context, group moveGroup, director
894894
for _, nodeToBackup := range group {
895895
// Backs-up the Kubernetes object corresponding to the nodeToBackup.
896896
// Nb. The operation is wrapped in a retry loop to make move more resilient to unexpected conditions.
897-
err := retryWithExponentialBackoff(backupTargetObjectBackoff, func() error {
897+
err := retryWithExponentialBackoff(ctx, backupTargetObjectBackoff, func(ctx context.Context) error {
898898
return o.backupTargetObject(ctx, nodeToBackup, directory)
899899
})
900900
if err != nil {
@@ -916,7 +916,7 @@ func (o *objectMover) restoreGroup(ctx context.Context, group moveGroup, toProxy
916916
for _, nodeToRestore := range group {
917917
// Creates the Kubernetes object corresponding to the nodeToRestore.
918918
// Nb. The operation is wrapped in a retry loop to make move more resilient to unexpected conditions.
919-
err := retryWithExponentialBackoff(restoreTargetObjectBackoff, func() error {
919+
err := retryWithExponentialBackoff(ctx, restoreTargetObjectBackoff, func(ctx context.Context) error {
920920
return o.restoreTargetObject(ctx, nodeToRestore, toProxy)
921921
})
922922
if err != nil {
@@ -1174,7 +1174,7 @@ func (o *objectMover) deleteGroup(ctx context.Context, group moveGroup) error {
11741174

11751175
// Delete the Kubernetes object corresponding to the current node.
11761176
// Nb. The operation is wrapped in a retry loop to make move more resilient to unexpected conditions.
1177-
err := retryWithExponentialBackoff(deleteSourceObjectBackoff, func() error {
1177+
err := retryWithExponentialBackoff(ctx, deleteSourceObjectBackoff, func(ctx context.Context) error {
11781178
return o.deleteSourceObject(ctx, nodeToDelete)
11791179
})
11801180

cmd/clusterctl/client/cluster/objectgraph.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ func (o *objectGraph) objMetaToNode(obj *unstructured.Unstructured, n *node) {
333333
func (o *objectGraph) getDiscoveryTypes(ctx context.Context) error {
334334
crdList := &apiextensionsv1.CustomResourceDefinitionList{}
335335
getDiscoveryTypesBackoff := newReadBackoff()
336-
if err := retryWithExponentialBackoff(getDiscoveryTypesBackoff, func() error {
336+
if err := retryWithExponentialBackoff(ctx, getDiscoveryTypesBackoff, func(ctx context.Context) error {
337337
return getCRDList(ctx, o.proxy, crdList)
338338
}); err != nil {
339339
return err
@@ -432,7 +432,7 @@ func (o *objectGraph) Discovery(ctx context.Context, namespace string) error {
432432
typeMeta := discoveryType.typeMeta
433433
objList := new(unstructured.UnstructuredList)
434434

435-
if err := retryWithExponentialBackoff(discoveryBackoff, func() error {
435+
if err := retryWithExponentialBackoff(ctx, discoveryBackoff, func(ctx context.Context) error {
436436
return getObjList(ctx, o.proxy, typeMeta, selectors, objList)
437437
}); err != nil {
438438
return err
@@ -448,7 +448,7 @@ func (o *objectGraph) Discovery(ctx context.Context, namespace string) error {
448448
if p.Type == string(clusterctlv1.InfrastructureProviderType) {
449449
providerNamespaceSelector := []client.ListOption{client.InNamespace(p.Namespace)}
450450
providerNamespaceSecretList := new(unstructured.UnstructuredList)
451-
if err := retryWithExponentialBackoff(discoveryBackoff, func() error {
451+
if err := retryWithExponentialBackoff(ctx, discoveryBackoff, func(ctx context.Context) error {
452452
return getObjList(ctx, o.proxy, typeMeta, providerNamespaceSelector, providerNamespaceSecretList)
453453
}); err != nil {
454454
return err

cmd/clusterctl/client/cluster/ownergraph.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func discoverOwnerGraph(ctx context.Context, namespace string, o *objectGraph) (
7676
typeMeta := discoveryType.typeMeta
7777
objList := new(unstructured.UnstructuredList)
7878

79-
if err := retryWithExponentialBackoff(discoveryBackoff, func() error {
79+
if err := retryWithExponentialBackoff(ctx, discoveryBackoff, func(ctx context.Context) error {
8080
return getObjList(ctx, o.proxy, typeMeta, selectors, objList)
8181
}); err != nil {
8282
return nil, err
@@ -92,7 +92,7 @@ func discoverOwnerGraph(ctx context.Context, namespace string, o *objectGraph) (
9292
if p.Type == string(clusterctlv1.InfrastructureProviderType) {
9393
providerNamespaceSelector := []client.ListOption{client.InNamespace(p.Namespace)}
9494
providerNamespaceSecretList := new(unstructured.UnstructuredList)
95-
if err := retryWithExponentialBackoff(discoveryBackoff, func() error {
95+
if err := retryWithExponentialBackoff(ctx, discoveryBackoff, func(ctx context.Context) error {
9696
return getObjList(ctx, o.proxy, typeMeta, providerNamespaceSelector, providerNamespaceSecretList)
9797
}); err != nil {
9898
return nil, err

cmd/clusterctl/client/cluster/proxy.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ func (k *proxy) NewClient() (client.Client, error) {
165165
var c client.Client
166166
// Nb. The operation is wrapped in a retry loop to make newClientSet more resilient to temporary connection problems.
167167
connectBackoff := newConnectBackoff()
168-
if err := retryWithExponentialBackoff(connectBackoff, func() error {
168+
if err := retryWithExponentialBackoff(context.TODO(), connectBackoff, func(_ context.Context) error {
169169
var err error
170170
c, err = client.New(config, client.Options{Scheme: localScheme})
171171
if err != nil {
@@ -191,7 +191,7 @@ func (k *proxy) CheckClusterAvailable() error {
191191
}
192192

193193
connectBackoff := newShortConnectBackoff()
194-
return retryWithExponentialBackoff(connectBackoff, func() error {
194+
return retryWithExponentialBackoff(context.TODO(), connectBackoff, func(_ context.Context) error {
195195
_, err := client.New(config, client.Options{Scheme: localScheme})
196196
return err
197197
})
@@ -224,7 +224,7 @@ func (k *proxy) ListResources(ctx context.Context, labels map[string]string, nam
224224
// Get all the API resources in the cluster.
225225
resourceListBackoff := newReadBackoff()
226226
var resourceList []*metav1.APIResourceList
227-
if err := retryWithExponentialBackoff(resourceListBackoff, func() error {
227+
if err := retryWithExponentialBackoff(ctx, resourceListBackoff, func(ctx context.Context) error {
228228
resourceList, err = cs.Discovery().ServerPreferredResources()
229229
return err
230230
}); err != nil {
@@ -236,7 +236,7 @@ func (k *proxy) ListResources(ctx context.Context, labels map[string]string, nam
236236
crdsToExclude := sets.Set[string]{}
237237

238238
crdList := &apiextensionsv1.CustomResourceDefinitionList{}
239-
if err := retryWithExponentialBackoff(newReadBackoff(), func() error {
239+
if err := retryWithExponentialBackoff(ctx, newReadBackoff(), func(ctx context.Context) error {
240240
return c.List(ctx, crdList)
241241
}); err != nil {
242242
return nil, errors.Wrap(err, "failed to list CRDs")
@@ -348,7 +348,7 @@ func listObjByGVK(ctx context.Context, c client.Client, groupVersion, kind strin
348348
objList.SetKind(kind)
349349

350350
resourceListBackoff := newReadBackoff()
351-
if err := retryWithExponentialBackoff(resourceListBackoff, func() error {
351+
if err := retryWithExponentialBackoff(ctx, resourceListBackoff, func(ctx context.Context) error {
352352
return c.List(ctx, objList, options...)
353353
}); err != nil {
354354
return nil, errors.Wrapf(err, "failed to list objects for the %q GroupVersionKind", objList.GroupVersionKind())
@@ -402,7 +402,7 @@ func (k *proxy) newClientSet() (*kubernetes.Clientset, error) {
402402
var cs *kubernetes.Clientset
403403
// Nb. The operation is wrapped in a retry loop to make newClientSet more resilient to temporary connection problems.
404404
connectBackoff := newConnectBackoff()
405-
if err := retryWithExponentialBackoff(connectBackoff, func() error {
405+
if err := retryWithExponentialBackoff(context.TODO(), connectBackoff, func(_ context.Context) error {
406406
var err error
407407
cs, err = kubernetes.NewForConfig(config)
408408
if err != nil {

cmd/clusterctl/client/cluster/upgrader.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ func (u *providerUpgrader) scaleDownProvider(ctx context.Context, provider clust
484484

485485
// scaleDownDeployment scales down a Deployment to 0 and waits until all replicas have been deleted.
486486
func scaleDownDeployment(ctx context.Context, c client.Client, deploy appsv1.Deployment) error {
487-
if err := retryWithExponentialBackoff(newWriteBackoff(), func() error {
487+
if err := retryWithExponentialBackoff(ctx, newWriteBackoff(), func(ctx context.Context) error {
488488
deployment := &appsv1.Deployment{}
489489
if err := c.Get(ctx, client.ObjectKeyFromObject(&deploy), deployment); err != nil {
490490
return errors.Wrapf(err, "failed to get Deployment/%s", deploy.GetName())
@@ -511,7 +511,7 @@ func scaleDownDeployment(ctx context.Context, c client.Client, deploy appsv1.Dep
511511
Steps: 60,
512512
Jitter: 0.4,
513513
}
514-
if err := retryWithExponentialBackoff(deploymentScaleToZeroBackOff, func() error {
514+
if err := retryWithExponentialBackoff(ctx, deploymentScaleToZeroBackOff, func(ctx context.Context) error {
515515
deployment := &appsv1.Deployment{}
516516
if err := c.Get(ctx, client.ObjectKeyFromObject(&deploy), deployment); err != nil {
517517
return errors.Wrapf(err, "failed to get Deployment/%s", deploy.GetName())

0 commit comments

Comments
 (0)