Merge pull request #1224 from Freydal/fix-optional-metric-template-namespace

Reintroducing empty check for metric template references.
This commit is contained in:
Sanskar Jaiswal
2022-06-23 12:31:51 +05:30
committed by GitHub
3 changed files with 18 additions and 3 deletions
+1 -1
View File
@@ -108,7 +108,7 @@ func (c *Controller) alert(canary *flaggerv1.Canary, message string, metadata bo
// determine alert provider namespace
providerNamespace := canary.GetNamespace()
if alert.ProviderRef.Namespace != canary.Namespace {
if alert.ProviderRef.Namespace != canary.Namespace && alert.ProviderRef.Namespace != "" {
providerNamespace = alert.ProviderRef.Namespace
}
+2 -2
View File
@@ -54,7 +54,7 @@ func (c *Controller) checkMetricProviderAvailability(canary *flaggerv1.Canary) e
if metric.TemplateRef != nil {
namespace := canary.Namespace
if metric.TemplateRef.Namespace != canary.Namespace {
if metric.TemplateRef.Namespace != canary.Namespace && metric.TemplateRef.Namespace != "" {
namespace = metric.TemplateRef.Namespace
}
@@ -238,7 +238,7 @@ func (c *Controller) runMetricChecks(canary *flaggerv1.Canary) bool {
for _, metric := range canary.GetAnalysis().Metrics {
if metric.TemplateRef != nil {
namespace := canary.Namespace
if metric.TemplateRef.Namespace != canary.Namespace {
if metric.TemplateRef.Namespace != canary.Namespace && metric.TemplateRef.Namespace != "" {
namespace = metric.TemplateRef.Namespace
}
+15
View File
@@ -25,6 +25,7 @@ import (
flaggerv1 "github.com/fluxcd/flagger/pkg/apis/flagger/v1beta1"
"github.com/fluxcd/flagger/pkg/metrics/observers"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func TestController_checkMetricProviderAvailability(t *testing.T) {
@@ -66,4 +67,18 @@ func TestController_checkMetricProviderAvailability(t *testing.T) {
}
require.NoError(t, ctrl.checkMetricProviderAvailability(canary))
})
t.Run("intraNamespaceTemplateRef", func(t *testing.T) {
ctrl := newDeploymentFixture(nil).ctrl
analysis := &flaggerv1.CanaryAnalysis{Metrics: []flaggerv1.CanaryMetric{{
Name: "", TemplateRef: &flaggerv1.CrossNamespaceObjectReference{
Name: "envoy",
},
}}}
canary := &flaggerv1.Canary{
ObjectMeta: metav1.ObjectMeta{Namespace: "default"},
Spec: flaggerv1.CanarySpec{Analysis: analysis},
}
require.NoError(t, ctrl.checkMetricProviderAvailability(canary))
})
}