1
0
Fork 0

Added support for templates to file provider

This commit is contained in:
Alex Antonov 2018-03-22 11:14:04 -04:00 committed by Traefiker Bot
parent d2e84a700f
commit 1a411b658b
5 changed files with 59 additions and 28 deletions

View file

@ -50,8 +50,17 @@ func (p *BaseProvider) MatchConstraints(tags []string) (bool, *types.Constraint)
return true, nil
}
// GetConfiguration return the provider configuration using templating
func (p *BaseProvider) GetConfiguration(defaultTemplateFile string, funcMap template.FuncMap, templateObjects interface{}) (*types.Configuration, error) {
// GetConfiguration return the provider configuration from default template (file or content) or overrode template file
func (p *BaseProvider) GetConfiguration(defaultTemplate string, funcMap template.FuncMap, templateObjects interface{}) (*types.Configuration, error) {
tmplContent, err := p.getTemplateContent(defaultTemplate)
if err != nil {
return nil, err
}
return p.CreateConfiguration(tmplContent, funcMap, templateObjects)
}
// CreateConfiguration create a provider configuration from content using templating
func (p *BaseProvider) CreateConfiguration(tmplContent string, funcMap template.FuncMap, templateObjects interface{}) (*types.Configuration, error) {
configuration := new(types.Configuration)
var defaultFuncMap = sprig.TxtFuncMap()
@ -65,12 +74,7 @@ func (p *BaseProvider) GetConfiguration(defaultTemplateFile string, funcMap temp
tmpl := template.New(p.Filename).Funcs(defaultFuncMap)
tmplContent, err := p.getTemplateContent(defaultTemplateFile)
if err != nil {
return nil, err
}
_, err = tmpl.Parse(tmplContent)
_, err := tmpl.Parse(tmplContent)
if err != nil {
return nil, err
}
@ -83,7 +87,8 @@ func (p *BaseProvider) GetConfiguration(defaultTemplateFile string, funcMap temp
var renderedTemplate = buffer.String()
if p.DebugLogGeneratedTemplate {
log.Debugf("Rendering results of %s:\n%s", defaultTemplateFile, renderedTemplate)
log.Debugf("Template content: %s", tmplContent)
log.Debugf("Rendering results: %s", renderedTemplate)
}
if _, err := toml.Decode(renderedTemplate, configuration); err != nil {
return nil, err