diff options
Diffstat (limited to 'middleware/kubernetes/nametemplate/nametemplate.go')
-rw-r--r-- | middleware/kubernetes/nametemplate/nametemplate.go | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/middleware/kubernetes/nametemplate/nametemplate.go b/middleware/kubernetes/nametemplate/nametemplate.go index c2af686cd..5a34ae4ad 100644 --- a/middleware/kubernetes/nametemplate/nametemplate.go +++ b/middleware/kubernetes/nametemplate/nametemplate.go @@ -37,6 +37,11 @@ var types = []string{ "pod", } +var requiredSymbols = []string{ + "namespace", + "service", +} + // TODO: Validate that provided NameTemplate string only contains: // * valid, known symbols, or // * static strings @@ -90,6 +95,12 @@ func (t *NameTemplate) SetTemplate(s string) error { } } + if err == nil && !t.IsValid() { + err = errors.New("Record name template does not pass NameTemplate validation") + log.Printf("[debug] %v\n", err) + return err + } + return err } @@ -157,6 +168,20 @@ func (t *NameTemplate) GetRecordNameFromNameValues(values NameValues) string { return strings.Join(recordName, ".") } +func (t *NameTemplate) IsValid() bool { + result := true + + // Ensure that all requiredSymbols are found in NameTemplate + for _, symbol := range requiredSymbols { + if _, ok := t.Element[symbol]; !ok { + result = false + break + } + } + + return result +} + type NameValues struct { ServiceName string Namespace string |