Skip to content

Commit f087ca0

Browse files
committed
Registry ensure methods error out if resource is not found
Problem: When calling a registry's ensure methods, if the resource is deleted between the get and delete calls the ensure method fails due to a 404 error. Solution: When deleting an object, ignore 404 errors. Signed-off-by: Alexander Greene <[email protected]>
1 parent a5f086a commit f087ca0

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

pkg/controller/registry/reconciler/configmap.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/sirupsen/logrus"
1010
v1 "k8s.io/api/core/v1"
1111
rbacv1 "k8s.io/api/rbac/v1"
12+
k8serrors "k8s.io/apimachinery/pkg/api/errors"
1213
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1314
"k8s.io/apimachinery/pkg/labels"
1415
"k8s.io/apimachinery/pkg/util/intstr"
@@ -310,7 +311,7 @@ func (c *ConfigMapRegistryReconciler) ensureServiceAccount(source configMapCatal
310311
if !overwrite {
311312
return nil
312313
}
313-
if err := c.OpClient.DeleteServiceAccount(serviceAccount.GetNamespace(), serviceAccount.GetName(), metav1.NewDeleteOptions(0)); err != nil {
314+
if err := c.OpClient.DeleteServiceAccount(serviceAccount.GetNamespace(), serviceAccount.GetName(), metav1.NewDeleteOptions(0)); err != nil && !k8serrors.IsNotFound(err) {
314315
return err
315316
}
316317
}
@@ -324,7 +325,7 @@ func (c *ConfigMapRegistryReconciler) ensureRole(source configMapCatalogSourceDe
324325
if !overwrite {
325326
return nil
326327
}
327-
if err := c.OpClient.DeleteRole(role.GetNamespace(), role.GetName(), metav1.NewDeleteOptions(0)); err != nil {
328+
if err := c.OpClient.DeleteRole(role.GetNamespace(), role.GetName(), metav1.NewDeleteOptions(0)); err != nil && !k8serrors.IsNotFound(err) {
328329
return err
329330
}
330331
}
@@ -338,7 +339,7 @@ func (c *ConfigMapRegistryReconciler) ensureRoleBinding(source configMapCatalogS
338339
if !overwrite {
339340
return nil
340341
}
341-
if err := c.OpClient.DeleteRoleBinding(roleBinding.GetNamespace(), roleBinding.GetName(), metav1.NewDeleteOptions(0)); err != nil {
342+
if err := c.OpClient.DeleteRoleBinding(roleBinding.GetNamespace(), roleBinding.GetName(), metav1.NewDeleteOptions(0)); err != nil && !k8serrors.IsNotFound(err) {
342343
return err
343344
}
344345
}
@@ -354,7 +355,7 @@ func (c *ConfigMapRegistryReconciler) ensurePod(source configMapCatalogSourceDec
354355
return nil
355356
}
356357
for _, p := range currentPods {
357-
if err := c.OpClient.KubernetesInterface().CoreV1().Pods(pod.GetNamespace()).Delete(context.TODO(), p.GetName(), *metav1.NewDeleteOptions(0)); err != nil {
358+
if err := c.OpClient.KubernetesInterface().CoreV1().Pods(pod.GetNamespace()).Delete(context.TODO(), p.GetName(), *metav1.NewDeleteOptions(0)); err != nil && !k8serrors.IsNotFound(err) {
358359
return errors.Wrapf(err, "error deleting old pod: %s", p.GetName())
359360
}
360361
}
@@ -373,7 +374,7 @@ func (c *ConfigMapRegistryReconciler) ensureService(source configMapCatalogSourc
373374
if !overwrite && ServiceHashMatch(svc, service) {
374375
return nil
375376
}
376-
if err := c.OpClient.DeleteService(service.GetNamespace(), service.GetName(), metav1.NewDeleteOptions(0)); err != nil {
377+
if err := c.OpClient.DeleteService(service.GetNamespace(), service.GetName(), metav1.NewDeleteOptions(0)); err != nil && !k8serrors.IsNotFound(err) {
377378
return err
378379
}
379380
}

pkg/controller/registry/reconciler/grpc.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ func (c *GrpcRegistryReconciler) ensurePod(source grpcCatalogSourceDecorator, sa
226226
return nil
227227
}
228228
for _, p := range currentLivePods {
229-
if err := c.OpClient.KubernetesInterface().CoreV1().Pods(source.GetNamespace()).Delete(context.TODO(), p.GetName(), *metav1.NewDeleteOptions(0)); err != nil {
229+
if err := c.OpClient.KubernetesInterface().CoreV1().Pods(source.GetNamespace()).Delete(context.TODO(), p.GetName(), *metav1.NewDeleteOptions(0)); err != nil && !k8serror.IsNotFound(err) {
230230
return errors.Wrapf(err, "error deleting old pod: %s", p.GetName())
231231
}
232232
}
@@ -307,7 +307,8 @@ func (c *GrpcRegistryReconciler) ensureService(source grpcCatalogSourceDecorator
307307
if !overwrite && ServiceHashMatch(svc, service) {
308308
return nil
309309
}
310-
if err := c.OpClient.DeleteService(service.GetNamespace(), service.GetName(), metav1.NewDeleteOptions(0)); err != nil {
310+
// TODO(tflannag): Do we care about force deleting services?
311+
if err := c.OpClient.DeleteService(service.GetNamespace(), service.GetName(), metav1.NewDeleteOptions(0)); err != nil && !k8serror.IsNotFound(err) {
311312
return err
312313
}
313314
}
@@ -402,8 +403,7 @@ func imageID(pod *corev1.Pod) string {
402403

403404
func (c *GrpcRegistryReconciler) removePods(pods []*corev1.Pod, namespace string) error {
404405
for _, p := range pods {
405-
err := c.OpClient.KubernetesInterface().CoreV1().Pods(namespace).Delete(context.TODO(), p.GetName(), *metav1.NewDeleteOptions(0))
406-
if err != nil {
406+
if err := c.OpClient.KubernetesInterface().CoreV1().Pods(namespace).Delete(context.TODO(), p.GetName(), *metav1.NewDeleteOptions(0)); err != nil && !k8serror.IsNotFound(err) {
407407
return errors.Wrapf(err, "error deleting pod: %s", p.GetName())
408408
}
409409
}

0 commit comments

Comments
 (0)