From 4f830acb6564156423affba368308984f965ebd3 Mon Sep 17 00:00:00 2001 From: shivkumar dudhani Date: Fri, 14 Feb 2020 12:05:13 -0800 Subject: [PATCH] refactor --- pkg/engine/validate/validate.go | 4 +- pkg/engine/validation.go | 4 +- pkg/engine/variables/validatevariables.go | 82 ----------------------- pkg/generate/generate.go | 2 +- 4 files changed, 5 insertions(+), 87 deletions(-) delete mode 100644 pkg/engine/variables/validatevariables.go diff --git a/pkg/engine/validate/validate.go b/pkg/engine/validate/validate.go index 84bdd674bf..9d94f07789 100644 --- a/pkg/engine/validate/validate.go +++ b/pkg/engine/validate/validate.go @@ -13,9 +13,9 @@ import ( "github.com/nirmata/kyverno/pkg/engine/operator" ) -// ValidateResourceWithPattern1 is a start of element-by-element validation process +// ValidateResourceWithPattern is a start of element-by-element validation process // It assumes that validation is started from root, so "/" is passed -func ValidateResourceWithPattern1(resource, pattern interface{}) (string, error) { +func ValidateResourceWithPattern(resource, pattern interface{}) (string, error) { path, err := validateResourceElement(resource, pattern, pattern, "/") if err != nil { return path, err diff --git a/pkg/engine/validation.go b/pkg/engine/validation.go index deb0f8e609..e8f6972790 100644 --- a/pkg/engine/validation.go +++ b/pkg/engine/validation.go @@ -192,7 +192,7 @@ func validatePatterns(ctx context.EvalInterface, resource unstructured.Unstructu return resp } - if path, err := validate.ValidateResourceWithPattern1(resource.Object, pattern); err != nil { + if path, err := validate.ValidateResourceWithPattern(resource.Object, pattern); err != nil { // validation failed resp.Success = false resp.Message = fmt.Sprintf("Validation error: %s; Validation rule '%s' failed at path '%s'", @@ -216,7 +216,7 @@ func validatePatterns(ctx context.EvalInterface, resource unstructured.Unstructu failedSubstitutionsErrors = append(failedSubstitutionsErrors, err) continue } - _, err := validate.ValidateResourceWithPattern1(resource.Object, pattern) + _, err := validate.ValidateResourceWithPattern(resource.Object, pattern) if err == nil { resp.Success = true resp.Message = fmt.Sprintf("Validation rule '%s' anyPattern[%d] succeeded.", rule.Name, idx) diff --git a/pkg/engine/variables/validatevariables.go b/pkg/engine/variables/validatevariables.go deleted file mode 100644 index 478564d708..0000000000 --- a/pkg/engine/variables/validatevariables.go +++ /dev/null @@ -1,82 +0,0 @@ -package variables - -// // ValidateVariables validates if referenced path is present -// // return empty string if all paths are valid, otherwise return invalid path -// func ValidateVariables(ctx context.EvalInterface, pattern interface{}) string { -// var pathsNotPresent []string -// variableList := extractVariables(pattern) -// for _, variable := range variableList { -// if len(variable) == 2 { -// varName := variable[0] -// varValue := variable[1] -// glog.V(3).Infof("validating variable %s", varName) -// val, err := ctx.Query(varValue) -// if err == nil && val == nil { -// // path is not present, returns nil interface -// pathsNotPresent = append(pathsNotPresent, varValue) -// } -// } -// } - -// if len(pathsNotPresent) != 0 { -// return strings.Join(pathsNotPresent, ";") -// } -// return "" -// } - -// // extractVariables extracts variables in the pattern -// func extractVariables(pattern interface{}) [][]string { -// switch typedPattern := pattern.(type) { -// case map[string]interface{}: -// return extractMap(typedPattern) -// case []interface{}: -// return extractArray(typedPattern) -// case string: -// return extractValue(typedPattern) -// default: -// fmt.Printf("variable type %T", typedPattern) -// return nil -// } -// } - -// func extractMap(patternMap map[string]interface{}) [][]string { -// var variableList [][]string - -// for _, patternElement := range patternMap { -// if vars := extractVariables(patternElement); vars != nil { -// variableList = append(variableList, vars...) -// } -// } -// return variableList -// } - -// func extractArray(patternList []interface{}) [][]string { -// var variableList [][]string - -// for _, patternElement := range patternList { -// if vars := extractVariables(patternElement); vars != nil { -// variableList = append(variableList, vars...) -// } -// } -// return variableList -// } - -// func extractValue(valuePattern string) [][]string { -// operatorVariable := getOperator(valuePattern) -// variable := valuePattern[len(operatorVariable):] -// return extractValueVariable(variable) -// } - -// // returns multiple variable match groups -// func extractValueVariable(valuePattern string) [][]string { -// variableRegex := regexp.MustCompile(variableRegex) -// groups := variableRegex.FindAllStringSubmatch(valuePattern, -1) -// if len(groups) == 0 { -// // no variables -// return nil -// } -// // group[*] <- all the matches -// // group[*][0] <- group match -// // group[*][1] <- group capture value -// return groups -// } diff --git a/pkg/generate/generate.go b/pkg/generate/generate.go index 06346cb042..cd9ab1b2fd 100644 --- a/pkg/generate/generate.go +++ b/pkg/generate/generate.go @@ -300,7 +300,7 @@ const ( func checkResource(newResourceSpec interface{}, resource *unstructured.Unstructured) error { // check if the resource spec if a subset of the resource - if path, err := validate.ValidateResourceWithPattern1(resource.Object, newResourceSpec); err != nil { + if path, err := validate.ValidateResourceWithPattern(resource.Object, newResourceSpec); err != nil { glog.V(4).Infof("Failed to match the resource at path %s: err %v", path, err) return err }