Merge pull request #1874 from mtfurlan/fix/mesh-router-warn-unknown

warn when mesh provider isn't valid
This commit is contained in:
Sanskar Jaiswal
2026-02-27 12:46:16 +05:30
committed by GitHub
4 changed files with 16 additions and 3 deletions

View File

@@ -93,6 +93,7 @@ func (factory *Factory) Controller(obj v1beta1.LocalObjectReference) Controller
return serviceCtrl
}
default:
factory.logger.Warnf("unknown canary target '%s', assuming deployment", obj.Kind)
return deploymentCtrl
}
}
@@ -118,6 +119,7 @@ func (factory *Factory) ScalerReconciler(kind string) ScalerReconciler {
case "ScaledObject":
return soReconciler
default:
factory.logger.Errorf("unknown hpa kind '%s'")
return nil
}
}

View File

@@ -74,7 +74,7 @@ func (c *Controller) checkMetricProviderAvailability(canary *flaggerv1.Canary) e
credentials = secret.Data
}
factory := providers.Factory{}
factory := providers.NewFactory(c.logger)
provider, err := factory.Provider(metric.Interval, template.Spec.Provider, credentials, c.kubeConfig)
if err != nil {
return fmt.Errorf("metric template %s.%s provider %s error: %v",
@@ -292,7 +292,7 @@ func (c *Controller) runMetricChecks(canary *flaggerv1.Canary) bool {
credentials = secret.Data
}
factory := providers.Factory{}
factory := providers.NewFactory(c.logger)
provider, err := factory.Provider(metric.Interval, template.Spec.Provider, credentials, c.kubeConfig)
if err != nil {
c.recordEventErrorf(canary, "Metric template %s.%s provider %s error: %v",

View File

@@ -18,10 +18,19 @@ package providers
import (
flaggerv1 "github.com/fluxcd/flagger/pkg/apis/flagger/v1beta1"
"go.uber.org/zap"
rest "k8s.io/client-go/rest"
)
type Factory struct{}
type Factory struct {
logger *zap.SugaredLogger
}
func NewFactory(logger *zap.SugaredLogger) *Factory {
return &Factory{
logger: logger,
}
}
func (factory Factory) Provider(metricInterval string, provider flaggerv1.MetricTemplateProvider, credentials map[string][]byte, config *rest.Config) (Interface, error) {
switch provider.Type {
@@ -46,6 +55,7 @@ func (factory Factory) Provider(metricInterval string, provider flaggerv1.Metric
case "splunk":
return NewSplunkProvider(metricInterval, provider, credentials)
default:
factory.logger.Warnf("unknown metrics provider '%s', using prometheus", provider.Type)
return NewPrometheusProvider(provider, credentials)
}
}

View File

@@ -224,6 +224,7 @@ func (factory *Factory) MeshRouter(provider string, labelSelector string) Interf
case provider == flaggerv1.KubernetesProvider:
return &NopRouter{}
default:
factory.logger.Warnf("unknown mesh router provider '%s', using istio", provider)
return &IstioRouter{
logger: factory.logger,
flaggerClient: factory.flaggerClient,