diff --git a/controllers/nginx/pkg/cmd/controller/nginx.go b/controllers/nginx/pkg/cmd/controller/nginx.go index c6e8475ff..458f9f6c3 100644 --- a/controllers/nginx/pkg/cmd/controller/nginx.go +++ b/controllers/nginx/pkg/cmd/controller/nginx.go @@ -349,7 +349,7 @@ func (n *NGINXController) OnUpdate(ingressCfg ingress.Configuration) ([]byte, er } } - return n.t.Write(config.TemplateConfig{ + content, err := n.t.Write(config.TemplateConfig{ ProxySetHeaders: setHeaders, MaxOpenFiles: maxOpenFiles, BacklogSize: sysctlSomaxconn(), @@ -361,7 +361,16 @@ func (n *NGINXController) OnUpdate(ingressCfg ingress.Configuration) ([]byte, er HealthzURI: ngxHealthPath, CustomErrors: len(cfg.CustomHTTPErrors) > 0, Cfg: cfg, - }, n.testTemplate) + }) + if err != nil { + return nil, err + } + + if err := n.testTemplate(content); err != nil { + return nil, err + } + + return content, nil } // Name returns the healthcheck name diff --git a/controllers/nginx/pkg/template/template.go b/controllers/nginx/pkg/template/template.go index 280b4860c..a083814f5 100644 --- a/controllers/nginx/pkg/template/template.go +++ b/controllers/nginx/pkg/template/template.go @@ -78,7 +78,7 @@ func (t *Template) Close() { // Write populates a buffer using a template with NGINX configuration // and the servers and upstreams created by Ingress rules -func (t *Template) Write(conf config.TemplateConfig, isValidTemplate func([]byte) error) ([]byte, error) { +func (t *Template) Write(conf config.TemplateConfig) ([]byte, error) { defer t.tmplBuf.Reset() defer t.outCmdBuf.Reset() @@ -111,22 +111,10 @@ func (t *Template) Write(conf config.TemplateConfig, isValidTemplate func([]byte cmd.Stdout = t.outCmdBuf if err := cmd.Run(); err != nil { glog.Warningf("unexpected error cleaning template: %v", err) - content := t.tmplBuf.Bytes() - err = isValidTemplate(content) - if err != nil { - return nil, err - } - - return content, nil + return t.tmplBuf.Bytes(), nil } - content := t.outCmdBuf.Bytes() - err = isValidTemplate(content) - if err != nil { - return nil, err - } - - return content, nil + return t.outCmdBuf.Bytes(), nil } var ( diff --git a/controllers/nginx/pkg/template/template_test.go b/controllers/nginx/pkg/template/template_test.go index fde02e3ef..bd026f746 100644 --- a/controllers/nginx/pkg/template/template_test.go +++ b/controllers/nginx/pkg/template/template_test.go @@ -132,7 +132,7 @@ func TestTemplateWithData(t *testing.T) { t.Errorf("invalid NGINX template: %v", err) } - _, err = ngxTpl.Write(dat, func(b []byte) error { return nil }) + _, err = ngxTpl.Write(dat) if err != nil { t.Errorf("invalid NGINX template: %v", err) } @@ -166,6 +166,6 @@ func BenchmarkTemplateWithData(b *testing.B) { } for i := 0; i < b.N; i++ { - ngxTpl.Write(dat, func(b []byte) error { return nil }) + ngxTpl.Write(dat) } }