moved TemplateStruct init to own function
This commit is contained in:
@@ -1,8 +1,14 @@
|
||||
package overlay
|
||||
|
||||
import (
|
||||
"net"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/hpcng/warewulf/internal/pkg/node"
|
||||
"github.com/hpcng/warewulf/internal/pkg/warewulfconf"
|
||||
"github.com/hpcng/warewulf/internal/pkg/wwlog"
|
||||
)
|
||||
|
||||
/*
|
||||
@@ -38,3 +44,105 @@ type TemplateStruct struct {
|
||||
Nfs warewulfconf.NfsConf
|
||||
Warewulf warewulfconf.WarewulfConf
|
||||
}
|
||||
|
||||
/*
|
||||
Initialize an TemplateStruct with the given node.NodeInfo
|
||||
*/
|
||||
func InitStruct(nodeInfo node.NodeInfo) TemplateStruct {
|
||||
var tstruct TemplateStruct
|
||||
controller, err := warewulfconf.New()
|
||||
if err != nil {
|
||||
wwlog.Printf(wwlog.ERROR, "%s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
nodeDB, err := node.New()
|
||||
if err != nil {
|
||||
wwlog.Printf(wwlog.ERROR, "%s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
allNodes, err := nodeDB.FindAllNodes()
|
||||
if err != nil {
|
||||
wwlog.Printf(wwlog.ERROR, "%s\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
tstruct.Kernel = new(node.KernelConf)
|
||||
tstruct.Ipmi = new(node.IpmiConf)
|
||||
tstruct.Id = nodeInfo.Id.Get()
|
||||
tstruct.Hostname = nodeInfo.Id.Get()
|
||||
tstruct.Id = nodeInfo.Id.Get()
|
||||
tstruct.Hostname = nodeInfo.Id.Get()
|
||||
tstruct.ClusterName = nodeInfo.ClusterName.Get()
|
||||
tstruct.Container = nodeInfo.ContainerName.Get()
|
||||
tstruct.Kernel.Version = nodeInfo.Kernel.Override.Get()
|
||||
tstruct.Kernel.Override = nodeInfo.Kernel.Override.Get()
|
||||
tstruct.Kernel.Args = nodeInfo.Kernel.Args.Get()
|
||||
tstruct.Init = nodeInfo.Init.Get()
|
||||
tstruct.Root = nodeInfo.Root.Get()
|
||||
tstruct.Ipmi.Ipaddr = nodeInfo.Ipmi.Ipaddr.Get()
|
||||
tstruct.Ipmi.Netmask = nodeInfo.Ipmi.Netmask.Get()
|
||||
tstruct.Ipmi.Port = nodeInfo.Ipmi.Port.Get()
|
||||
tstruct.Ipmi.Gateway = nodeInfo.Ipmi.Gateway.Get()
|
||||
tstruct.Ipmi.UserName = nodeInfo.Ipmi.UserName.Get()
|
||||
tstruct.Ipmi.Password = nodeInfo.Ipmi.Password.Get()
|
||||
tstruct.Ipmi.Interface = nodeInfo.Ipmi.Interface.Get()
|
||||
tstruct.Ipmi.Write = nodeInfo.Ipmi.Write.Get()
|
||||
tstruct.RuntimeOverlay = nodeInfo.RuntimeOverlay.Print()
|
||||
tstruct.SystemOverlay = nodeInfo.SystemOverlay.Print()
|
||||
tstruct.NetDevs = make(map[string]*node.NetDevs)
|
||||
tstruct.Keys = make(map[string]string)
|
||||
tstruct.Tags = make(map[string]string)
|
||||
for devname, netdev := range nodeInfo.NetDevs {
|
||||
var nd node.NetDevs
|
||||
tstruct.NetDevs[devname] = &nd
|
||||
tstruct.NetDevs[devname].Device = netdev.Device.Get()
|
||||
tstruct.NetDevs[devname].Hwaddr = netdev.Hwaddr.Get()
|
||||
tstruct.NetDevs[devname].Ipaddr = netdev.Ipaddr.Get()
|
||||
tstruct.NetDevs[devname].Netmask = netdev.Netmask.Get()
|
||||
tstruct.NetDevs[devname].Gateway = netdev.Gateway.Get()
|
||||
tstruct.NetDevs[devname].Type = netdev.Type.Get()
|
||||
tstruct.NetDevs[devname].OnBoot = netdev.OnBoot.Get()
|
||||
tstruct.NetDevs[devname].Primary = netdev.Primary.Get()
|
||||
mask := net.IPMask(net.ParseIP(netdev.Netmask.Get()).To4())
|
||||
ipaddr := net.ParseIP(netdev.Ipaddr.Get()).To4()
|
||||
netaddr := net.IPNet{IP: ipaddr, Mask: mask}
|
||||
netPrefix, _ := net.IPMask(net.ParseIP(netdev.Netmask.Get()).To4()).Size()
|
||||
tstruct.NetDevs[devname].Prefix = strconv.Itoa(netPrefix)
|
||||
tstruct.NetDevs[devname].IpCIDR = netaddr.String()
|
||||
tstruct.NetDevs[devname].Ipaddr6 = netdev.Ipaddr6.Get()
|
||||
tstruct.NetDevs[devname].Tags = make(map[string]string)
|
||||
for key, value := range netdev.Tags {
|
||||
tstruct.NetDevs[devname].Tags[key] = value.Get()
|
||||
}
|
||||
}
|
||||
// Backwards compatibility for templates using "Keys"
|
||||
for keyname, key := range nodeInfo.Tags {
|
||||
tstruct.Keys[keyname] = key.Get()
|
||||
}
|
||||
for keyname, key := range nodeInfo.Tags {
|
||||
tstruct.Tags[keyname] = key.Get()
|
||||
}
|
||||
tstruct.AllNodes = allNodes
|
||||
tstruct.Nfs = *controller.Nfs
|
||||
tstruct.Dhcp = *controller.Dhcp
|
||||
tstruct.Warewulf = *controller.Warewulf
|
||||
tstruct.Ipaddr = controller.Ipaddr
|
||||
tstruct.Ipaddr6 = controller.Ipaddr6
|
||||
tstruct.Netmask = controller.Netmask
|
||||
tstruct.Network = controller.Network
|
||||
netaddrStruct := net.IPNet{IP: net.ParseIP(controller.Network), Mask: net.IPMask(net.ParseIP(controller.Netmask))}
|
||||
tstruct.NetworkCIDR = netaddrStruct.String()
|
||||
if controller.Ipaddr6 != "" {
|
||||
tstruct.Ipv6 = true
|
||||
} else {
|
||||
tstruct.Ipv6 = false
|
||||
}
|
||||
hostname, _ := os.Hostname()
|
||||
tstruct.BuildHost = hostname
|
||||
dt := time.Now()
|
||||
tstruct.BuildTime = dt.Format("01-02-2006 15:04:05 MST")
|
||||
tstruct.BuildTimeUnix = strconv.FormatInt(dt.Unix(), 10)
|
||||
|
||||
return tstruct
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user