profile and node commands and DB all working as expected now
This commit is contained in:
@@ -10,6 +10,8 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
const ConfigFile = "/etc/warewulf/nodes.conf"
|
||||
|
||||
func New() (nodeYaml, error) {
|
||||
var ret nodeYaml
|
||||
|
||||
@@ -20,28 +22,33 @@ func New() (nodeYaml, error) {
|
||||
return ret, err
|
||||
}
|
||||
|
||||
wwlog.Printf(wwlog.DEBUG, "Unmarshaling the node configuration\n")
|
||||
err = yaml.Unmarshal(data, &ret)
|
||||
if err != nil {
|
||||
return ret, err
|
||||
}
|
||||
|
||||
wwlog.Printf(wwlog.DEBUG, "Returning node object\n")
|
||||
|
||||
return ret, nil
|
||||
}
|
||||
|
||||
func (self *nodeYaml) FindAllNodes() ([]NodeInfo, error) {
|
||||
var ret []NodeInfo
|
||||
|
||||
wwlog.Printf(wwlog.DEBUG, "Finding all nodes...\n")
|
||||
for nodename, node := range self.Nodes {
|
||||
var n NodeInfo
|
||||
|
||||
wwlog.Printf(wwlog.DEBUG, "In node loop: %s\n", nodename)
|
||||
n.NetDevs = make(map[string]*NetDevEntry)
|
||||
n.SystemOverlay.Set("default")
|
||||
n.RuntimeOverlay.Set("default")
|
||||
n.Ipxe.Set("default")
|
||||
n.SystemOverlay.SetDefault("default")
|
||||
n.RuntimeOverlay.SetDefault("default")
|
||||
n.Ipxe.SetDefault("default")
|
||||
|
||||
fullname := strings.SplitN(nodename, ".", 2)
|
||||
if len(fullname) > 1 {
|
||||
n.DomainName.Set(fullname[1])
|
||||
n.DomainName.SetDefault(fullname[1])
|
||||
}
|
||||
|
||||
if len(node.Profiles) == 0 {
|
||||
@@ -106,6 +113,7 @@ func (self *nodeYaml) FindAllNodes() ([]NodeInfo, error) {
|
||||
var netdev NetDevEntry
|
||||
n.NetDevs[devname] = &netdev
|
||||
}
|
||||
wwlog.Printf(wwlog.DEBUG, "Updating profile (%s) netdev: %s\n", p, devname)
|
||||
|
||||
n.NetDevs[devname].Ipaddr.SetAlt(netdev.Ipaddr, pstring)
|
||||
n.NetDevs[devname].Netmask.SetAlt(netdev.Netmask, pstring)
|
||||
@@ -193,6 +201,7 @@ func (self *nodeYaml) FindAllProfiles() ([]NodeInfo, error) {
|
||||
|
||||
for name, profile := range self.NodeProfiles {
|
||||
var p NodeInfo
|
||||
p.NetDevs = make(map[string]*NetDevEntry)
|
||||
|
||||
p.Id.Set(name)
|
||||
p.Comment.Set(profile.Comment)
|
||||
@@ -212,6 +221,8 @@ func (self *nodeYaml) FindAllProfiles() ([]NodeInfo, error) {
|
||||
p.NetDevs[devname] = &netdev
|
||||
}
|
||||
|
||||
wwlog.Printf(wwlog.DEBUG, "Updating profile netdev: %s\n", devname)
|
||||
|
||||
p.NetDevs[devname].Ipaddr.Set(netdev.Ipaddr)
|
||||
p.NetDevs[devname].Netmask.Set(netdev.Netmask)
|
||||
p.NetDevs[devname].Hwaddr.Set(netdev.Hwaddr)
|
||||
|
||||
@@ -20,19 +20,19 @@ type NodeConf struct {
|
||||
Comment string `yaml:"comment,omitempty"`
|
||||
Disabled bool `yaml:"disabled,omitempty"`
|
||||
// Hostname string `yaml:"hostname,omitempty"`
|
||||
DomainName string `yaml:"domain name,omitempty"`
|
||||
Vnfs string `yaml:"vnfs,omitempty"`
|
||||
Ipxe string `yaml:"ipxe template,omitempty"`
|
||||
KernelVersion string `yaml:"kernel version,omitempty"`
|
||||
KernelArgs string `yaml:"kernel args,omitempty"`
|
||||
IpmiUserName string `yaml:"ipmi username,omitempty"`
|
||||
IpmiPassword string `yaml:"ipmi password,omitempty"`
|
||||
IpmiIpaddr string `yaml:"ipmi ipaddr,omitempty"`
|
||||
IpmiNetmask string `yaml:"ipmi netmask,omitempty"`
|
||||
RuntimeOverlay string `yaml:"runtime overlay files,omitempty"`
|
||||
SystemOverlay string `yaml:"system overlay files,omitempty"`
|
||||
Profiles []string `yaml:"profiles,omitempty"`
|
||||
NetDevs map[string]*NetDevs
|
||||
DomainName string `yaml:"domain name,omitempty"`
|
||||
Vnfs string `yaml:"vnfs,omitempty"`
|
||||
Ipxe string `yaml:"ipxe template,omitempty"`
|
||||
KernelVersion string `yaml:"kernel version,omitempty"`
|
||||
KernelArgs string `yaml:"kernel args,omitempty"`
|
||||
IpmiUserName string `yaml:"ipmi username,omitempty"`
|
||||
IpmiPassword string `yaml:"ipmi password,omitempty"`
|
||||
IpmiIpaddr string `yaml:"ipmi ipaddr,omitempty"`
|
||||
IpmiNetmask string `yaml:"ipmi netmask,omitempty"`
|
||||
RuntimeOverlay string `yaml:"runtime overlay files,omitempty"`
|
||||
SystemOverlay string `yaml:"system overlay files,omitempty"`
|
||||
Profiles []string `yaml:"profiles,omitempty"`
|
||||
NetDevs map[string]*NetDevs `yaml:"network devices,omitempty"`
|
||||
}
|
||||
|
||||
type ControllerConf struct {
|
||||
@@ -93,6 +93,7 @@ type Entry struct {
|
||||
bool bool
|
||||
altbool bool
|
||||
from string
|
||||
def string
|
||||
}
|
||||
|
||||
type NodeInfo struct {
|
||||
@@ -126,8 +127,6 @@ type NetDevEntry struct {
|
||||
Gateway Entry `yaml:"gateway,omitempty"`
|
||||
}
|
||||
|
||||
const ConfigFile = "/etc/warewulf/nodes.conf"
|
||||
|
||||
func init() {
|
||||
//TODO: Check to make sure nodes.conf is found
|
||||
if util.IsFile(ConfigFile) == false {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package node
|
||||
|
||||
import "strings"
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
/**********
|
||||
*
|
||||
@@ -44,6 +46,16 @@ func (self *Entry) SetAltB(val bool, from string) {
|
||||
return
|
||||
}
|
||||
|
||||
func (self *Entry) SetDefault(val string) {
|
||||
if val == "" {
|
||||
return
|
||||
}
|
||||
|
||||
self.def = val
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
/**********
|
||||
*
|
||||
* Gets
|
||||
@@ -57,6 +69,9 @@ func (self *Entry) Get() string {
|
||||
if self.altvalue != "" {
|
||||
return self.altvalue
|
||||
}
|
||||
if self.def != "" {
|
||||
return self.def
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
@@ -85,11 +100,17 @@ func (self *Entry) Print() string {
|
||||
if self.altvalue != "" {
|
||||
return self.altvalue
|
||||
}
|
||||
if self.def != "" {
|
||||
return self.def
|
||||
}
|
||||
return "--"
|
||||
}
|
||||
|
||||
func (self *Entry) Source() string {
|
||||
if self.from == "" {
|
||||
if self.value != "" && self.altvalue != "" {
|
||||
return "OVERRIDDEN"
|
||||
//return fmt.Sprintf("(%s)", self.from)
|
||||
} else if self.from == "" {
|
||||
return "--"
|
||||
}
|
||||
return self.from
|
||||
|
||||
@@ -66,12 +66,11 @@ func (self *nodeYaml) NodeUpdate(node NodeInfo) error {
|
||||
self.Nodes[nodeID].RuntimeOverlay = node.RuntimeOverlay.GetReal()
|
||||
self.Nodes[nodeID].SystemOverlay = node.SystemOverlay.GetReal()
|
||||
self.Nodes[nodeID].Profiles = node.Profiles
|
||||
self.Nodes[nodeID].NetDevs = make(map[string]*NetDevs)
|
||||
|
||||
for devname, netdev := range node.NetDevs {
|
||||
if _, ok := self.Nodes[nodeID].NetDevs[devname]; !ok {
|
||||
var netdev NetDevs
|
||||
self.Nodes[nodeID].NetDevs[devname] = &netdev
|
||||
}
|
||||
var newdev NetDevs
|
||||
self.Nodes[nodeID].NetDevs[devname] = &newdev
|
||||
|
||||
self.Nodes[nodeID].NetDevs[devname].Ipaddr = netdev.Ipaddr.GetReal()
|
||||
self.Nodes[nodeID].NetDevs[devname].Netmask = netdev.Netmask.GetReal()
|
||||
@@ -137,12 +136,11 @@ func (self *nodeYaml) ProfileUpdate(profile NodeInfo) error {
|
||||
self.NodeProfiles[profileID].RuntimeOverlay = profile.RuntimeOverlay.GetReal()
|
||||
self.NodeProfiles[profileID].SystemOverlay = profile.SystemOverlay.GetReal()
|
||||
self.NodeProfiles[profileID].Profiles = profile.Profiles
|
||||
self.NodeProfiles[profileID].NetDevs = make(map[string]*NetDevs)
|
||||
|
||||
for devname, netdev := range profile.NetDevs {
|
||||
if _, ok := self.NodeProfiles[profileID].NetDevs[devname]; !ok {
|
||||
var netdev NetDevs
|
||||
self.NodeProfiles[profileID].NetDevs[devname] = &netdev
|
||||
}
|
||||
var newdev NetDevs
|
||||
self.NodeProfiles[profileID].NetDevs[devname] = &newdev
|
||||
|
||||
self.NodeProfiles[profileID].NetDevs[devname].Ipaddr = netdev.Ipaddr.GetReal()
|
||||
self.NodeProfiles[profileID].NetDevs[devname].Netmask = netdev.Netmask.GetReal()
|
||||
|
||||
Reference in New Issue
Block a user