aboutsummaryrefslogtreecommitdiff
path: root/middleware/kubernetes/nametemplate/nametemplate.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/kubernetes/nametemplate/nametemplate.go')
-rw-r--r--middleware/kubernetes/nametemplate/nametemplate.go25
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