Skip to content

Commit 1748526

Browse files
authored
fix: fix missing updaterun metrics and refactor (#292)
1 parent 0bdd1a2 commit 1748526

File tree

26 files changed

+223
-190
lines changed

26 files changed

+223
-190
lines changed

cmd/hubagent/main.go

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import (
3535
"sigs.k8s.io/controller-runtime/pkg/healthz"
3636
"sigs.k8s.io/controller-runtime/pkg/log/zap"
3737
"sigs.k8s.io/controller-runtime/pkg/manager"
38-
"sigs.k8s.io/controller-runtime/pkg/metrics"
3938
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
4039
ctrlwebhook "sigs.k8s.io/controller-runtime/pkg/webhook"
4140
workv1alpha1 "sigs.k8s.io/work-api/pkg/apis/v1alpha1"
@@ -50,7 +49,6 @@ import (
5049
"github.com/kubefleet-dev/kubefleet/cmd/hubagent/workload"
5150
mcv1alpha1 "github.com/kubefleet-dev/kubefleet/pkg/controllers/membercluster/v1alpha1"
5251
mcv1beta1 "github.com/kubefleet-dev/kubefleet/pkg/controllers/membercluster/v1beta1"
53-
fleetmetrics "github.com/kubefleet-dev/kubefleet/pkg/metrics"
5452
"github.com/kubefleet-dev/kubefleet/pkg/webhook"
5553
// +kubebuilder:scaffold:imports
5654
)
@@ -84,17 +82,6 @@ func init() {
8482
utilruntime.Must(clusterinventory.AddToScheme(scheme))
8583
// +kubebuilder:scaffold:scheme
8684
klog.InitFlags(nil)
87-
88-
metrics.Registry.MustRegister(
89-
fleetmetrics.JoinResultMetrics,
90-
fleetmetrics.LeaveResultMetrics,
91-
fleetmetrics.PlacementApplyFailedCount,
92-
fleetmetrics.PlacementApplySucceedCount,
93-
fleetmetrics.SchedulingCycleDurationMilliseconds,
94-
fleetmetrics.SchedulerActiveWorkers,
95-
fleetmetrics.FleetPlacementStatusLastTimeStampSeconds,
96-
fleetmetrics.FleetEvictionStatus,
97-
)
9885
}
9986

10087
func main() {

cmd/memberagent/main.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ import (
4545
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
4646
"sigs.k8s.io/controller-runtime/pkg/healthz"
4747
"sigs.k8s.io/controller-runtime/pkg/log/zap"
48-
"sigs.k8s.io/controller-runtime/pkg/metrics"
4948
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
5049
"sigs.k8s.io/controller-runtime/pkg/webhook"
5150
workv1alpha1 "sigs.k8s.io/work-api/pkg/apis/v1alpha1"
@@ -57,7 +56,6 @@ import (
5756
imcv1beta1 "github.com/kubefleet-dev/kubefleet/pkg/controllers/internalmembercluster/v1beta1"
5857
"github.com/kubefleet-dev/kubefleet/pkg/controllers/workapplier"
5958
workv1alpha1controller "github.com/kubefleet-dev/kubefleet/pkg/controllers/workv1alpha1"
60-
fleetmetrics "github.com/kubefleet-dev/kubefleet/pkg/metrics"
6159
"github.com/kubefleet-dev/kubefleet/pkg/propertyprovider"
6260
"github.com/kubefleet-dev/kubefleet/pkg/propertyprovider/azure"
6361
"github.com/kubefleet-dev/kubefleet/pkg/utils"
@@ -121,13 +119,6 @@ func init() {
121119
utilruntime.Must(clusterv1beta1.AddToScheme(scheme))
122120
utilruntime.Must(placementv1beta1.AddToScheme(scheme))
123121
//+kubebuilder:scaffold:scheme
124-
125-
metrics.Registry.MustRegister(
126-
fleetmetrics.JoinResultMetrics,
127-
fleetmetrics.LeaveResultMetrics,
128-
fleetmetrics.FleetWorkProcessingRequestsTotal,
129-
fleetmetrics.FleetManifestProcessingRequestsTotal,
130-
)
131122
}
132123

133124
func main() {

pkg/controllers/clusterresourceplacementeviction/controller.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import (
3535
"sigs.k8s.io/controller-runtime/pkg/predicate"
3636

3737
placementv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
38-
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
38+
hubmetrics "github.com/kubefleet-dev/kubefleet/pkg/metrics/hub"
3939
bindingutils "github.com/kubefleet-dev/kubefleet/pkg/utils/binding"
4040
"github.com/kubefleet-dev/kubefleet/pkg/utils/condition"
4141
"github.com/kubefleet-dev/kubefleet/pkg/utils/controller"
@@ -58,7 +58,7 @@ func (r *Reconciler) Reconcile(ctx context.Context, req runtime.Request) (runtim
5858
var internalError bool
5959
defer func() {
6060
if internalError {
61-
metrics.FleetEvictionStatus.WithLabelValues(evictionName, "false", "unknown").SetToCurrentTime()
61+
hubmetrics.FleetEvictionStatus.WithLabelValues(evictionName, "false", "unknown").SetToCurrentTime()
6262
}
6363
latency := time.Since(startTime).Milliseconds()
6464
klog.V(2).InfoS("ClusterResourcePlacementEviction reconciliation ends", "clusterResourcePlacementEviction", evictionName, "latency", latency)
@@ -346,12 +346,12 @@ func markEvictionNotExecuted(eviction *placementv1beta1.ClusterResourcePlacement
346346
}
347347

348348
func emitEvictionCompleteMetric(eviction *placementv1beta1.ClusterResourcePlacementEviction) {
349-
metrics.FleetEvictionStatus.DeletePartialMatch(prometheus.Labels{"name": eviction.GetName(), "isCompleted": "false"})
349+
hubmetrics.FleetEvictionStatus.DeletePartialMatch(prometheus.Labels{"name": eviction.GetName(), "isCompleted": "false"})
350350
// check to see if eviction is valid.
351351
if condition.IsConditionStatusTrue(eviction.GetCondition(string(placementv1beta1.PlacementEvictionConditionTypeValid)), eviction.GetGeneration()) {
352-
metrics.FleetEvictionStatus.WithLabelValues(eviction.Name, "true", "true").SetToCurrentTime()
352+
hubmetrics.FleetEvictionStatus.WithLabelValues(eviction.Name, "true", "true").SetToCurrentTime()
353353
} else {
354-
metrics.FleetEvictionStatus.WithLabelValues(eviction.Name, "true", "false").SetToCurrentTime()
354+
hubmetrics.FleetEvictionStatus.WithLabelValues(eviction.Name, "true", "false").SetToCurrentTime()
355355
}
356356
}
357357

@@ -363,7 +363,7 @@ func (r *Reconciler) SetupWithManager(mgr runtime.Manager) error {
363363
WithEventFilter(predicate.Funcs{
364364
DeleteFunc: func(e event.DeleteEvent) bool {
365365
// delete complete status metric for eviction and skip reconciliation.
366-
count := metrics.FleetEvictionStatus.DeletePartialMatch(prometheus.Labels{"name": e.Object.GetName()})
366+
count := hubmetrics.FleetEvictionStatus.DeletePartialMatch(prometheus.Labels{"name": e.Object.GetName()})
367367
klog.V(2).InfoS("ClusterResourcePlacementEviction is being deleted", "clusterResourcePlacementEviction", e.Object.GetName(), "metricCount", count)
368368
return false
369369
},

pkg/controllers/clusterresourceplacementeviction/controller_intergration_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import (
3333
ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
3434

3535
placementv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
36-
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
36+
hubmetrics "github.com/kubefleet-dev/kubefleet/pkg/metrics/hub"
3737
"github.com/kubefleet-dev/kubefleet/pkg/utils/condition"
3838
testutilseviction "github.com/kubefleet-dev/kubefleet/test/utils/eviction"
3939
)
@@ -58,17 +58,17 @@ var _ = Describe("Test ClusterResourcePlacementEviction Controller", func() {
5858

5959
BeforeEach(func() {
6060
// Reset metrics before each test
61-
metrics.FleetEvictionStatus.Reset()
61+
hubmetrics.FleetEvictionStatus.Reset()
6262
// emit incomplete eviction metric to simulate eviction failed once.
63-
metrics.FleetEvictionStatus.WithLabelValues(evictionName, "false", "unknown").SetToCurrentTime()
63+
hubmetrics.FleetEvictionStatus.WithLabelValues(evictionName, "false", "unknown").SetToCurrentTime()
6464
})
6565

6666
AfterEach(func() {
6767
ensureCRPDBRemoved(crpName)
6868
ensureAllBindingsAreRemoved(crpName)
6969
ensureEvictionRemoved(evictionName)
7070
ensureCRPRemoved(crpName)
71-
metrics.FleetEvictionStatus.Reset()
71+
hubmetrics.FleetEvictionStatus.Reset()
7272
})
7373

7474
It("Invalid Eviction Blocked - emit complete metric with isValid=false, isComplete=true", func() {

pkg/controllers/clusterresourceplacementeviction/controller_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ import (
3838
ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
3939

4040
placementv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
41-
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
41+
hubmetrics "github.com/kubefleet-dev/kubefleet/pkg/metrics/hub"
4242
"github.com/kubefleet-dev/kubefleet/pkg/utils/condition"
4343
"github.com/kubefleet-dev/kubefleet/pkg/utils/defaulter"
4444
)
@@ -1493,7 +1493,7 @@ func TestReconcileForIncompleteEvictionMetric(t *testing.T) {
14931493
isComplete := "false"
14941494

14951495
// Reset metrics before each test
1496-
metrics.FleetEvictionStatus.Reset()
1496+
hubmetrics.FleetEvictionStatus.Reset()
14971497

14981498
scheme := serviceScheme(t)
14991499
fakeClient := fake.NewClientBuilder().

pkg/controllers/clusterresourceplacementeviction/suite_test.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package clusterresourceplacementeviction
1919
import (
2020
"context"
2121
"flag"
22-
"os"
2322
"path/filepath"
2423
"testing"
2524

@@ -34,11 +33,9 @@ import (
3433
"sigs.k8s.io/controller-runtime/pkg/envtest"
3534
"sigs.k8s.io/controller-runtime/pkg/log/zap"
3635
"sigs.k8s.io/controller-runtime/pkg/manager"
37-
ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
3836
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
3937

4038
placementv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
41-
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
4239
)
4340

4441
var (
@@ -50,13 +47,6 @@ var (
5047
cancel context.CancelFunc
5148
)
5249

53-
func TestMain(m *testing.M) {
54-
// Register here as the metric is both tested in ginkgo tests and go unit tests.
55-
ctrlmetrics.Registry.MustRegister(metrics.FleetEvictionStatus)
56-
57-
os.Exit(m.Run())
58-
}
59-
6050
func TestAPIs(t *testing.T) {
6151
RegisterFailHandler(Fail)
6252

pkg/controllers/internalmembercluster/v1alpha1/member_controller.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import (
3636

3737
fleetv1alpha1 "github.com/kubefleet-dev/kubefleet/apis/v1alpha1"
3838
"github.com/kubefleet-dev/kubefleet/pkg/controllers/workv1alpha1"
39-
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
39+
sharedmetrics "github.com/kubefleet-dev/kubefleet/pkg/metrics/shared"
4040
)
4141

4242
// Reconciler reconciles a InternalMemberCluster object in the member cluster.
@@ -273,7 +273,7 @@ func (r *Reconciler) markInternalMemberClusterJoined(imc fleetv1alpha1.Condition
273273
if existingCondition == nil || existingCondition.ObservedGeneration != imc.GetGeneration() || existingCondition.Status != newCondition.Status {
274274
r.recorder.Event(imc, corev1.EventTypeNormal, eventReasonInternalMemberClusterJoined, "internal member cluster joined")
275275
klog.V(2).InfoS("joined", "InternalMemberCluster", klog.KObj(imc))
276-
metrics.ReportJoinResultMetric()
276+
sharedmetrics.ReportJoinResultMetric()
277277
}
278278

279279
imc.SetConditionsWithType(fleetv1alpha1.MemberAgent, newCondition)
@@ -313,7 +313,7 @@ func (r *Reconciler) markInternalMemberClusterLeft(imc fleetv1alpha1.Conditioned
313313
if existingCondition == nil || existingCondition.ObservedGeneration != imc.GetGeneration() || existingCondition.Status != newCondition.Status {
314314
r.recorder.Event(imc, corev1.EventTypeNormal, eventReasonInternalMemberClusterLeft, "internal member cluster left")
315315
klog.V(2).InfoS("left", "InternalMemberCluster", klog.KObj(imc))
316-
metrics.ReportLeaveResultMetric()
316+
sharedmetrics.ReportLeaveResultMetric()
317317
}
318318

319319
imc.SetConditionsWithType(fleetv1alpha1.MemberAgent, newCondition)

pkg/controllers/internalmembercluster/v1beta1/member_controller.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import (
4040
"sigs.k8s.io/controller-runtime/pkg/predicate"
4141

4242
clusterv1beta1 "github.com/kubefleet-dev/kubefleet/apis/cluster/v1beta1"
43-
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
43+
sharedmetrics "github.com/kubefleet-dev/kubefleet/pkg/metrics/shared"
4444
"github.com/kubefleet-dev/kubefleet/pkg/propertyprovider"
4545
"github.com/kubefleet-dev/kubefleet/pkg/utils/condition"
4646
"github.com/kubefleet-dev/kubefleet/pkg/utils/controller"
@@ -627,7 +627,7 @@ func (r *Reconciler) markInternalMemberClusterJoined(imc clusterv1beta1.Conditio
627627
if existingCondition == nil || existingCondition.ObservedGeneration != imc.GetGeneration() || existingCondition.Status != newCondition.Status {
628628
r.recorder.Event(imc, corev1.EventTypeNormal, EventReasonInternalMemberClusterJoined, "internal member cluster joined")
629629
klog.V(2).InfoS("InternalMemberCluster has joined", "internalMemberCluster", klog.KObj(imc))
630-
metrics.ReportJoinResultMetric()
630+
sharedmetrics.ReportJoinResultMetric()
631631
}
632632

633633
imc.SetConditionsWithType(clusterv1beta1.MemberAgent, newCondition)
@@ -667,7 +667,7 @@ func (r *Reconciler) markInternalMemberClusterLeft(imc clusterv1beta1.Conditione
667667
if existingCondition == nil || existingCondition.ObservedGeneration != imc.GetGeneration() || existingCondition.Status != newCondition.Status {
668668
r.recorder.Event(imc, corev1.EventTypeNormal, EventReasonInternalMemberClusterLeft, "internal member cluster left")
669669
klog.V(2).InfoS("InternalMemberCluster has left", "internalMemberCluster", klog.KObj(imc))
670-
metrics.ReportLeaveResultMetric()
670+
sharedmetrics.ReportLeaveResultMetric()
671671
}
672672

673673
imc.SetConditionsWithType(clusterv1beta1.MemberAgent, newCondition)

pkg/controllers/membercluster/v1alpha1/membercluster_controller.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ import (
4242
"github.com/kubefleet-dev/kubefleet/apis"
4343
fleetv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
4444
fleetv1alpha1 "github.com/kubefleet-dev/kubefleet/apis/v1alpha1"
45-
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
45+
sharedmetrics "github.com/kubefleet-dev/kubefleet/pkg/metrics/shared"
4646
"github.com/kubefleet-dev/kubefleet/pkg/utils"
4747
)
4848

@@ -523,7 +523,7 @@ func markMemberClusterJoined(recorder record.EventRecorder, mc apis.ConditionedO
523523
if existingCondition == nil || existingCondition.Status != newCondition.Status {
524524
recorder.Event(mc, corev1.EventTypeNormal, reasonMemberClusterJoined, "member cluster joined")
525525
klog.V(2).InfoS("memberCluster joined", "memberCluster", klog.KObj(mc))
526-
metrics.ReportJoinResultMetric()
526+
sharedmetrics.ReportJoinResultMetric()
527527
}
528528

529529
mc.SetConditions(newCondition)
@@ -550,7 +550,7 @@ func markMemberClusterLeft(recorder record.EventRecorder, mc apis.ConditionedObj
550550
if existingCondition == nil || existingCondition.Status != newCondition.Status {
551551
recorder.Event(mc, corev1.EventTypeNormal, reasonMemberClusterJoined, "member cluster left")
552552
klog.V(2).InfoS("memberCluster left", "memberCluster", klog.KObj(mc))
553-
metrics.ReportLeaveResultMetric()
553+
sharedmetrics.ReportLeaveResultMetric()
554554
}
555555

556556
mc.SetConditions(newCondition, notReadyCondition)

pkg/controllers/membercluster/v1beta1/membercluster_controller.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ import (
4343
"github.com/kubefleet-dev/kubefleet/apis"
4444
clusterv1beta1 "github.com/kubefleet-dev/kubefleet/apis/cluster/v1beta1"
4545
placementv1beta1 "github.com/kubefleet-dev/kubefleet/apis/placement/v1beta1"
46-
"github.com/kubefleet-dev/kubefleet/pkg/metrics"
46+
sharedmetrics "github.com/kubefleet-dev/kubefleet/pkg/metrics/shared"
4747
"github.com/kubefleet-dev/kubefleet/pkg/utils"
4848
"github.com/kubefleet-dev/kubefleet/pkg/utils/condition"
4949
"github.com/kubefleet-dev/kubefleet/pkg/utils/controller"
@@ -635,7 +635,7 @@ func markMemberClusterJoined(recorder record.EventRecorder, mc apis.ConditionedO
635635
if existingCondition == nil || existingCondition.Status != newCondition.Status {
636636
recorder.Event(mc, corev1.EventTypeNormal, reasonMemberClusterJoined, "member cluster joined")
637637
klog.V(2).InfoS("memberCluster joined", "memberCluster", klog.KObj(mc))
638-
metrics.ReportJoinResultMetric()
638+
sharedmetrics.ReportJoinResultMetric()
639639
}
640640

641641
mc.SetConditions(newCondition)
@@ -664,7 +664,7 @@ func markMemberClusterLeft(recorder record.EventRecorder, mc apis.ConditionedObj
664664
if existingCondition == nil || existingCondition.Status != newCondition.Status {
665665
recorder.Event(mc, corev1.EventTypeNormal, reasonMemberClusterJoined, "member cluster left")
666666
klog.V(2).InfoS("memberCluster left", "memberCluster", klog.KObj(mc))
667-
metrics.ReportLeaveResultMetric()
667+
sharedmetrics.ReportLeaveResultMetric()
668668
}
669669

670670
mc.SetConditions(newCondition, notReadyCondition)

0 commit comments

Comments
 (0)