diff --git a/pkg/engine/pattern.go b/pkg/engine/pattern.go index 8327206b1c..e47c3dac3a 100644 --- a/pkg/engine/pattern.go +++ b/pkg/engine/pattern.go @@ -51,8 +51,10 @@ func ValidateValueWithPattern(value, pattern interface{}) bool { return validateValueWithStringPatterns(value, typedPattern) case nil: return validateValueWithNilPattern(value) - case map[string]interface{}, []interface{}: - glog.Warning("Maps and arrays as patterns are not supported") + case map[string]interface{}: + return validateValueWithMapPattern(value, typedPattern) + case []interface{}: + glog.Warning("Arrays as patterns are not supported") return false default: glog.Warningf("Unknown type as pattern: %T\n", pattern) @@ -60,6 +62,17 @@ func ValidateValueWithPattern(value, pattern interface{}) bool { } } +func validateValueWithMapPattern(value interface{}, typedPattern map[string]interface{}) bool { + // verify the type of the resource value is map[string]interface, + // we only check for existance of object, not the equality of content and value + _, ok := value.(map[string]interface{}) + if !ok { + glog.Warningf("Expected map[string]interface{}, found %T\n", value) + return false + } + return true +} + // Handler for int values during validation process func validateValueWithIntPattern(value interface{}, pattern int64) bool { switch typedValue := value.(type) {