optimize: used a unified context in cluster_controller reconcile
Signed-off-by: xovoxy <xilovele@gmail.com>
This commit is contained in:
parent
145a67e873
commit
f30e450a36
|
@ -222,7 +222,7 @@ func (c *Controller) SetupWithManager(mgr controllerruntime.Manager) error {
|
||||||
|
|
||||||
func (c *Controller) syncCluster(ctx context.Context, cluster *clusterv1alpha1.Cluster) (controllerruntime.Result, error) {
|
func (c *Controller) syncCluster(ctx context.Context, cluster *clusterv1alpha1.Cluster) (controllerruntime.Result, error) {
|
||||||
// create execution space
|
// create execution space
|
||||||
err := c.createExecutionSpace(cluster)
|
err := c.createExecutionSpace(ctx, cluster)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.EventRecorder.Event(cluster, corev1.EventTypeWarning, events.EventReasonCreateExecutionSpaceFailed, err.Error())
|
c.EventRecorder.Event(cluster, corev1.EventTypeWarning, events.EventReasonCreateExecutionSpaceFailed, err.Error())
|
||||||
return controllerruntime.Result{}, err
|
return controllerruntime.Result{}, err
|
||||||
|
@ -235,7 +235,7 @@ func (c *Controller) syncCluster(ctx context.Context, cluster *clusterv1alpha1.C
|
||||||
}
|
}
|
||||||
|
|
||||||
// ensure finalizer
|
// ensure finalizer
|
||||||
return c.ensureFinalizer(cluster)
|
return c.ensureFinalizer(ctx, cluster)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Controller) removeCluster(ctx context.Context, cluster *clusterv1alpha1.Cluster) (controllerruntime.Result, error) {
|
func (c *Controller) removeCluster(ctx context.Context, cluster *clusterv1alpha1.Cluster) (controllerruntime.Result, error) {
|
||||||
|
@ -245,7 +245,7 @@ func (c *Controller) removeCluster(ctx context.Context, cluster *clusterv1alpha1
|
||||||
return controllerruntime.Result{}, err
|
return controllerruntime.Result{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := c.removeExecutionSpace(cluster); err != nil {
|
if err := c.removeExecutionSpace(ctx, cluster); err != nil {
|
||||||
klog.Errorf("Failed to remove execution space %s: %v", cluster.Name, err)
|
klog.Errorf("Failed to remove execution space %s: %v", cluster.Name, err)
|
||||||
c.EventRecorder.Event(cluster, corev1.EventTypeWarning, events.EventReasonRemoveExecutionSpaceFailed, err.Error())
|
c.EventRecorder.Event(cluster, corev1.EventTypeWarning, events.EventReasonRemoveExecutionSpaceFailed, err.Error())
|
||||||
return controllerruntime.Result{}, err
|
return controllerruntime.Result{}, err
|
||||||
|
@ -253,7 +253,7 @@ func (c *Controller) removeCluster(ctx context.Context, cluster *clusterv1alpha1
|
||||||
msg := fmt.Sprintf("Removed execution space for cluster(%s).", cluster.Name)
|
msg := fmt.Sprintf("Removed execution space for cluster(%s).", cluster.Name)
|
||||||
c.EventRecorder.Event(cluster, corev1.EventTypeNormal, events.EventReasonRemoveExecutionSpaceSucceed, msg)
|
c.EventRecorder.Event(cluster, corev1.EventTypeNormal, events.EventReasonRemoveExecutionSpaceSucceed, msg)
|
||||||
|
|
||||||
if exist, err := c.ExecutionSpaceExistForCluster(cluster.Name); err != nil {
|
if exist, err := c.ExecutionSpaceExistForCluster(ctx, cluster.Name); err != nil {
|
||||||
klog.Errorf("Failed to check weather the execution space exist in the given member cluster or not, error is: %v", err)
|
klog.Errorf("Failed to check weather the execution space exist in the given member cluster or not, error is: %v", err)
|
||||||
return controllerruntime.Result{}, err
|
return controllerruntime.Result{}, err
|
||||||
} else if exist {
|
} else if exist {
|
||||||
|
@ -275,7 +275,7 @@ func (c *Controller) removeCluster(ctx context.Context, cluster *clusterv1alpha1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.removeFinalizer(cluster)
|
return c.removeFinalizer(ctx, cluster)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Controller) isTargetClusterRemoved(ctx context.Context, cluster *clusterv1alpha1.Cluster) (bool, error) {
|
func (c *Controller) isTargetClusterRemoved(ctx context.Context, cluster *clusterv1alpha1.Cluster) (bool, error) {
|
||||||
|
@ -305,7 +305,7 @@ func (c *Controller) isTargetClusterRemoved(ctx context.Context, cluster *cluste
|
||||||
}
|
}
|
||||||
|
|
||||||
// removeExecutionSpace deletes the given execution space
|
// removeExecutionSpace deletes the given execution space
|
||||||
func (c *Controller) removeExecutionSpace(cluster *clusterv1alpha1.Cluster) error {
|
func (c *Controller) removeExecutionSpace(ctx context.Context, cluster *clusterv1alpha1.Cluster) error {
|
||||||
executionSpaceName := names.GenerateExecutionSpaceName(cluster.Name)
|
executionSpaceName := names.GenerateExecutionSpaceName(cluster.Name)
|
||||||
|
|
||||||
executionSpaceObj := &corev1.Namespace{
|
executionSpaceObj := &corev1.Namespace{
|
||||||
|
@ -315,12 +315,12 @@ func (c *Controller) removeExecutionSpace(cluster *clusterv1alpha1.Cluster) erro
|
||||||
}
|
}
|
||||||
// delete finalizers of work objects when the sync-mode is pull and cluster status is notready or unknown
|
// delete finalizers of work objects when the sync-mode is pull and cluster status is notready or unknown
|
||||||
if cluster.Spec.SyncMode == clusterv1alpha1.Pull && !util.IsClusterReady(&cluster.Status) {
|
if cluster.Spec.SyncMode == clusterv1alpha1.Pull && !util.IsClusterReady(&cluster.Status) {
|
||||||
if err := c.deleteFinalizerForWorks(executionSpaceObj); err != nil {
|
if err := c.deleteFinalizerForWorks(ctx, executionSpaceObj); err != nil {
|
||||||
klog.Errorf("Error while deleting finalizers of work which in %s: %s", executionSpaceName, err)
|
klog.Errorf("Error while deleting finalizers of work which in %s: %s", executionSpaceName, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err := c.Client.Delete(context.TODO(), executionSpaceObj); err != nil && !apierrors.IsNotFound(err) {
|
if err := c.Client.Delete(ctx, executionSpaceObj); err != nil && !apierrors.IsNotFound(err) {
|
||||||
klog.Errorf("Error while deleting namespace %s: %s", executionSpaceName, err)
|
klog.Errorf("Error while deleting namespace %s: %s", executionSpaceName, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -329,11 +329,11 @@ func (c *Controller) removeExecutionSpace(cluster *clusterv1alpha1.Cluster) erro
|
||||||
}
|
}
|
||||||
|
|
||||||
// ExecutionSpaceExistForCluster determine whether the execution space exists in the cluster
|
// ExecutionSpaceExistForCluster determine whether the execution space exists in the cluster
|
||||||
func (c *Controller) ExecutionSpaceExistForCluster(clusterName string) (bool, error) {
|
func (c *Controller) ExecutionSpaceExistForCluster(ctx context.Context, clusterName string) (bool, error) {
|
||||||
executionSpaceName := names.GenerateExecutionSpaceName(clusterName)
|
executionSpaceName := names.GenerateExecutionSpaceName(clusterName)
|
||||||
|
|
||||||
executionSpaceObj := &corev1.Namespace{}
|
executionSpaceObj := &corev1.Namespace{}
|
||||||
err := c.Client.Get(context.TODO(), types.NamespacedName{Name: executionSpaceName}, executionSpaceObj)
|
err := c.Client.Get(ctx, types.NamespacedName{Name: executionSpaceName}, executionSpaceObj)
|
||||||
if apierrors.IsNotFound(err) {
|
if apierrors.IsNotFound(err) {
|
||||||
klog.V(2).Infof("Execution space(%s) no longer exists", executionSpaceName)
|
klog.V(2).Infof("Execution space(%s) no longer exists", executionSpaceName)
|
||||||
return false, nil
|
return false, nil
|
||||||
|
@ -346,9 +346,9 @@ func (c *Controller) ExecutionSpaceExistForCluster(clusterName string) (bool, er
|
||||||
}
|
}
|
||||||
|
|
||||||
// Delete finalizers of work objects
|
// Delete finalizers of work objects
|
||||||
func (c *Controller) deleteFinalizerForWorks(workSpace *corev1.Namespace) error {
|
func (c *Controller) deleteFinalizerForWorks(ctx context.Context, workSpace *corev1.Namespace) error {
|
||||||
workList := &workv1alpha1.WorkList{}
|
workList := &workv1alpha1.WorkList{}
|
||||||
err := c.Client.List(context.TODO(), workList, &client.ListOptions{
|
err := c.Client.List(ctx, workList, &client.ListOptions{
|
||||||
Namespace: workSpace.Name,
|
Namespace: workSpace.Name,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -378,13 +378,13 @@ func (c *Controller) removeWorkFinalizer(work *workv1alpha1.Work) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Controller) removeFinalizer(cluster *clusterv1alpha1.Cluster) (controllerruntime.Result, error) {
|
func (c *Controller) removeFinalizer(ctx context.Context, cluster *clusterv1alpha1.Cluster) (controllerruntime.Result, error) {
|
||||||
if !controllerutil.ContainsFinalizer(cluster, util.ClusterControllerFinalizer) {
|
if !controllerutil.ContainsFinalizer(cluster, util.ClusterControllerFinalizer) {
|
||||||
return controllerruntime.Result{}, nil
|
return controllerruntime.Result{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
controllerutil.RemoveFinalizer(cluster, util.ClusterControllerFinalizer)
|
controllerutil.RemoveFinalizer(cluster, util.ClusterControllerFinalizer)
|
||||||
err := c.Client.Update(context.TODO(), cluster)
|
err := c.Client.Update(ctx, cluster)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return controllerruntime.Result{}, err
|
return controllerruntime.Result{}, err
|
||||||
}
|
}
|
||||||
|
@ -392,13 +392,13 @@ func (c *Controller) removeFinalizer(cluster *clusterv1alpha1.Cluster) (controll
|
||||||
return controllerruntime.Result{}, nil
|
return controllerruntime.Result{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Controller) ensureFinalizer(cluster *clusterv1alpha1.Cluster) (controllerruntime.Result, error) {
|
func (c *Controller) ensureFinalizer(ctx context.Context, cluster *clusterv1alpha1.Cluster) (controllerruntime.Result, error) {
|
||||||
if controllerutil.ContainsFinalizer(cluster, util.ClusterControllerFinalizer) {
|
if controllerutil.ContainsFinalizer(cluster, util.ClusterControllerFinalizer) {
|
||||||
return controllerruntime.Result{}, nil
|
return controllerruntime.Result{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
controllerutil.AddFinalizer(cluster, util.ClusterControllerFinalizer)
|
controllerutil.AddFinalizer(cluster, util.ClusterControllerFinalizer)
|
||||||
err := c.Client.Update(context.TODO(), cluster)
|
err := c.Client.Update(ctx, cluster)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return controllerruntime.Result{}, err
|
return controllerruntime.Result{}, err
|
||||||
}
|
}
|
||||||
|
@ -407,12 +407,12 @@ func (c *Controller) ensureFinalizer(cluster *clusterv1alpha1.Cluster) (controll
|
||||||
}
|
}
|
||||||
|
|
||||||
// createExecutionSpace creates member cluster execution space when member cluster joined
|
// createExecutionSpace creates member cluster execution space when member cluster joined
|
||||||
func (c *Controller) createExecutionSpace(cluster *clusterv1alpha1.Cluster) error {
|
func (c *Controller) createExecutionSpace(ctx context.Context, cluster *clusterv1alpha1.Cluster) error {
|
||||||
executionSpaceName := names.GenerateExecutionSpaceName(cluster.Name)
|
executionSpaceName := names.GenerateExecutionSpaceName(cluster.Name)
|
||||||
|
|
||||||
// create member cluster execution space when member cluster joined
|
// create member cluster execution space when member cluster joined
|
||||||
executionSpaceObj := &corev1.Namespace{}
|
executionSpaceObj := &corev1.Namespace{}
|
||||||
err := c.Client.Get(context.TODO(), types.NamespacedName{Name: executionSpaceName}, executionSpaceObj)
|
err := c.Client.Get(ctx, types.NamespacedName{Name: executionSpaceName}, executionSpaceObj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if !apierrors.IsNotFound(err) {
|
if !apierrors.IsNotFound(err) {
|
||||||
klog.Errorf("Failed to get namespace(%s): %v", executionSpaceName, err)
|
klog.Errorf("Failed to get namespace(%s): %v", executionSpaceName, err)
|
||||||
|
@ -428,7 +428,7 @@ func (c *Controller) createExecutionSpace(cluster *clusterv1alpha1.Cluster) erro
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
err = c.Client.Create(context.TODO(), executionSpace)
|
err = c.Client.Create(ctx, executionSpace)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Errorf("Failed to create execution space for cluster(%s): %v", cluster.Name, err)
|
klog.Errorf("Failed to create execution space for cluster(%s): %v", cluster.Name, err)
|
||||||
return err
|
return err
|
||||||
|
|
Loading…
Reference in New Issue