From 0b71f6140de87c9ca129c09929845dfac752115b Mon Sep 17 00:00:00 2001 From: Guilhem Lettron Date: Sun, 4 Feb 2018 20:43:05 +0100 Subject: [PATCH] Do not report error when a cluster is ignored --- pkg/controller/controller.go | 18 +++++++++--------- pkg/controller/controller_test.go | 10 +++++----- pkg/controller/informer.go | 4 ++-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index 17b7b2d7d..ec4cb27d3 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -62,32 +62,32 @@ func New(cfg Config) *Controller { } } -func (c *Controller) handleClusterEvent(event *Event) error { +func (c *Controller) handleClusterEvent(event *Event) (bool, error) { clus := event.Object if !c.managed(clus) { - return fmt.Errorf("cluster (%s) isn't managed", clus.Name) + return true, nil } if clus.Status.IsFailed() { clustersFailed.Inc() if event.Type == kwatch.Deleted { delete(c.clusters, clus.Name) - return nil + return false, nil } - return fmt.Errorf("ignore failed cluster (%s). Please delete its CR", clus.Name) + return false, fmt.Errorf("ignore failed cluster (%s). Please delete its CR", clus.Name) } clus.SetDefaults() if err := clus.Spec.Validate(); err != nil { - return fmt.Errorf("invalid cluster spec. please fix the following problem with the cluster spec: %v", err) + return false, fmt.Errorf("invalid cluster spec. please fix the following problem with the cluster spec: %v", err) } switch event.Type { case kwatch.Added: if _, ok := c.clusters[clus.Name]; ok { - return fmt.Errorf("unsafe state. cluster (%s) was created before but we received event (%s)", clus.Name, event.Type) + return false, fmt.Errorf("unsafe state. cluster (%s) was created before but we received event (%s)", clus.Name, event.Type) } nc := cluster.New(c.makeClusterConfig(), clus) @@ -99,21 +99,21 @@ func (c *Controller) handleClusterEvent(event *Event) error { case kwatch.Modified: if _, ok := c.clusters[clus.Name]; !ok { - return fmt.Errorf("unsafe state. cluster (%s) was never created but we received event (%s)", clus.Name, event.Type) + return false, fmt.Errorf("unsafe state. cluster (%s) was never created but we received event (%s)", clus.Name, event.Type) } c.clusters[clus.Name].Update(clus) clustersModified.Inc() case kwatch.Deleted: if _, ok := c.clusters[clus.Name]; !ok { - return fmt.Errorf("unsafe state. cluster (%s) was never created but we received event (%s)", clus.Name, event.Type) + return false, fmt.Errorf("unsafe state. cluster (%s) was never created but we received event (%s)", clus.Name, event.Type) } c.clusters[clus.Name].Delete() delete(c.clusters, clus.Name) clustersDeleted.Inc() clustersTotal.Dec() } - return nil + return false, nil } func (c *Controller) makeClusterConfig() cluster.Config { diff --git a/pkg/controller/controller_test.go b/pkg/controller/controller_test.go index dacaabbe4..024ceed2a 100644 --- a/pkg/controller/controller_test.go +++ b/pkg/controller/controller_test.go @@ -39,7 +39,7 @@ func TestHandleClusterEventUpdateFailedCluster(t *testing.T) { Type: watch.Modified, Object: clus, } - err := c.handleClusterEvent(e) + _, err := c.handleClusterEvent(e) prefix := "ignore failed cluster" if !strings.HasPrefix(err.Error(), prefix) { t.Errorf("expect err='%s...', get=%v", prefix, err) @@ -64,7 +64,7 @@ func TestHandleClusterEventDeleteFailedCluster(t *testing.T) { c.clusters[name] = &cluster.Cluster{} - if err := c.handleClusterEvent(e); err != nil { + if _, err := c.handleClusterEvent(e); err != nil { t.Fatal(err) } @@ -88,7 +88,7 @@ func TestHandleClusterEventClusterwide(t *testing.T) { Type: watch.Modified, Object: clus, } - err := c.handleClusterEvent(e) + _, err := c.handleClusterEvent(e) suffix := "isn't managed" if strings.HasSuffix(err.Error(), suffix) { t.Errorf("expect err='%s...', get=%v", suffix, err) @@ -107,7 +107,7 @@ func TestHandleClusterEventClusterwideIgnored(t *testing.T) { Type: watch.Modified, Object: clus, } - err := c.handleClusterEvent(e) + _, err := c.handleClusterEvent(e) suffix := "isn't managed" if !strings.HasSuffix(err.Error(), suffix) { t.Errorf("expect err='%s...', get=%v", suffix, err) @@ -129,7 +129,7 @@ func TestHandleClusterEventNamespacedIgnored(t *testing.T) { Type: watch.Modified, Object: clus, } - err := c.handleClusterEvent(e) + _, err := c.handleClusterEvent(e) suffix := "isn't managed" if !strings.HasSuffix(err.Error(), suffix) { t.Errorf("expect err='%s...', get=%v", suffix, err) diff --git a/pkg/controller/informer.go b/pkg/controller/informer.go index a31a3fc8d..0d14b78f0 100644 --- a/pkg/controller/informer.go +++ b/pkg/controller/informer.go @@ -114,7 +114,7 @@ func (c *Controller) onDeleteEtcdClus(obj interface{}) { } pt.start() - err := c.handleClusterEvent(ev) + _, err := c.handleClusterEvent(ev) if err != nil { c.logger.Warningf("fail to handle event: %v", err) } @@ -134,7 +134,7 @@ func (c *Controller) syncEtcdClus(clus *api.EtcdCluster) { } pt.start() - err := c.handleClusterEvent(ev) + _, err := c.handleClusterEvent(ev) if err != nil { c.logger.Warningf("fail to handle event: %v", err) }