mirror of
https://github.com/open-cluster-management-io/ocm.git
synced 2026-05-24 01:54:12 +00:00
🌱 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:
@@ -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())
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user