Skip to content

Commit

Permalink
temp commit
Browse files Browse the repository at this point in the history
  • Loading branch information
gao12312 committed Dec 11, 2024
1 parent 1a2ede0 commit a032fb4
Showing 1 changed file with 10 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"fmt"
"reflect"

"github.com/google/go-cmp/cmp"
corev1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/klog/v2"
Expand All @@ -27,6 +26,7 @@ const (
PodSyncControllerName = "pod-sync-controller"
)

// feature:
type RootPodSyncReconciler struct {
RootClient client.Client
LeafModelHandler leafUtils.LeafModelHandler
Expand All @@ -49,18 +49,18 @@ func (c *RootPodSyncReconciler) SetupWithManager(mgr manager.Manager) error {
WithOptions(controller.Options{}).
For(&corev1.Pod{}, builder.WithPredicates(predicate.Funcs{
CreateFunc: func(createEvent event.CreateEvent) bool {
return skipFunc(createEvent.Object)
return false
},
UpdateFunc: func(updateEvent event.UpdateEvent) bool {
pod1 := updateEvent.ObjectOld.(*corev1.Pod)
pod2 := updateEvent.ObjectNew.(*corev1.Pod)
if !skipFunc(updateEvent.ObjectNew) {
return false
}
return !cmp.Equal(pod1.Status, pod2.Status)
return !reflect.DeepEqual(pod1.Status, pod2.Status)
},
DeleteFunc: func(deleteEvent event.DeleteEvent) bool {
return skipFunc(deleteEvent.Object)
return false
},
GenericFunc: func(genericEvent event.GenericEvent) bool {
return false
Expand Down Expand Up @@ -96,7 +96,7 @@ func (c *RootPodSyncReconciler) Reconcile(ctx context.Context, request reconcile
return reconcile.Result{}, nil
}

//是否需要协程处理
//get actual cluster rather than range
clusters := c.GlobalLeafManager.ListClusters()
for _, cluster := range clusters {
lr, err := c.GlobalLeafManager.GetLeafResource(cluster)
Expand All @@ -108,23 +108,24 @@ func (c *RootPodSyncReconciler) Reconcile(ctx context.Context, request reconcile
lcr, err := c.leafClientResource(lr)
if err != nil {
klog.Errorf("Failed to get leaf client resource %v", lr.Cluster.Name)
return reconcile.Result{RequeueAfter: utils.DefaultRequeueTime}, nil

//return reconcile.Result{RequeueAfter: utils.DefaultRequeueTime}, nil
}

leafPod := &corev1.Pod{}
err = lcr.Client.Get(ctx, request.NamespacedName, leafPod)
if err != nil {
klog.Errorf("Failed to get leaf pod %v", leafPod.Name)
return reconcile.Result{RequeueAfter: utils.DefaultRequeueTime}, nil
//return reconcile.Result{RequeueAfter: utils.DefaultRequeueTime}, nil
}
// 对比rootPod.Status 和 leafPod.Status,明确判断哪些状态需要同步?如果状态变化不涉及重要字段,可能没有必要同步。
if podutils.IsKosmosPod(leafPod) && !reflect.DeepEqual(rootpod.Status, leafPod.Status) {
rPodCopy := rootpod.DeepCopy()
rPodCopy.Status = leafPod.Status
podutils.FitObjectMeta(&rPodCopy.ObjectMeta)
if err := c.RootClient.Status().Update(ctx, rPodCopy); err != nil && !apierrors.IsNotFound(err) {
klog.Errorf("error while updating rootpod status in kubernetes, %s", err)
return reconcile.Result{RequeueAfter: utils.DefaultRequeueTime}, nil
//sync once
//return reconcile.Result{RequeueAfter: utils.DefaultRequeueTime}, nil
}
klog.Infof("update rootpod %s status success", leafPod.Name)
}
Expand Down

0 comments on commit a032fb4

Please sign in to comment.