From b2c12c11316b3ea6a2de0de206d0f3fc63ae490c Mon Sep 17 00:00:00 2001 From: stefanprodan Date: Sat, 30 Mar 2019 11:45:39 +0200 Subject: [PATCH] Move observer to metrics package --- cmd/flagger/main.go | 3 ++- pkg/controller/controller.go | 8 ++------ pkg/controller/controller_test.go | 7 ++----- pkg/controller/scheduler.go | 8 ++++---- pkg/{controller => metrics}/observer.go | 12 +++++++++++- pkg/{controller => metrics}/observer_test.go | 2 +- 6 files changed, 22 insertions(+), 18 deletions(-) rename pkg/{controller => metrics}/observer.go (96%) rename pkg/{controller => metrics}/observer_test.go (99%) diff --git a/cmd/flagger/main.go b/cmd/flagger/main.go index 463e06db..ed2fa659 100644 --- a/cmd/flagger/main.go +++ b/cmd/flagger/main.go @@ -7,6 +7,7 @@ import ( informers "github.com/weaveworks/flagger/pkg/client/informers/externalversions" "github.com/weaveworks/flagger/pkg/controller" "github.com/weaveworks/flagger/pkg/logging" + "github.com/weaveworks/flagger/pkg/metrics" "github.com/weaveworks/flagger/pkg/notifier" "github.com/weaveworks/flagger/pkg/server" "github.com/weaveworks/flagger/pkg/signals" @@ -105,7 +106,7 @@ func main() { logger.Infof("Watching namespace %s", namespace) } - ok, err := controller.CheckMetricsServer(metricsServer) + ok, err := metrics.CheckMetricsServer(metricsServer) if ok { logger.Infof("Connected to metrics server %s", metricsServer) } else { diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index c887083a..28415540 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -42,7 +42,7 @@ type Controller struct { canaries *sync.Map jobs map[string]CanaryJob deployer CanaryDeployer - observer CanaryObserver + observer metrics.CanaryObserver recorder metrics.CanaryRecorder notifier *notifier.Slack meshProvider string @@ -81,10 +81,6 @@ func NewController( }, } - observer := CanaryObserver{ - metricsServer: metricServer, - } - recorder := metrics.NewCanaryRecorder(controllerAgentName, true) recorder.SetInfo(version, meshProvider) @@ -101,7 +97,7 @@ func NewController( jobs: map[string]CanaryJob{}, flaggerWindow: flaggerWindow, deployer: deployer, - observer: observer, + observer: metrics.NewObserver(metricServer), recorder: recorder, notifier: notifier, meshProvider: meshProvider, diff --git a/pkg/controller/controller_test.go b/pkg/controller/controller_test.go index d4f3e418..ade7a935 100644 --- a/pkg/controller/controller_test.go +++ b/pkg/controller/controller_test.go @@ -35,7 +35,7 @@ type Mocks struct { meshClient clientset.Interface flaggerClient clientset.Interface deployer CanaryDeployer - observer CanaryObserver + observer metrics.CanaryObserver ctrl *Controller logger *zap.SugaredLogger router router.Interface @@ -74,9 +74,6 @@ func SetupMocks(abtest bool) Mocks { flaggerClient: flaggerClient, }, } - observer := CanaryObserver{ - metricsServer: "fake", - } // init controller flaggerInformerFactory := informers.NewSharedInformerFactory(flaggerClient, noResyncPeriodFunc()) @@ -94,7 +91,7 @@ func SetupMocks(abtest bool) Mocks { canaries: new(sync.Map), flaggerWindow: time.Second, deployer: deployer, - observer: observer, + observer: metrics.NewObserver("fake"), recorder: metrics.NewCanaryRecorder(controllerAgentName, false), } ctrl.flaggerSynced = alwaysReady diff --git a/pkg/controller/scheduler.go b/pkg/controller/scheduler.go index ac058b1c..892fc41f 100644 --- a/pkg/controller/scheduler.go +++ b/pkg/controller/scheduler.go @@ -501,7 +501,7 @@ func (c *Controller) analyseCanary(r *flaggerv1.Canary) bool { c.recordEventWarningf(r, "Halt advancement no values found for metric %s probably %s.%s is not receiving traffic", metric.Name, r.Spec.TargetRef.Name, r.Namespace) } else { - c.recordEventErrorf(r, "Metrics server %s query failed: %v", c.observer.metricsServer, err) + c.recordEventErrorf(r, "Metrics server %s query failed: %v", c.observer.GetMetricsServer(), err) } return false } @@ -519,7 +519,7 @@ func (c *Controller) analyseCanary(r *flaggerv1.Canary) bool { c.recordEventWarningf(r, "Halt advancement no values found for metric %s probably %s.%s is not receiving traffic", metric.Name, r.Spec.TargetRef.Name, r.Namespace) } else { - c.recordEventErrorf(r, "Metrics server %s query failed: %v", c.observer.metricsServer, err) + c.recordEventErrorf(r, "Metrics server %s query failed: %v", c.observer.GetMetricsServer(), err) } return false } @@ -533,7 +533,7 @@ func (c *Controller) analyseCanary(r *flaggerv1.Canary) bool { if metric.Name == "istio_request_duration_seconds_bucket" { val, err := c.observer.GetDeploymentHistogram(r.Spec.TargetRef.Name, r.Namespace, metric.Name, metric.Interval) if err != nil { - c.recordEventErrorf(r, "Metrics server %s query failed: %v", c.observer.metricsServer, err) + c.recordEventErrorf(r, "Metrics server %s query failed: %v", c.observer.GetMetricsServer(), err) return false } t := time.Duration(metric.Threshold) * time.Millisecond @@ -551,7 +551,7 @@ func (c *Controller) analyseCanary(r *flaggerv1.Canary) bool { c.recordEventWarningf(r, "Halt advancement no values found for metric %s probably %s.%s is not receiving traffic", metric.Name, r.Spec.TargetRef.Name, r.Namespace) } else { - c.recordEventErrorf(r, "Metrics server %s query failed: %v", c.observer.metricsServer, err) + c.recordEventErrorf(r, "Metrics server %s query failed: %v", c.observer.GetMetricsServer(), err) } return false } diff --git a/pkg/controller/observer.go b/pkg/metrics/observer.go similarity index 96% rename from pkg/controller/observer.go rename to pkg/metrics/observer.go index 19eabff0..12dc24e3 100644 --- a/pkg/controller/observer.go +++ b/pkg/metrics/observer.go @@ -1,4 +1,4 @@ -package controller +package metrics import ( "context" @@ -29,6 +29,16 @@ type vectorQueryResponse struct { } } +func NewObserver(metricsServer string) CanaryObserver { + return CanaryObserver{ + metricsServer: metricsServer, + } +} + +func (c *CanaryObserver) GetMetricsServer() string { + return c.metricsServer +} + func (c *CanaryObserver) queryMetric(query string) (*vectorQueryResponse, error) { promURL, err := url.Parse(c.metricsServer) if err != nil { diff --git a/pkg/controller/observer_test.go b/pkg/metrics/observer_test.go similarity index 99% rename from pkg/controller/observer_test.go rename to pkg/metrics/observer_test.go index 1ef00982..5d4073fe 100644 --- a/pkg/controller/observer_test.go +++ b/pkg/metrics/observer_test.go @@ -1,4 +1,4 @@ -package controller +package metrics import ( "net/http"