Files
warewulf/internal/pkg/node/util.go
Christian Goll 60dc8f6251 enable grub boot for all nodes
Signed-off-by: Christian Goll <cgoll@suse.com>
2024-01-17 18:02:04 -07:00

64 lines
1.3 KiB
Go

package node
import (
"errors"
"net"
"strings"
)
/*
get node by its hardware/MAC address, return error otherwise
*/
func (config *NodeYaml) FindByHwaddr(hwa string) (NodeInfo, error) {
if _, err := net.ParseMAC(hwa); err != nil {
return NodeInfo{}, errors.New("invalid hardware address: " + hwa)
}
var ret NodeInfo
n, _ := config.FindAllNodes()
for _, node := range n {
for _, dev := range node.NetDevs {
if strings.EqualFold(dev.Hwaddr.Get(), hwa) {
return node, nil
}
}
}
return ret, errors.New("No nodes found with HW Addr: " + hwa)
}
/*
get node by its ip address, return error otherwise
*/
func (config *NodeYaml) FindByIpaddr(ipaddr string) (NodeInfo, error) {
if addr := net.ParseIP(ipaddr); addr == nil {
return NodeInfo{}, errors.New("invalid IP:" + ipaddr)
} else {
ipaddr = addr.String()
}
var ret NodeInfo
n, _ := config.FindAllNodes()
for _, node := range n {
for _, dev := range node.NetDevs {
if dev.Ipaddr.Get() == ipaddr {
return node, nil
}
}
}
return ret, errors.New("No nodes found with IP Addr: " + ipaddr)
}
// Return just the node list as string slice
func (config *NodeYaml) NodeList() []string {
ret := make([]string, len(config.Nodes))
for key := range config.Nodes {
ret = append(ret, key)
}
return ret
}