Changed generate functions to return config as bytes

This commit is contained in:
David J. Allen 2024-04-11 12:44:32 -06:00
parent 977ddf8a79
commit 80c9eb29a6
No known key found for this signature in database
GPG key ID: 717C593FF60A2ACC
2 changed files with 9 additions and 7 deletions

View file

@ -1,7 +1,7 @@
package generator package generator
import ( import (
"os" "bytes"
"fmt" "fmt"
@ -26,13 +26,13 @@ func (g *Generator) GenerateDNS(config *configurator.Config) {
// TODO: print generated config file to STDOUT // TODO: print generated config file to STDOUT
} }
func (g *Generator) GenerateDHCP(config *configurator.Config, eths []configurator.EthernetInterface) error { func (g *Generator) GenerateDHCP(config *configurator.Config, eths []configurator.EthernetInterface) ([]byte, error) {
// generate file using gonja template // generate file using gonja template
path := config.TemplatePaths[g.Template] path := config.TemplatePaths[g.Template]
fmt.Printf("path: %s\neth count: %v\n", path, len(eths)) fmt.Printf("path: %s\neth count: %v\n", path, len(eths))
t, err := gonja.FromFile(path) t, err := gonja.FromFile(path)
if err != nil { if err != nil {
return fmt.Errorf("failed to read template from file: %v", err) return nil, fmt.Errorf("failed to read template from file: %v", err)
} }
template := "# ========== GENERATED BY OCHAMI CONFIGURATOR ==========\n" template := "# ========== GENERATED BY OCHAMI CONFIGURATOR ==========\n"
for _, eth := range eths { for _, eth := range eths {
@ -46,9 +46,10 @@ func (g *Generator) GenerateDHCP(config *configurator.Config, eths []configurato
data := exec.NewContext(map[string]any{ data := exec.NewContext(map[string]any{
"hosts": template, "hosts": template,
}) })
if err = t.Execute(os.Stdout, data); err != nil { b := bytes.Buffer{}
return fmt.Errorf("failed to execute: %v", err) if err = t.Execute(&b, data); err != nil {
return nil, fmt.Errorf("failed to execute: %v", err)
} }
return nil return b.Bytes(), nil
} }

View file

@ -86,12 +86,13 @@ func (s *Server) Start(config *configurator.Config) error {
} }
// generate a new config from that data // generate a new config from that data
err = g.GenerateDHCP(config, eths) b, err := g.GenerateDHCP(config, eths)
if err != nil { if err != nil {
logrus.Errorf("failed to generate DHCP: %v", err) logrus.Errorf("failed to generate DHCP: %v", err)
w.Write([]byte("An error has occurred.")) w.Write([]byte("An error has occurred."))
return return
} }
w.Write(b)
} }
}) })
r.HandleFunc("/templates", func(w http.ResponseWriter, r *http.Request) { r.HandleFunc("/templates", func(w http.ResponseWriter, r *http.Request) {