diff --git a/go.mod b/go.mod index a32f37f22fca..14de8d739066 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,6 @@ require ( github.com/prometheus/client_golang v1.14.0 github.com/prometheus/client_model v0.3.0 github.com/prometheus/common v0.37.0 - github.com/prometheus/prometheus v0.39.1 github.com/sethvargo/go-retry v0.2.3 github.com/slok/go-http-metrics v0.10.0 github.com/soheilhy/cmux v0.1.5 @@ -114,7 +113,6 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/gnostic v0.5.7-v3refs // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2 // indirect github.com/gruntwork-io/go-commons v0.8.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect diff --git a/go.sum b/go.sum index 980cc5ce5e59..079f4b72fca8 100644 --- a/go.sum +++ b/go.sum @@ -727,8 +727,6 @@ github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB7 github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2 h1:uirlL/j72L93RhV4+mkWhjv0cov2I0MIgPOG9rMDr1k= -github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= @@ -1207,8 +1205,6 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/prometheus/prom2json v1.1.0/go.mod h1:v7OY1795b9fEUZgq4UU2+15YjRv0LfpxKejIQCy3L7o= -github.com/prometheus/prometheus v0.39.1 h1:abZM6A+sKAv2eKTbRIaHq4amM/nT07MuxRm0+QTaTj0= -github.com/prometheus/prometheus v0.39.1/go.mod h1:GjQjgLhHMc0oo4Ko7qt/yBSJMY4hUoiAZwsYQgjaePA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= diff --git a/pkg/mads/util.go b/pkg/mads/util.go index 3c98678c938b..f018c6e0fdc2 100644 --- a/pkg/mads/util.go +++ b/pkg/mads/util.go @@ -3,11 +3,10 @@ package mads import ( "fmt" "net" + "regexp" "strconv" "strings" - prom_util "github.com/prometheus/prometheus/util/strutil" - mesh_proto "github.com/kumahq/kuma/api/mesh/v1alpha1" core_mesh "github.com/kumahq/kuma/pkg/core/resources/apis/mesh" "github.com/kumahq/kuma/pkg/xds/topology" @@ -44,17 +43,17 @@ func DataplaneLabels(dataplane *core_mesh.DataplaneResource, meshGateways []*cor value = values[0] } // while in general case a tag might have multiple values, we want to optimize for a single-value scenario - labels[prom_util.SanitizeLabelName(key)] = value + labels[sanitizeLabelName(key)] = value // additionally, we also support a multi-value scenario by automatically pluralizing label name, // e.g. `service => services`, `version => versions`, etc. // if it happens that a user defined both `service` and `services` tags, // user-defined `services` tag will override auto-generated one (since keys are iterated in a sorted order) plural := fmt.Sprintf("%ss", key) - labels[prom_util.SanitizeLabelName(plural)] = MultiValue(values) + labels[sanitizeLabelName(plural)] = MultiValue(values) } // then, we turn name extensions into labels for key, value := range dataplane.GetMeta().GetNameExtensions() { - labels[prom_util.SanitizeLabelName(key)] = value + labels[sanitizeLabelName(key)] = value } if dataplane.Spec.IsBuiltinGateway() { @@ -73,3 +72,12 @@ func DataplaneAssignmentName(dataplane *core_mesh.DataplaneResource) string { // unique name, e.g. REST API uri return fmt.Sprintf("/meshes/%s/dataplanes/%s", dataplane.Meta.GetMesh(), dataplane.Meta.GetName()) } + +var invalidLabelCharRE = regexp.MustCompile(`[^a-zA-Z0-9_]`) + +// SanitizeLabelName replaces anything that doesn't match +// client_label.LabelNameRE with an underscore. +// taken from: https://github.com/prometheus/prometheus/blob/d437f0bb6b53ec8594a43b871f92252980b13ddd/util/strutil/strconv.go#L40-L47 +func sanitizeLabelName(name string) string { + return invalidLabelCharRE.ReplaceAllString(name, "_") +}