Files
flagger/pkg/metrics/factory.go
T
stefanprodan ad8d02f701 Use Linkerd metrics when NGINX is the mesh ingress
Set the metrics provider to Linkerd Prometheus when using NGINX as Linkerd Ingress. This mitigates the lack of canary metrics in the NGINX controller exporter.
2019-06-30 13:03:27 +03:00

57 lines
1.1 KiB
Go

package metrics
import (
"strings"
"time"
)
type Factory struct {
MeshProvider string
Client *PrometheusClient
}
func NewFactory(metricsServer string, meshProvider string, timeout time.Duration) (*Factory, error) {
client, err := NewPrometheusClient(metricsServer, timeout)
if err != nil {
return nil, err
}
return &Factory{
MeshProvider: meshProvider,
Client: client,
}, nil
}
func (factory Factory) Observer(provider string) Interface {
switch {
case provider == "none":
return &HttpObserver{
client: factory.Client,
}
case provider == "appmesh":
return &EnvoyObserver{
client: factory.Client,
}
case provider == "nginx":
return &NginxObserver{
client: factory.Client,
}
case strings.HasPrefix(provider, "gloo"):
return &GlooObserver{
client: factory.Client,
}
case provider == "smi:linkerd":
return &LinkerdObserver{
client: factory.Client,
}
case provider == "linkerd":
return &LinkerdObserver{
client: factory.Client,
}
default:
return &IstioObserver{
client: factory.Client,
}
}
}