Trim spaces from annotations that can contain multiple lines

This commit is contained in:
Manuel Alejandro de Brito Fontes 2019-05-07 07:41:53 -04:00
parent b8fb09d7b3
commit 23e7423477
No known key found for this signature in database
GPG key ID: 786136016A8BA02A
2 changed files with 24 additions and 5 deletions

View file

@ -19,6 +19,7 @@ package parser
import ( import (
"fmt" "fmt"
"strconv" "strconv"
"strings"
extensions "k8s.io/api/extensions/v1beta1" extensions "k8s.io/api/extensions/v1beta1"
@ -52,11 +53,12 @@ func (a ingAnnotations) parseBool(name string) (bool, error) {
func (a ingAnnotations) parseString(name string) (string, error) { func (a ingAnnotations) parseString(name string) (string, error) {
val, ok := a[name] val, ok := a[name]
if ok { if ok {
if len(val) == 0 { s := normalizeString(val)
if len(s) == 0 {
return "", errors.NewInvalidAnnotationContent(name, val) return "", errors.NewInvalidAnnotationContent(name, val)
} }
return val, nil return s, nil
} }
return "", errors.ErrMissingAnnotations return "", errors.ErrMissingAnnotations
} }
@ -119,3 +121,12 @@ func GetIntAnnotation(name string, ing *extensions.Ingress) (int, error) {
func GetAnnotationWithPrefix(suffix string) string { func GetAnnotationWithPrefix(suffix string) string {
return fmt.Sprintf("%v/%v", AnnotationsPrefix, suffix) return fmt.Sprintf("%v/%v", AnnotationsPrefix, suffix)
} }
func normalizeString(input string) string {
trimmedContent := []string{}
for _, line := range strings.Split(input, "\n") {
trimmedContent = append(trimmedContent, strings.TrimSpace(line))
}
return strings.Join(trimmedContent, "\n")
}

View file

@ -92,6 +92,14 @@ func TestGetStringAnnotation(t *testing.T) {
{"valid - A", "string", "A ", "A", false}, {"valid - A", "string", "A ", "A", false},
{"valid - B", "string", " B", "B", false}, {"valid - B", "string", " B", "B", false},
{"empty", "string", " ", "", true}, {"empty", "string", " ", "", true},
{"valid multiline", "string", `
rewrite (?i)/arcgis/rest/services/Utilities/Geometry/GeometryServer(.*)$ /arcgis/rest/services/Utilities/Geometry/GeometryServer$1 break;
rewrite (?i)/arcgis/services/Utilities/Geometry/GeometryServer(.*)$ /arcgis/services/Utilities/Geometry/GeometryServer$1 break;
`, `
rewrite (?i)/arcgis/rest/services/Utilities/Geometry/GeometryServer(.*)$ /arcgis/rest/services/Utilities/Geometry/GeometryServer$1 break;
rewrite (?i)/arcgis/services/Utilities/Geometry/GeometryServer(.*)$ /arcgis/services/Utilities/Geometry/GeometryServer$1 break;
`,
false},
} }
data := map[string]string{} data := map[string]string{}