🌱 use SDK basecontroller for better logging. (#1269)

* Use basecontroller in sdk-go instead for better logging

Signed-off-by: Jian Qiu <jqiu@redhat.com>

* Rename to fakeSyncContext

Signed-off-by: Jian Qiu <jqiu@redhat.com>

---------

Signed-off-by: Jian Qiu <jqiu@redhat.com>
This commit is contained in:
Jian Qiu
2025-12-01 11:07:02 +08:00
committed by GitHub
parent 26edb9423a
commit 33310619d9
199 changed files with 794 additions and 3268 deletions

View File

@@ -13,8 +13,8 @@ import (
clusterclient "open-cluster-management.io/api/client/cluster/clientset/versioned"
clusterscheme "open-cluster-management.io/api/client/cluster/clientset/versioned/scheme"
clusterinformers "open-cluster-management.io/api/client/cluster/informers/externalversions"
"open-cluster-management.io/sdk-go/pkg/basecontroller/events"
"open-cluster-management.io/ocm/pkg/common/recorder"
"open-cluster-management.io/ocm/pkg/placement/controllers/metrics"
"open-cluster-management.io/ocm/pkg/placement/controllers/scheduling"
"open-cluster-management.io/ocm/pkg/placement/debugger"
@@ -44,7 +44,7 @@ func RunControllerManagerWithInformers(
clusterClient clusterclient.Interface,
clusterInformers clusterinformers.SharedInformerFactory,
) error {
recorder, err := recorder.NewEventRecorder(ctx, clusterscheme.Scheme, kubeClient.EventsV1(), "placement-controller")
recorder, err := events.NewEventRecorder(ctx, clusterscheme.Scheme, kubeClient.EventsV1(), "placement-controller")
if err != nil {
return err
}
@@ -80,7 +80,7 @@ func RunControllerManagerWithInformers(
clusterInformers.Cluster().V1beta1().PlacementDecisions(),
clusterInformers.Cluster().V1alpha1().AddOnPlacementScores(),
scheduler,
controllerContext.EventRecorder, recorder, metrics,
recorder, metrics,
)
go clusterInformers.Start(ctx.Done())

View File

@@ -111,7 +111,7 @@ func TestOnClusterChange(t *testing.T) {
clusterInformerFactory.Cluster().V1beta2().ManagedClusterSetBindings(),
)
queuedKeys := sets.NewString()
fakeEnqueuePlacement := func(obj interface{}, queue workqueue.RateLimitingInterface) {
fakeEnqueuePlacement := func(obj interface{}, queue workqueue.TypedRateLimitingInterface[string]) {
key, _ := cache.DeletionHandlingMetaNamespaceKeyFunc(obj)
queuedKeys.Insert(key)
}
@@ -275,7 +275,7 @@ func TestOnClusterUpdate(t *testing.T) {
clusterInformerFactory.Cluster().V1beta2().ManagedClusterSetBindings(),
)
queuedKeys := sets.NewString()
fakeEnqueuePlacement := func(obj interface{}, queue workqueue.RateLimitingInterface) {
fakeEnqueuePlacement := func(obj interface{}, queue workqueue.TypedRateLimitingInterface[string]) {
key, _ := cache.DeletionHandlingMetaNamespaceKeyFunc(obj)
queuedKeys.Insert(key)
}
@@ -379,7 +379,7 @@ func TestOnClusterDelete(t *testing.T) {
clusterInformerFactory.Cluster().V1beta2().ManagedClusterSetBindings(),
)
queuedKeys := sets.NewString()
fakeEnqueuePlacement := func(obj interface{}, queue workqueue.RateLimitingInterface) {
fakeEnqueuePlacement := func(obj interface{}, queue workqueue.TypedRateLimitingInterface[string]) {
key, _ := cache.DeletionHandlingMetaNamespaceKeyFunc(obj)
queuedKeys.Insert(key)
}

View File

@@ -32,8 +32,8 @@ const (
type enqueuer struct {
logger klog.Logger
queue workqueue.RateLimitingInterface
enqueuePlacementFunc func(obj interface{}, queue workqueue.RateLimitingInterface)
queue workqueue.TypedRateLimitingInterface[string]
enqueuePlacementFunc func(obj interface{}, queue workqueue.TypedRateLimitingInterface[string])
clusterLister clusterlisterv1.ManagedClusterLister
clusterSetLister clusterlisterv1beta2.ManagedClusterSetLister
@@ -43,7 +43,7 @@ type enqueuer struct {
func newEnqueuer(
ctx context.Context,
queue workqueue.RateLimitingInterface,
queue workqueue.TypedRateLimitingInterface[string],
clusterInformer clusterinformerv1.ManagedClusterInformer,
clusterSetInformer clusterinformerv1beta2.ManagedClusterSetInformer,
placementInformer clusterinformerv1beta1.PlacementInformer,
@@ -74,7 +74,7 @@ func newEnqueuer(
}
}
func enqueuePlacement(obj interface{}, queue workqueue.RateLimitingInterface) {
func enqueuePlacement(obj interface{}, queue workqueue.TypedRateLimitingInterface[string]) {
key, err := cache.DeletionHandlingMetaNamespaceKeyFunc(obj)
if err != nil {
runtime.HandleError(err)

View File

@@ -199,7 +199,7 @@ func TestEnqueuePlacementsByClusterSet(t *testing.T) {
clusterInformerFactory.Cluster().V1beta2().ManagedClusterSetBindings(),
)
queuedKeys := sets.NewString()
fakeEnqueuePlacement := func(obj interface{}, queue workqueue.RateLimitingInterface) {
fakeEnqueuePlacement := func(obj interface{}, queue workqueue.TypedRateLimitingInterface[string]) {
key, _ := cache.DeletionHandlingMetaNamespaceKeyFunc(obj)
queuedKeys.Insert(key)
}
@@ -308,7 +308,7 @@ func TestEnqueuePlacementsByClusterSetBinding(t *testing.T) {
clusterInformerFactory.Cluster().V1beta2().ManagedClusterSetBindings(),
)
queuedKeys := sets.NewString()
fakeEnqueuePlacement := func(obj interface{}, queue workqueue.RateLimitingInterface) {
fakeEnqueuePlacement := func(obj interface{}, queue workqueue.TypedRateLimitingInterface[string]) {
key, _ := cache.DeletionHandlingMetaNamespaceKeyFunc(obj)
queuedKeys.Insert(key)
}
@@ -398,7 +398,7 @@ func TestEnqueuePlacementsByScore(t *testing.T) {
clusterInformerFactory.Cluster().V1beta2().ManagedClusterSetBindings(),
)
queuedKeys := sets.NewString()
fakeEnqueuePlacement := func(obj interface{}, queue workqueue.RateLimitingInterface) {
fakeEnqueuePlacement := func(obj interface{}, queue workqueue.TypedRateLimitingInterface[string]) {
key, _ := cache.DeletionHandlingMetaNamespaceKeyFunc(obj)
queuedKeys.Insert(key)
}

View File

@@ -9,8 +9,6 @@ import (
"strconv"
"strings"
"github.com/openshift/library-go/pkg/controller/factory"
"github.com/openshift/library-go/pkg/operator/events"
errorhelpers "github.com/openshift/library-go/pkg/operator/v1helpers"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
@@ -38,6 +36,7 @@ import (
clusterapiv1beta1 "open-cluster-management.io/api/cluster/v1beta1"
clusterapiv1beta2 "open-cluster-management.io/api/cluster/v1beta2"
clustersdkv1beta2 "open-cluster-management.io/sdk-go/pkg/apis/cluster/v1beta2"
"open-cluster-management.io/sdk-go/pkg/basecontroller/factory"
"open-cluster-management.io/sdk-go/pkg/patcher"
"open-cluster-management.io/ocm/pkg/common/queue"
@@ -84,10 +83,10 @@ func NewSchedulingController(
placementDecisionInformer clusterinformerv1beta1.PlacementDecisionInformer,
placementScoreInformer clusterinformerv1alpha1.AddOnPlacementScoreInformer,
scheduler Scheduler,
recorder events.Recorder, krecorder kevents.EventRecorder,
krecorder kevents.EventRecorder,
metricsRecorder *metrics.ScheduleMetrics,
) factory.Controller {
syncCtx := factory.NewSyncContext(schedulingControllerName, recorder)
syncCtx := factory.NewSyncContext(schedulingControllerName)
enQueuer := newEnqueuer(ctx, syncCtx.Queue(), clusterInformer, clusterSetInformer, placementInformer, clusterSetBindingInformer)
@@ -168,22 +167,22 @@ func NewSchedulingController(
WithInformersQueueKeysFunc(
queue.QueueKeyByMetaNamespaceName,
placementInformer.Informer()).
WithFilteredEventsInformersQueueKeyFunc(func(obj runtime.Object) string {
WithFilteredEventsInformersQueueKeysFunc(func(obj runtime.Object) []string {
accessor, _ := meta.Accessor(obj)
placementName := accessor.GetLabels()[clusterapiv1beta1.PlacementLabel]
return fmt.Sprintf("%s/%s", accessor.GetNamespace(), placementName)
return []string{fmt.Sprintf("%s/%s", accessor.GetNamespace(), placementName)}
},
queue.FileterByLabel(clusterapiv1beta1.PlacementLabel),
placementDecisionInformer.Informer()).
WithBareInformers(clusterInformer.Informer(), clusterSetInformer.Informer(), clusterSetBindingInformer.Informer(), placementScoreInformer.Informer()).
WithSync(c.sync).
ToController(schedulingControllerName, recorder)
ToController(schedulingControllerName)
}
func (c *schedulingController) sync(ctx context.Context, syncCtx factory.SyncContext) error {
logger := klog.FromContext(ctx)
queueKey := syncCtx.QueueKey()
logger.V(4).Info("Reconciling placement", "queueKey", queueKey)
func (c *schedulingController) sync(ctx context.Context, syncCtx factory.SyncContext, queueKey string) error {
logger := klog.FromContext(ctx).WithValues("queueKey", queueKey)
logger.V(4).Info("Reconciling placement")
ctx = klog.NewContext(ctx, logger)
placement, err := c.getPlacement(queueKey)
if errors.IsNotFound(err) {

View File

@@ -570,8 +570,9 @@ func TestSchedulingController_sync(t *testing.T) {
metricsRecorder: metrics.NewScheduleMetrics(clock.RealClock{}),
}
sysCtx := testingcommon.NewFakeSyncContext(t, c.placement.Namespace+"/"+c.placement.Name)
syncErr := ctrl.sync(context.TODO(), sysCtx)
key := c.placement.Namespace + "/" + c.placement.Name
sysCtx := testingcommon.NewFakeSyncContext(t, key)
syncErr := ctrl.sync(context.TODO(), sysCtx, key)
if syncErr != nil {
t.Errorf("unexpected err: %v", syncErr)
}