diff --git a/Makefile b/Makefile index 910d20e9..dc9e508d 100644 --- a/Makefile +++ b/Makefile @@ -90,7 +90,7 @@ files: all install -d -m 0755 $(DESTDIR)/usr/share/man/man1 test -f $(DESTDIR)/etc/warewulf/warewulf.conf || install -m 644 etc/warewulf.conf $(DESTDIR)/etc/warewulf/ test -f $(DESTDIR)/etc/warewulf/hosts.tmpl || install -m 644 etc/hosts.tmpl $(DESTDIR)/etc/warewulf/ - test -f $(DESTDIR)/etc/warewulf/nodes.conf || install -m 640 etc/nodes.conf $(DESTDIR)/etc/warewulf/ + test -f $(DESTDIR)/etc/warewulf/nodes.conf || install -m 644 etc/nodes.conf $(DESTDIR)/etc/warewulf/ cp -r etc/dhcp $(DESTDIR)/etc/warewulf/ cp -r etc/ipxe $(DESTDIR)/etc/warewulf/ cp -r overlays $(DESTDIR)/var/warewulf/ @@ -165,6 +165,7 @@ clean: rm -rf bash_completion.d rm -f man_page rm -rf man_pages + rm -rf vendor install: files install_wwclient diff --git a/etc/ipxe/big_image.ipxe b/etc/ipxe/big_image.ipxe new file mode 100644 index 00000000..a3f9bda0 --- /dev/null +++ b/etc/ipxe/big_image.ipxe @@ -0,0 +1,26 @@ +#!ipxe + +echo +echo ================================================================================ +echo Warewulf v4 now booting: {{.Fqdn}} +echo +echo Container: {{.ContainerName}} +echo Kernel: {{.KernelVersion}} +echo KernelArgs: {{.KernelArgs}} +echo + +set base http://{{.Ipaddr}}:{{.Port}} + +kernel --name kernel ${base}/kernel/{{.Hwaddr}} || goto reboot +imgextract --name container ${base}/container/{{.Hwaddr}} || goto reboot +imgextract --name kmods ${base}/kmods/{{.Hwaddr}} || goto reboot +imgextract --name system ${base}/overlay-system/{{.Hwaddr}} || goto reboot + +boot kernel initrd=container initrd=kmods initrd=system {{.KernelArgs}} || goto reboot + +:reboot +echo +echo There was an error, rebooting in 15s... +echo +sleep 15 +reboot diff --git a/internal/app/wwctl/profile/set/root.go b/internal/app/wwctl/profile/set/root.go index d1b25256..39a9630f 100644 --- a/internal/app/wwctl/profile/set/root.go +++ b/internal/app/wwctl/profile/set/root.go @@ -122,7 +122,6 @@ func init() { baseCmd.PersistentFlags().StringVarP(&SetHwaddr, "hwaddr", "H", "", "Set the node's network device HW address") baseCmd.PersistentFlags().StringVarP(&SetType, "type", "T", "", "Set the node's network device type") baseCmd.PersistentFlags().StringVar(&SetNetOnBoot, "onboot", "", "Enable/disable device (yes/no)") - baseCmd.PersistentFlags().StringVar(&SetNetDefault, "default", "", "Enable/disable device as default (yes/no)") baseCmd.PersistentFlags().BoolVar(&SetNetDevDel, "netdel", false, "Delete the node's network device") diff --git a/internal/pkg/node/constructors.go b/internal/pkg/node/constructors.go index baeaa65d..f3bd9753 100644 --- a/internal/pkg/node/constructors.go +++ b/internal/pkg/node/constructors.go @@ -87,7 +87,11 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { n.NetDevs[devname] = &netdev } - n.NetDevs[devname].Device.Set(netdev.Device) + if netdev.Device != "" { + n.NetDevs[devname].Device.Set(netdev.Device) + } else { + n.NetDevs[devname].Device.Set(devname) + } n.NetDevs[devname].Ipaddr.Set(netdev.Ipaddr) n.NetDevs[devname].Netmask.Set(netdev.Netmask) n.NetDevs[devname].Hwaddr.Set(netdev.Hwaddr) diff --git a/internal/pkg/node/methods.go b/internal/pkg/node/methods.go index bc5de819..50160b29 100644 --- a/internal/pkg/node/methods.go +++ b/internal/pkg/node/methods.go @@ -10,16 +10,20 @@ import "regexp" func FilterByName(set []NodeInfo, searchList []string) []NodeInfo { var ret []NodeInfo + unique := make(map[string]NodeInfo) if len(searchList) > 0 { for _, search := range searchList { for _, entry := range set { b, _ := regexp.MatchString("^"+search+"$", entry.Id.Get()) if b { - ret = append(ret, entry) + unique[entry.Id.Get()] = entry } } } + for _, n := range unique { + ret = append(ret, n) + } } else { ret = set }