From 48e86d6bf7e510c7f343db10fa4f20a8477ef02c Mon Sep 17 00:00:00 2001 From: Noah Watkins Date: Tue, 16 Apr 2019 10:28:12 -0700 Subject: [PATCH] ceph: skip orch on non-ready clusters the k8s Node add/update events can fire before a cluster is fully configured, which may leave some state undefined. skip orchestration when the cluster is in this state. fixes: #3001 Signed-off-by: Noah Watkins --- pkg/operator/ceph/cluster/controller.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/operator/ceph/cluster/controller.go b/pkg/operator/ceph/cluster/controller.go index 4400fdb7d..3f58ae45e 100644 --- a/pkg/operator/ceph/cluster/controller.go +++ b/pkg/operator/ceph/cluster/controller.go @@ -174,6 +174,10 @@ func (c *ClusterController) onK8sNodeAdd(obj interface{}) { logger.Debugf("Skipping -> Do not use all Nodes") continue } + if cluster.Info == nil { + logger.Info("Cluster %s is not ready. Skipping orchestration.", cluster.Namespace) + continue + } if valid, _ := k8sutil.ValidNode(*newNode, cluster.Spec.Placement.All()); valid == true { logger.Debugf("Adding %s to cluster %s", newNode.Labels[apis.LabelHostname], cluster.Namespace) @@ -354,6 +358,10 @@ func (c *ClusterController) onK8sNodeUpdate(oldObj, newObj interface{}) { } for _, cluster := range c.clusterMap { + if cluster.Info == nil { + logger.Info("Cluster %s is not ready. Skipping orchestration.", cluster.Namespace) + continue + } if valid, _ := k8sutil.ValidNode(*newNode, cephv1.GetOSDPlacement(cluster.Spec.Placement)); valid == true { logger.Debugf("Adding %s to cluster %s", newNode.Labels[apis.LabelHostname], cluster.Namespace) err := cluster.createInstance(c.rookImage, cluster.Info.CephVersion)