From 4ae4619e23f0cb3bcee02228bbde727fa53dee03 Mon Sep 17 00:00:00 2001 From: Somtochi Onyekwere Date: Wed, 17 Mar 2021 15:21:04 +0100 Subject: [PATCH 1/2] Record suspension metrics Signed-off-by: Somtochi Onyekwere --- controllers/alert_controller.go | 22 ++++++++++++++++++++++ controllers/receiver_controller.go | 23 +++++++++++++++++++++++ go.mod | 2 +- go.sum | 2 ++ 4 files changed, 48 insertions(+), 1 deletion(-) diff --git a/controllers/alert_controller.go b/controllers/alert_controller.go index 7fa308de2..d3788440c 100644 --- a/controllers/alert_controller.go +++ b/controllers/alert_controller.go @@ -57,6 +57,9 @@ func (r *AlertReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl return ctrl.Result{}, client.IgnoreNotFound(err) } + // record suspension metrics + r.recordSuspension(ctx, alert) + // record reconciliation duration if r.MetricsRecorder != nil { objRef, err := reference.GetReference(r.Scheme, &alert) @@ -109,6 +112,25 @@ func (r *AlertReconciler) validate(ctx context.Context, alert v1beta1.Alert) err return nil } +func (r *AlertReconciler) recordSuspension(ctx context.Context, alert v1beta1.Alert) { + if r.MetricsRecorder == nil { + return + } + log := logr.FromContext(ctx) + + objRef, err := reference.GetReference(r.Scheme, &alert) + if err != nil { + log.Error(err, "unable to record suspended metric") + return + } + + if !alert.DeletionTimestamp.IsZero() { + r.MetricsRecorder.RecordSuspend(*objRef, false) + } else { + r.MetricsRecorder.RecordSuspend(*objRef, alert.Spec.Suspend) + } +} + func (r *AlertReconciler) recordReadiness(ctx context.Context, alert v1beta1.Alert) { log := logr.FromContext(ctx) if r.MetricsRecorder == nil { diff --git a/controllers/receiver_controller.go b/controllers/receiver_controller.go index 5c4995910..0c0945487 100644 --- a/controllers/receiver_controller.go +++ b/controllers/receiver_controller.go @@ -20,6 +20,7 @@ import ( "context" "crypto/sha256" "fmt" + "k8s.io/client-go/tools/reference" "github.com/go-logr/logr" corev1 "k8s.io/api/core/v1" @@ -62,6 +63,9 @@ func (r *ReceiverReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c return ctrl.Result{}, client.IgnoreNotFound(err) } + // record suspension metrics + defer r.recordSuspension(ctx, receiver) + token, err := r.token(ctx, receiver) if err != nil { receiver = v1beta1.ReceiverNotReady(receiver, v1beta1.TokenNotFoundReason, err.Error()) @@ -118,6 +122,25 @@ func (r *ReceiverReconciler) token(ctx context.Context, receiver v1beta1.Receive return token, nil } +func (r *ReceiverReconciler) recordSuspension(ctx context.Context, rcvr v1beta1.Receiver) { + if r.MetricsRecorder == nil { + return + } + log := logr.FromContext(ctx) + + objRef, err := reference.GetReference(r.Scheme, &rcvr) + if err != nil { + log.Error(err, "unable to record suspended metric") + return + } + + if !rcvr.DeletionTimestamp.IsZero() { + r.MetricsRecorder.RecordSuspend(*objRef, false) + } else { + r.MetricsRecorder.RecordSuspend(*objRef, rcvr.Spec.Suspend) + } +} + func sha256sum(val string) string { digest := sha256.Sum256([]byte(val)) return fmt.Sprintf("%x", digest) diff --git a/go.mod b/go.mod index 4492eb59f..6253a31e6 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/fluxcd/notification-controller/api v0.10.0 github.com/fluxcd/pkg/apis/meta v0.8.0 github.com/fluxcd/pkg/recorder v0.0.6 - github.com/fluxcd/pkg/runtime v0.8.4 + github.com/fluxcd/pkg/runtime v0.8.5 github.com/go-logr/logr v0.3.0 github.com/google/go-github/v32 v32.1.0 github.com/hashicorp/go-retryablehttp v0.6.8 diff --git a/go.sum b/go.sum index db5bba7d3..81baad48c 100644 --- a/go.sum +++ b/go.sum @@ -103,6 +103,8 @@ github.com/fluxcd/pkg/recorder v0.0.6 h1:me/n8syeeGXz50OXoPX3jgIj9AtinvhHdKT9Dy+ github.com/fluxcd/pkg/recorder v0.0.6/go.mod h1:IfQxfVRSNsWs3B0Yp5B6ObEWwKHILlAx8N7XkoDdhFg= github.com/fluxcd/pkg/runtime v0.8.4 h1:amuhfoHGCUfFCPXg3Zrcyy7f9J+fho+/+FbQDDyewko= github.com/fluxcd/pkg/runtime v0.8.4/go.mod h1:JD0eZIn5xkTeHHQUWXSqJPIh/ecO0d0qrUKbSVHnpnw= +github.com/fluxcd/pkg/runtime v0.8.5 h1:ynh8fszbLQ3QSisQBNOABEUTnvt+/QfCdaL6gOJQcoQ= +github.com/fluxcd/pkg/runtime v0.8.5/go.mod h1:JD0eZIn5xkTeHHQUWXSqJPIh/ecO0d0qrUKbSVHnpnw= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= From 527c6e1f5426a68b1a10da1f60fe34cb63dc8f74 Mon Sep 17 00:00:00 2001 From: Somtochi Onyekwere Date: Wed, 17 Mar 2021 17:00:25 +0100 Subject: [PATCH 2/2] Remove unused dependencies Signed-off-by: Somtochi Onyekwere --- go.sum | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.sum b/go.sum index 81baad48c..9d131fbfc 100644 --- a/go.sum +++ b/go.sum @@ -101,8 +101,6 @@ github.com/fluxcd/pkg/apis/meta v0.8.0 h1:wqWpUsxhKHB1ZztcvOz+vnyhdKW9cWmjFp8Vci github.com/fluxcd/pkg/apis/meta v0.8.0/go.mod h1:yHuY8kyGHYz22I0jQzqMMGCcHViuzC/WPdo9Gisk8Po= github.com/fluxcd/pkg/recorder v0.0.6 h1:me/n8syeeGXz50OXoPX3jgIj9AtinvhHdKT9Dy+MbHs= github.com/fluxcd/pkg/recorder v0.0.6/go.mod h1:IfQxfVRSNsWs3B0Yp5B6ObEWwKHILlAx8N7XkoDdhFg= -github.com/fluxcd/pkg/runtime v0.8.4 h1:amuhfoHGCUfFCPXg3Zrcyy7f9J+fho+/+FbQDDyewko= -github.com/fluxcd/pkg/runtime v0.8.4/go.mod h1:JD0eZIn5xkTeHHQUWXSqJPIh/ecO0d0qrUKbSVHnpnw= github.com/fluxcd/pkg/runtime v0.8.5 h1:ynh8fszbLQ3QSisQBNOABEUTnvt+/QfCdaL6gOJQcoQ= github.com/fluxcd/pkg/runtime v0.8.5/go.mod h1:JD0eZIn5xkTeHHQUWXSqJPIh/ecO0d0qrUKbSVHnpnw= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=