mirror of
https://github.com/status-im/consul.git
synced 2025-01-10 13:55:55 +00:00
add service resolver subset filter validation
This commit is contained in:
parent
ce04ce13dd
commit
a350a383d3
@ -11,6 +11,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/hashicorp/go-bexpr"
|
||||
"github.com/mitchellh/copystructure"
|
||||
"github.com/mitchellh/hashstructure"
|
||||
|
||||
@ -901,13 +902,18 @@ func (e *ServiceResolverConfigEntry) Validate() error {
|
||||
}
|
||||
|
||||
if len(e.Subsets) > 0 {
|
||||
for name := range e.Subsets {
|
||||
for name, subset := range e.Subsets {
|
||||
if name == "" {
|
||||
return fmt.Errorf("Subset defined with empty name")
|
||||
}
|
||||
if err := validateServiceSubset(name); err != nil {
|
||||
return fmt.Errorf("Subset %q is invalid: %v", name, err)
|
||||
}
|
||||
if subset.Filter != "" {
|
||||
if _, err := bexpr.CreateEvaluator(subset.Filter, nil); err != nil {
|
||||
return fmt.Errorf("Filter for subset %q is not a valid expression: %v", name, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -552,6 +552,17 @@ func TestServiceResolverConfigEntry(t *testing.T) {
|
||||
},
|
||||
validateErr: "Subset defined with empty name",
|
||||
},
|
||||
{
|
||||
name: "invalid boolean expression subset filter",
|
||||
entry: &ServiceResolverConfigEntry{
|
||||
Kind: ServiceResolver,
|
||||
Name: "test",
|
||||
Subsets: map[string]ServiceResolverSubset{
|
||||
"v1": {Filter: "random string"},
|
||||
},
|
||||
},
|
||||
validateErr: `Filter for subset "v1" is not a valid expression`,
|
||||
},
|
||||
{
|
||||
name: "default subset does not exist",
|
||||
entry: &ServiceResolverConfigEntry{
|
||||
|
Loading…
x
Reference in New Issue
Block a user