in alertmanager/client/template_client.go [129:151]
func (t *templateClient) AddTemplate(filename, tmplName, tmplText string) error {
t.fileLocks.Lock(filename)
defer t.fileLocks.Unlock(filename)
tmplFile, err := t.readTmplFile(filename)
if err != nil {
return err
}
tmplMap := getTemplatesByName(tmplFile)
if tmplMap[tmplName] != nil {
return fmt.Errorf("template %s already exists", tmplName)
}
newTmpl := &template.Template{}
newTmplBody, err := newTmpl.Parse(tmplText)
if err != nil {
return fmt.Errorf("error parsing template: %v", err)
}
tmplMap[tmplName] = newTmplBody
return t.writeTmplFile(filename, writeTmplMapText(tmplMap))
}