Updates for text/template subsystem integration

This commit is contained in:
Gregory Kurtzer
2020-11-11 00:09:06 -08:00
parent 189618a111
commit e8c4d41b97
21 changed files with 61 additions and 23 deletions

View File

@@ -16,6 +16,15 @@ import (
"text/template"
)
func fileInclude(path string) string {
wwlog.Printf(wwlog.DEBUG, "Including file into template: %s\n", path)
content, err := ioutil.ReadFile(path)
if err != nil {
wwlog.Printf(wwlog.ERROR, "Template include: %s\n", err)
}
return strings.TrimSuffix(string(content), "\n")
}
func Build(nodeList []assets.NodeInfo, force bool) error {
wwlog.Printf(wwlog.INFO, "Building Runtime Overlays:\n")
wwlog.SetIndent(4)
@@ -78,7 +87,7 @@ func Build(nodeList []assets.NodeInfo, force bool) error {
destFile := strings.TrimSuffix(location, ".ww")
tmpl, err := template.ParseGlob(path.Join(OverlayDir, destFile) + ".ww*")
tmpl, err := template.New(path.Base(location)).Funcs(template.FuncMap{"Include": fileInclude}).ParseGlob(path.Join(OverlayDir, destFile + ".ww*"))
if err != nil {
wwlog.Printf(wwlog.ERROR, "%s\n", err)
return err

View File

@@ -16,6 +16,15 @@ import (
"text/template"
)
func fileInclude(path string) string {
wwlog.Printf(wwlog.DEBUG, "Including file into template: %s\n", path)
content, err := ioutil.ReadFile(path)
if err != nil {
wwlog.Printf(wwlog.ERROR, "Template include: %s\n", err)
}
return strings.TrimSuffix(string(content), "\n")
}
func Build(nodeList []assets.NodeInfo, force bool) error {
wwlog.Printf(wwlog.INFO, "Building System Overlays:\n")
wwlog.SetIndent(4)
@@ -78,7 +87,7 @@ func Build(nodeList []assets.NodeInfo, force bool) error {
destFile := strings.TrimSuffix(location, ".ww")
tmpl, err := template.ParseGlob(path.Join(OverlayDir, destFile) + ".ww*")
tmpl, err := template.New(path.Base(location)).Funcs(template.FuncMap{"include": fileInclude}).ParseGlob(path.Join(OverlayDir, destFile + ".ww*"))
if err != nil {
wwlog.Printf(wwlog.ERROR, "%s\n", err)
return err

View File

@@ -12,7 +12,7 @@ var buildForce bool
func Build(nodeList []assets.NodeInfo, force bool) (error) {
set := make(map[string]int)
wwlog.Printf(wwlog.INFO, "Importing VNFS Images:\n")
wwlog.Printf(wwlog.INFO, "Building and Importing VNFS Images:\n")
wwlog.SetIndent(4)
buildForce = force

View File

@@ -2,9 +2,9 @@ package assets
import (
"fmt"
"github.com/hpcng/warewulf/internal/pkg/vnfs"
"gopkg.in/yaml.v2"
"io/ioutil"
"path"
"strings"
// "os"
@@ -140,7 +140,8 @@ func FindAllNodes() ([]NodeInfo, error) {
if strings.HasPrefix(n.Vnfs, "docker://") {
//TODO: This is a kludge and shouldn't be done here. We need to go back
// and do this from a "vnfs" interface or package
n.VnfsDir = LocalStateDir + "/oci/vnfs/name/" + path.Base(n.Vnfs)
v := vnfs.New(n.Vnfs)
n.VnfsDir = v.Root()
} else {
n.VnfsDir = n.Vnfs
}

View File

@@ -0,0 +1,21 @@
package assets
type WWTemplate struct {
GroupName string
HostName string
DomainName string
Fqdn string
Vnfs string
VnfsDir string
Ipxe string
SystemOverlay string
RuntimeOverlay string
KernelVersion string
NetDevs map[string]netDevs
}
func (t WWTemplate) Import(file string) {
}

View File

@@ -41,7 +41,6 @@ func (self *VnfsObject) NameClean() string {
if strings.HasPrefix(self.SourcePath, "/") {
return path.Base(self.SourcePath)
}
uri := strings.Split(self.SourcePath, "://")
return strings.ReplaceAll(uri[1], "/", "_")