@@ -11,6 +11,7 @@ import (
1111 "net"
1212 "net/netip"
1313 "regexp"
14+ "strings"
1415
1516 "github.com/dominikbraun/graph"
1617 utilerrors "k8s.io/apimachinery/pkg/util/errors"
@@ -296,32 +297,34 @@ func validateFilterOrder(filterOrder []egv1a1.FilterPosition) error {
296297 return nil
297298}
298299
299- func ValidateRouteStatName ( routeStatName string ) error {
300- supportedOperators : = map [string ]bool {
300+ var (
301+ routeStatSupportedOperators = map [string ]bool {
301302 egv1a1 .StatFormatterRouteName : true ,
302303 egv1a1 .StatFormatterRouteNamespace : true ,
303304 egv1a1 .StatFormatterRouteKind : true ,
304305 egv1a1 .StatFormatterRouteRuleName : true ,
305306 }
306307
307- if err := validateStatName (routeStatName , supportedOperators ); err != nil {
308- return fmt .Errorf ("unable to configure Route Stat Name: %w" , err )
309- }
310-
311- return nil
312- }
313-
314- func ValidateClusterStatName (clusterStatName string ) error {
315- supportedOperators := map [string ]bool {
308+ clusterStatSupportedOperators = map [string ]bool {
316309 egv1a1 .StatFormatterRouteName : true ,
317310 egv1a1 .StatFormatterRouteNamespace : true ,
318311 egv1a1 .StatFormatterRouteKind : true ,
319312 egv1a1 .StatFormatterRouteRuleName : true ,
320313 egv1a1 .StatFormatterRouteRuleNumber : true ,
321314 egv1a1 .StatFormatterBackendRefs : true ,
322315 }
316+ )
317+
318+ func ValidateRouteStatName (routeStatName string ) error {
319+ if err := validateStatName (routeStatName , routeStatSupportedOperators ); err != nil {
320+ return fmt .Errorf ("unable to configure Route Stat Name: %w" , err )
321+ }
323322
324- if err := validateStatName (clusterStatName , supportedOperators ); err != nil {
323+ return nil
324+ }
325+
326+ func ValidateClusterStatName (clusterStatName string ) error {
327+ if err := validateStatName (clusterStatName , clusterStatSupportedOperators ); err != nil {
325328 return fmt .Errorf ("unable to configure Cluster Stat Name: %w" , err )
326329 }
327330
@@ -331,6 +334,9 @@ func ValidateClusterStatName(clusterStatName string) error {
331334func validateStatName (statName string , supportedOperators map [string ]bool ) error {
332335 var unsupportedOperators []string
333336 matches := statNameRegex .FindAllString (statName , - 1 )
337+ if len (matches ) == 0 && strings .Contains (statName , "%" ) {
338+ return fmt .Errorf ("unable to configure Cluster Stat Name with invalid operator" )
339+ }
334340 for _ , operator := range matches {
335341 if _ , ok := supportedOperators [operator ]; ! ok {
336342 unsupportedOperators = append (unsupportedOperators , operator )
0 commit comments