ceph: check for gone node on crash collector
If a node is gone, we try to remove crash collector deployments so they don't stay stale or pending. We must ensure the node is gone and not just return an error even if we successfully deployment the orphan deployment. Signed-off-by: Sébastien Han <seb@redhat.com>
This commit is contained in:
1 parent
52a60716f7
commit
acc5ba1a6b
1 file changed
+17
-14
@@ -78,23 +78,26 @@ func (r *ReconcileNode) reconcile(request reconcile.Request) (reconcile.Result,
|
||||
node := &corev1.Node{ObjectMeta: metav1.ObjectMeta{Name: request.Name}}
|
||||
err := r.client.Get(context.TODO(), request.NamespacedName, node)
|
||||
if err != nil {
|
||||
//if a node is not present, check if there are any crashcollector deployment for that node and delete it.
|
||||
deploymentList := &appsv1.DeploymentList{}
|
||||
namespaceListOpts := client.InNamespace(request.Namespace)
|
||||
err := r.client.List(context.TODO(), deploymentList, client.MatchingLabels{k8sutil.AppAttr: AppName, NodeNameLabel: request.Name}, namespaceListOpts)
|
||||
if err != nil {
|
||||
logger.Errorf("failed to list crash collector deployments, delete it/them manually. %v", err)
|
||||
}
|
||||
for _, d := range deploymentList.Items {
|
||||
logger.Infof("deleting deployment %q for deleted node %q", d.ObjectMeta.Name, request.Name)
|
||||
err := r.deleteCrashCollector(d)
|
||||
if kerrors.IsNotFound(err) {
|
||||
// if a node is not present, check if there are any crashcollector deployment for that node and delete it.
|
||||
deploymentList := &appsv1.DeploymentList{}
|
||||
namespaceListOpts := client.InNamespace(request.Namespace)
|
||||
err := r.client.List(context.TODO(), deploymentList, client.MatchingLabels{k8sutil.AppAttr: AppName, NodeNameLabel: request.Name}, namespaceListOpts)
|
||||
if err != nil {
|
||||
logger.Errorf("failed to delete crash collector deployment %q, delete it manually. %v", d.Name, err)
|
||||
continue
|
||||
logger.Errorf("failed to list crash collector deployments, delete it/them manually. %v", err)
|
||||
}
|
||||
logger.Infof("crash collector deployment %q successfully removed", d.Name)
|
||||
for _, d := range deploymentList.Items {
|
||||
logger.Infof("deleting deployment %q for deleted node %q", d.ObjectMeta.Name, request.Name)
|
||||
err := r.deleteCrashCollector(d)
|
||||
if err != nil {
|
||||
logger.Errorf("failed to delete crash collector deployment %q, delete it manually. %v", d.Name, err)
|
||||
continue
|
||||
}
|
||||
logger.Infof("crash collector deployment %q successfully removed from dead node %q", d.Name, request.Name)
|
||||
}
|
||||
} else {
|
||||
return reconcile.Result{}, errors.Wrapf(err, "could not get node %q", request.Name)
|
||||
}
|
||||
return reconcile.Result{}, errors.Errorf("could not get node %q", request.NamespacedName)
|
||||
}
|
||||
|
||||
// Get the list of all the Ceph pods
|
||||
|
||||
Reference in new issue
Block a user