From 2577ff228d559b8fdf687f6cfad196bfbf1bd50a Mon Sep 17 00:00:00 2001 From: Anand Swaminathan Date: Tue, 2 Jul 2019 16:55:52 -0700 Subject: [PATCH] Set provider only if all methods are implemented (#26) * Set provider only if all methods of interface are implemented --- promutils/workqueue.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/promutils/workqueue.go b/promutils/workqueue.go index 1911c08..f7bdd05 100644 --- a/promutils/workqueue.go +++ b/promutils/workqueue.go @@ -17,6 +17,8 @@ limitations under the License. package promutils import ( + "fmt" + "k8s.io/client-go/util/workqueue" "github.com/prometheus/client_golang/prometheus" @@ -26,7 +28,14 @@ import ( // prometheus metrics. To use this package, you just have to import it. func init() { - workqueue.SetProvider(prometheusMetricsProvider{}) + var provider interface{} //nolint + provider = prometheusMetricsProvider{} + if p, casted := provider.(workqueue.MetricsProvider); casted { + workqueue.SetProvider(p) + } else { + // This case happens in future versions of client-go where the interface has added methods + fmt.Println("Warn: No metricsProvider set for the workqueue") + } } type prometheusMetricsProvider struct{}