diff --git a/etc/nodes.conf b/etc/nodes.conf index 3999a8cd..6cc8a52a 100644 --- a/etc/nodes.conf +++ b/etc/nodes.conf @@ -1,3 +1,4 @@ +WW_INTERNAL: 43 nodeprofiles: default: comment: This profile is automatically included for each node diff --git a/etc/warewulf.conf b/etc/warewulf.conf index 787d8188..ffd9aa5c 100644 --- a/etc/warewulf.conf +++ b/etc/warewulf.conf @@ -1,3 +1,4 @@ +WW_INTERNAL: 43 ipaddr: 192.168.200.1 netmask: 255.255.255.0 warewulf: diff --git a/internal/app/wwctl/kernel/delete/main.go b/internal/app/wwctl/kernel/delete/main.go index ab2efe70..d79adbf7 100644 --- a/internal/app/wwctl/kernel/delete/main.go +++ b/internal/app/wwctl/kernel/delete/main.go @@ -23,7 +23,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error { ARG_LOOP: for _, arg := range args { for _, n := range nodes { - if n.KernelOverride.Get() == arg { + if n.Kernel.Override.Get() == arg { wwlog.Printf(wwlog.ERROR, "Kernel is configured for nodes, skipping: %s\n", arg) continue ARG_LOOP } diff --git a/internal/app/wwctl/kernel/imprt/main.go b/internal/app/wwctl/kernel/imprt/main.go index d9513eff..f37df3d7 100644 --- a/internal/app/wwctl/kernel/imprt/main.go +++ b/internal/app/wwctl/kernel/imprt/main.go @@ -70,7 +70,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error { wwlog.Printf(wwlog.DEBUG, "Looking for profile default: %s\n", profile.Id.Get()) if profile.Id.Get() == "default" { wwlog.Printf(wwlog.DEBUG, "Found profile default, setting kernel version to: %s\n", args[0]) - profile.KernelOverride.Set(args[0]) + profile.Kernel.Override.Set(args[0]) err := nodeDB.ProfileUpdate(profile) if err != nil { return errors.Wrap(err, "failed to update node profile") diff --git a/internal/app/wwctl/kernel/list/main.go b/internal/app/wwctl/kernel/list/main.go index 628a63b3..8a97cfe3 100644 --- a/internal/app/wwctl/kernel/list/main.go +++ b/internal/app/wwctl/kernel/list/main.go @@ -23,7 +23,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error { nodemap := make(map[string]int) for _, n := range nodes { - nodemap[n.KernelOverride.Get()]++ + nodemap[n.Kernel.Override.Get()]++ } fmt.Printf("%-35s %-25s %-6s\n", "KERNEL NAME", "KERNEL VERSION", "NODES") diff --git a/internal/app/wwctl/node/console/power.go b/internal/app/wwctl/node/console/power.go index aa9fcfa7..af36e188 100644 --- a/internal/app/wwctl/node/console/power.go +++ b/internal/app/wwctl/node/console/power.go @@ -43,19 +43,19 @@ func CobraRunE(cmd *cobra.Command, args []string) error { for _, node := range nodes { - if node.IpmiIpaddr.Get() == "" { + if node.Ipmi.Ipaddr.Get() == "" { wwlog.Printf(wwlog.ERROR, "%s: No IPMI IP address\n", node.Id.Get()) continue } ipmiCmd := power.IPMI{ NodeName: node.Id.Get(), - HostName: node.IpmiIpaddr.Get(), - Port: node.IpmiPort.Get(), - User: node.IpmiUserName.Get(), - Password: node.IpmiPassword.Get(), + HostName: node.Ipmi.Ipaddr.Get(), + Port: node.Ipmi.Port.Get(), + User: node.Ipmi.UserName.Get(), + Password: node.Ipmi.Password.Get(), AuthType: "MD5", - Interface: node.IpmiInterface.Get(), + Interface: node.Ipmi.Interface.Get(), } err := ipmiCmd.Console() diff --git a/internal/app/wwctl/node/list/main.go b/internal/app/wwctl/node/list/main.go index bb661b4e..0d4ca49f 100644 --- a/internal/app/wwctl/node/list/main.go +++ b/internal/app/wwctl/node/list/main.go @@ -41,8 +41,8 @@ func CobraRunE(cmd *cobra.Command, args []string) error { fmt.Printf("%-20s %-18s %-12s %t\n", node.Id.Get(), "Discoverable", node.Discoverable.Source(), node.Discoverable.PrintB()) fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "Container", node.ContainerName.Source(), node.ContainerName.Print()) - fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "KernelOverride", node.KernelOverride.Source(), node.KernelOverride.Print()) - fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "KernelArgs", node.KernelArgs.Source(), node.KernelArgs.Print()) + fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "KernelOverride", node.Kernel.Override.Source(), node.Kernel.Override.Print()) + fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "KernelArgs", node.Kernel.Args.Source(), node.Kernel.Args.Print()) fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "SystemOverlay", node.SystemOverlay.Source(), node.SystemOverlay.Print()) fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "RuntimeOverlay", node.RuntimeOverlay.Source(), node.RuntimeOverlay.Print()) fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "Ipxe", node.Ipxe.Source(), node.Ipxe.Print()) @@ -50,12 +50,12 @@ func CobraRunE(cmd *cobra.Command, args []string) error { fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "Root", node.Root.Source(), node.Root.Print()) fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "AssetKey", node.AssetKey.Source(), node.AssetKey.Print()) - fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiIpaddr", node.IpmiIpaddr.Source(), node.IpmiIpaddr.Print()) - fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiNetmask", node.IpmiNetmask.Source(), node.IpmiNetmask.Print()) - fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiPort", node.IpmiPort.Source(), node.IpmiPort.Print()) - fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiGateway", node.IpmiGateway.Source(), node.IpmiGateway.Print()) - fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiUserName", node.IpmiUserName.Source(), node.IpmiUserName.Print()) - fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiInterface", node.IpmiInterface.Source(), node.IpmiInterface.Print()) + fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiIpaddr", node.Ipmi.Ipaddr.Source(), node.Ipmi.Ipaddr.Print()) + fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiNetmask", node.Ipmi.Netmask.Source(), node.Ipmi.Netmask.Print()) + fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiPort", node.Ipmi.Port.Source(), node.Ipmi.Port.Print()) + fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiGateway", node.Ipmi.Gateway.Source(), node.Ipmi.Gateway.Print()) + fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiUserName", node.Ipmi.UserName.Source(), node.Ipmi.UserName.Print()) + fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "IpmiInterface", node.Ipmi.Interface.Source(), node.Ipmi.Interface.Print()) for keyname, key := range node.Tags { fmt.Printf("%-20s %-18s %-12s %s\n", node.Id.Get(), "Tag["+keyname+"]", key.Source(), key.Print()) @@ -95,7 +95,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error { fmt.Println(strings.Repeat("=", 108)) for _, node := range node.FilterByName(nodes, args) { - fmt.Printf("%-22s %-16s %-10s %-20s %-20s %-14s\n", node.Id.Get(), node.IpmiIpaddr.Print(), node.IpmiPort.Print(), node.IpmiUserName.Print(), node.IpmiPassword.Print(), node.IpmiInterface.Print()) + fmt.Printf("%-22s %-16s %-10s %-20s %-20s %-14s\n", node.Id.Get(), node.Ipmi.Ipaddr.Print(), node.Ipmi.Port.Print(), node.Ipmi.UserName.Print(), node.Ipmi.Password.Print(), node.Ipmi.Interface.Print()) } } else if ShowLong { @@ -103,7 +103,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error { fmt.Println(strings.Repeat("=", 120)) for _, node := range node.FilterByName(nodes, args) { - fmt.Printf("%-22s %-26s %-35s %s\n", node.Id.Get(), node.KernelOverride.Print(), node.ContainerName.Print(), node.SystemOverlay.Print()+"/"+node.RuntimeOverlay.Print()) + fmt.Printf("%-22s %-26s %-35s %s\n", node.Id.Get(), node.Kernel.Override.Print(), node.ContainerName.Print(), node.SystemOverlay.Print()+"/"+node.RuntimeOverlay.Print()) } } else { diff --git a/internal/app/wwctl/node/sensors/power.go b/internal/app/wwctl/node/sensors/power.go index a2c0766e..4c29331d 100644 --- a/internal/app/wwctl/node/sensors/power.go +++ b/internal/app/wwctl/node/sensors/power.go @@ -47,24 +47,24 @@ func CobraRunE(cmd *cobra.Command, args []string) error { results := make(chan power.IPMI, jobcount) for _, node := range nodes { - if node.IpmiIpaddr.Get() == "" { + if node.Ipmi.Ipaddr.Get() == "" { wwlog.Printf(wwlog.ERROR, "%s: No IPMI IP address\n", node.Id.Get()) continue } var ipmiInterface = "lan" - if node.IpmiInterface.Get() != "" { - ipmiInterface = node.IpmiInterface.Get() + if node.Ipmi.Interface.Get() != "" { + ipmiInterface = node.Ipmi.Interface.Get() } var ipmiPort = "623" - if node.IpmiPort.Get() != "" { - ipmiPort = node.IpmiPort.Get() + if node.Ipmi.Port.Get() != "" { + ipmiPort = node.Ipmi.Port.Get() } ipmiCmd := power.IPMI{ NodeName: node.Id.Get(), - HostName: node.IpmiIpaddr.Get(), + HostName: node.Ipmi.Ipaddr.Get(), Port: ipmiPort, - User: node.IpmiUserName.Get(), - Password: node.IpmiPassword.Get(), + User: node.Ipmi.UserName.Get(), + Password: node.Ipmi.Password.Get(), Interface: ipmiInterface, AuthType: "MD5", } diff --git a/internal/app/wwctl/node/set/main.go b/internal/app/wwctl/node/set/main.go index cdd0a360..1ded9259 100644 --- a/internal/app/wwctl/node/set/main.go +++ b/internal/app/wwctl/node/set/main.go @@ -72,12 +72,12 @@ func CobraRunE(cmd *cobra.Command, args []string) error { if SetKernelOverride != "" { wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting kernel override to: %s\n", n.Id.Get(), SetKernelOverride) - n.KernelOverride.Set(SetKernelOverride) + n.Kernel.Override.Set(SetKernelOverride) } if SetKernelArgs != "" { wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting kernel args to: %s\n", n.Id.Get(), SetKernelArgs) - n.KernelArgs.Set(SetKernelArgs) + n.Kernel.Args.Set(SetKernelArgs) } if SetClusterName != "" { @@ -103,45 +103,45 @@ func CobraRunE(cmd *cobra.Command, args []string) error { if SetIpmiIpaddr != "" { NewIpaddr := util.IncrementIPv4(SetIpmiIpaddr, count) wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting IPMI IP address to: %s\n", n.Id.Get(), NewIpaddr) - n.IpmiIpaddr.Set(NewIpaddr) + n.Ipmi.Ipaddr.Set(NewIpaddr) } if SetIpmiNetmask != "" { wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting IPMI netmask to: %s\n", n.Id.Get(), SetIpmiNetmask) - n.IpmiNetmask.Set(SetIpmiNetmask) + n.Ipmi.Netmask.Set(SetIpmiNetmask) } if SetIpmiPort != "" { wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting IPMI port to: %s\n", n.Id.Get(), SetIpmiPort) - n.IpmiPort.Set(SetIpmiPort) + n.Ipmi.Port.Set(SetIpmiPort) } if SetIpmiGateway != "" { wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting IPMI gateway to: %s\n", n.Id.Get(), SetIpmiGateway) - n.IpmiGateway.Set(SetIpmiGateway) + n.Ipmi.Gateway.Set(SetIpmiGateway) } if SetIpmiUsername != "" { wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting IPMI IP username to: %s\n", n.Id.Get(), SetIpmiUsername) - n.IpmiUserName.Set(SetIpmiUsername) + n.Ipmi.UserName.Set(SetIpmiUsername) } if SetIpmiPassword != "" { wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting IPMI IP password to: %s\n", n.Id.Get(), SetIpmiPassword) - n.IpmiPassword.Set(SetIpmiPassword) + n.Ipmi.Password.Set(SetIpmiPassword) } if SetIpmiInterface != "" { wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting IPMI IP interface to: %s\n", n.Id.Get(), SetIpmiInterface) - n.IpmiInterface.Set(SetIpmiInterface) + n.Ipmi.Interface.Set(SetIpmiInterface) } if SetIpmiWrite == "yes" || SetNetOnBoot == "y" || SetNetOnBoot == "1" || SetNetOnBoot == "true" { wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting Ipmiwrite to %s\n", n.Id.Get(), SetIpmiWrite) - n.IpmiWrite.SetB(true) + n.Ipmi.Write.SetB(true) } else { wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting Ipmiwrite to %s\n", n.Id.Get(), SetIpmiWrite) - n.IpmiWrite.SetB(false) + n.Ipmi.Write.SetB(false) } if SetDiscoverable { diff --git a/internal/app/wwctl/power/cycle/power.go b/internal/app/wwctl/power/cycle/power.go index 728548f8..2792cf69 100644 --- a/internal/app/wwctl/power/cycle/power.go +++ b/internal/app/wwctl/power/cycle/power.go @@ -46,24 +46,24 @@ func CobraRunE(cmd *cobra.Command, args []string) error { for _, node := range nodes { - if node.IpmiIpaddr.Get() == "" { + if node.Ipmi.Ipaddr.Get() == "" { wwlog.Printf(wwlog.ERROR, "%s: No IPMI IP address\n", node.Id.Get()) continue } var ipmiInterface = "lan" - if node.IpmiInterface.Get() != "" { - ipmiInterface = node.IpmiInterface.Get() + if node.Ipmi.Interface.Get() != "" { + ipmiInterface = node.Ipmi.Interface.Get() } var ipmiPort = "623" - if node.IpmiPort.Get() != "" { - ipmiPort = node.IpmiPort.Get() + if node.Ipmi.Port.Get() != "" { + ipmiPort = node.Ipmi.Port.Get() } ipmiCmd := power.IPMI{ NodeName: node.Id.Get(), - HostName: node.IpmiIpaddr.Get(), + HostName: node.Ipmi.Ipaddr.Get(), Port: ipmiPort, - User: node.IpmiUserName.Get(), - Password: node.IpmiPassword.Get(), + User: node.Ipmi.UserName.Get(), + Password: node.Ipmi.Password.Get(), Interface: ipmiInterface, AuthType: "MD5", } diff --git a/internal/app/wwctl/power/off/power.go b/internal/app/wwctl/power/off/power.go index 2afe8276..ad0ffd19 100644 --- a/internal/app/wwctl/power/off/power.go +++ b/internal/app/wwctl/power/off/power.go @@ -46,24 +46,24 @@ func CobraRunE(cmd *cobra.Command, args []string) error { for _, node := range nodes { - if node.IpmiIpaddr.Get() == "" { + if node.Ipmi.Ipaddr.Get() == "" { wwlog.Printf(wwlog.ERROR, "%s: No IPMI IP address\n", node.Id.Get()) continue } var ipmiInterface = "lan" - if node.IpmiInterface.Get() != "" { - ipmiInterface = node.IpmiInterface.Get() + if node.Ipmi.Interface.Get() != "" { + ipmiInterface = node.Ipmi.Interface.Get() } var ipmiPort = "623" - if node.IpmiPort.Get() != "" { - ipmiPort = node.IpmiPort.Get() + if node.Ipmi.Port.Get() != "" { + ipmiPort = node.Ipmi.Port.Get() } ipmiCmd := power.IPMI{ NodeName: node.Id.Get(), - HostName: node.IpmiIpaddr.Get(), + HostName: node.Ipmi.Ipaddr.Get(), Port: ipmiPort, - User: node.IpmiUserName.Get(), - Password: node.IpmiPassword.Get(), + User: node.Ipmi.UserName.Get(), + Password: node.Ipmi.Password.Get(), Interface: ipmiInterface, AuthType: "MD5", } diff --git a/internal/app/wwctl/power/on/power.go b/internal/app/wwctl/power/on/power.go index a92bf50b..35e77551 100644 --- a/internal/app/wwctl/power/on/power.go +++ b/internal/app/wwctl/power/on/power.go @@ -46,24 +46,24 @@ func CobraRunE(cmd *cobra.Command, args []string) error { for _, node := range nodes { - if node.IpmiIpaddr.Get() == "" { + if node.Ipmi.Ipaddr.Get() == "" { wwlog.Printf(wwlog.ERROR, "%s: No IPMI IP address\n", node.Id.Get()) continue } var ipmiInterface = "lan" - if node.IpmiInterface.Get() != "" { - ipmiInterface = node.IpmiInterface.Get() + if node.Ipmi.Interface.Get() != "" { + ipmiInterface = node.Ipmi.Interface.Get() } var ipmiPort = "623" - if node.IpmiPort.Get() != "" { - ipmiPort = node.IpmiPort.Get() + if node.Ipmi.Port.Get() != "" { + ipmiPort = node.Ipmi.Port.Get() } ipmiCmd := power.IPMI{ NodeName: node.Id.Get(), - HostName: node.IpmiIpaddr.Get(), + HostName: node.Ipmi.Ipaddr.Get(), Port: ipmiPort, - User: node.IpmiUserName.Get(), - Password: node.IpmiPassword.Get(), + User: node.Ipmi.UserName.Get(), + Password: node.Ipmi.Password.Get(), Interface: ipmiInterface, AuthType: "MD5", } diff --git a/internal/app/wwctl/power/reset/power.go b/internal/app/wwctl/power/reset/power.go index 3126a301..ef68bf2d 100644 --- a/internal/app/wwctl/power/reset/power.go +++ b/internal/app/wwctl/power/reset/power.go @@ -46,24 +46,24 @@ func CobraRunE(cmd *cobra.Command, args []string) error { for _, node := range nodes { - if node.IpmiIpaddr.Get() == "" { + if node.Ipmi.Ipaddr.Get() == "" { wwlog.Printf(wwlog.ERROR, "%s: No IPMI IP address\n", node.Id.Get()) continue } var ipmiInterface = "lan" - if node.IpmiInterface.Get() != "" { - ipmiInterface = node.IpmiInterface.Get() + if node.Ipmi.Interface.Get() != "" { + ipmiInterface = node.Ipmi.Interface.Get() } var ipmiPort = "623" - if node.IpmiPort.Get() != "" { - ipmiPort = node.IpmiPort.Get() + if node.Ipmi.Port.Get() != "" { + ipmiPort = node.Ipmi.Port.Get() } ipmiCmd := power.IPMI{ NodeName: node.Id.Get(), - HostName: node.IpmiIpaddr.Get(), + HostName: node.Ipmi.Ipaddr.Get(), Port: ipmiPort, - User: node.IpmiUserName.Get(), - Password: node.IpmiPassword.Get(), + User: node.Ipmi.UserName.Get(), + Password: node.Ipmi.Password.Get(), Interface: ipmiInterface, AuthType: "MD5", } diff --git a/internal/app/wwctl/power/soft/power.go b/internal/app/wwctl/power/soft/power.go index 7771cbab..6f19cc7a 100644 --- a/internal/app/wwctl/power/soft/power.go +++ b/internal/app/wwctl/power/soft/power.go @@ -46,24 +46,24 @@ func CobraRunE(cmd *cobra.Command, args []string) error { for _, node := range nodes { - if node.IpmiIpaddr.Get() == "" { + if node.Ipmi.Ipaddr.Get() == "" { wwlog.Printf(wwlog.ERROR, "%s: No IPMI IP address\n", node.Id.Get()) continue } var ipmiInterface = "lan" - if node.IpmiInterface.Get() != "" { - ipmiInterface = node.IpmiInterface.Get() + if node.Ipmi.Interface.Get() != "" { + ipmiInterface = node.Ipmi.Interface.Get() } var ipmiPort = "623" - if node.IpmiPort.Get() != "" { - ipmiPort = node.IpmiPort.Get() + if node.Ipmi.Port.Get() != "" { + ipmiPort = node.Ipmi.Port.Get() } ipmiCmd := power.IPMI{ NodeName: node.Id.Get(), - HostName: node.IpmiIpaddr.Get(), + HostName: node.Ipmi.Ipaddr.Get(), Port: ipmiPort, - User: node.IpmiUserName.Get(), - Password: node.IpmiPassword.Get(), + User: node.Ipmi.UserName.Get(), + Password: node.Ipmi.Password.Get(), Interface: ipmiInterface, AuthType: "MD5", } diff --git a/internal/app/wwctl/power/status/power.go b/internal/app/wwctl/power/status/power.go index 9d67cd17..d97d1b25 100644 --- a/internal/app/wwctl/power/status/power.go +++ b/internal/app/wwctl/power/status/power.go @@ -46,24 +46,24 @@ func CobraRunE(cmd *cobra.Command, args []string) error { for _, node := range nodes { - if node.IpmiIpaddr.Get() == "" { + if node.Ipmi.Ipaddr.Get() == "" { wwlog.Printf(wwlog.ERROR, "%s: No IPMI IP address\n", node.Id.Get()) continue } var ipmiInterface = "lan" - if node.IpmiInterface.Get() != "" { - ipmiInterface = node.IpmiInterface.Get() + if node.Ipmi.Interface.Get() != "" { + ipmiInterface = node.Ipmi.Interface.Get() } var ipmiPort = "623" - if node.IpmiPort.Get() != "" { - ipmiPort = node.IpmiPort.Get() + if node.Ipmi.Port.Get() != "" { + ipmiPort = node.Ipmi.Port.Get() } ipmiCmd := power.IPMI{ NodeName: node.Id.Get(), - HostName: node.IpmiIpaddr.Get(), + HostName: node.Ipmi.Ipaddr.Get(), Port: ipmiPort, - User: node.IpmiUserName.Get(), - Password: node.IpmiPassword.Get(), + User: node.Ipmi.UserName.Get(), + Password: node.Ipmi.Password.Get(), Interface: ipmiInterface, AuthType: "MD5", } diff --git a/internal/app/wwctl/profile/list/main.go b/internal/app/wwctl/profile/list/main.go index 03219706..b013ae01 100644 --- a/internal/app/wwctl/profile/list/main.go +++ b/internal/app/wwctl/profile/list/main.go @@ -33,8 +33,8 @@ func CobraRunE(cmd *cobra.Command, args []string) error { fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "Cluster", profile.ClusterName.Print()) fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "Container", profile.ContainerName.Print()) - fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "KernelOverride", profile.KernelOverride.Print()) - fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "KernelArgs", profile.KernelArgs.Print()) + fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "KernelOverride", profile.Kernel.Override.Print()) + fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "KernelArgs", profile.Kernel.Args.Print()) fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "Init", profile.Init.Print()) fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "Root", profile.Root.Print()) fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "AssetKey", profile.AssetKey.Print()) @@ -42,11 +42,11 @@ func CobraRunE(cmd *cobra.Command, args []string) error { fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "SystemOverlay", profile.SystemOverlay.Print()) fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "RuntimeOverlay", profile.RuntimeOverlay.Print()) fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "Ipxe", profile.Ipxe.Print()) - fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiNetmask", profile.IpmiNetmask.Print()) - fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiPort", profile.IpmiPort.Print()) - fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiGateway", profile.IpmiGateway.Print()) - fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiUserName", profile.IpmiUserName.Print()) - fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiInterface", profile.IpmiInterface.Print()) + fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiNetmask", profile.Ipmi.Netmask.Print()) + fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiPort", profile.Ipmi.Port.Print()) + fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiGateway", profile.Ipmi.Gateway.Print()) + fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiUserName", profile.Ipmi.UserName.Print()) + fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "IpmiInterface", profile.Ipmi.Interface.Print()) for keyname, key := range profile.Tags { fmt.Printf("%-20s %-18s %s\n", profile.Id.Get(), "Tag["+keyname+"]", key.Print()) diff --git a/internal/app/wwctl/profile/set/main.go b/internal/app/wwctl/profile/set/main.go index 13abf286..347d9b6f 100644 --- a/internal/app/wwctl/profile/set/main.go +++ b/internal/app/wwctl/profile/set/main.go @@ -77,12 +77,12 @@ func CobraRunE(cmd *cobra.Command, args []string) error { if SetKernelOverride != "" { wwlog.Printf(wwlog.VERBOSE, "Profile: %s, Setting Kernel override version to: %s\n", p.Id.Get(), SetKernelOverride) - p.KernelOverride.Set(SetKernelOverride) + p.Kernel.Override.Set(SetKernelOverride) } if SetKernelArgs != "" { wwlog.Printf(wwlog.VERBOSE, "Profile: %s, Setting Kernel args to: %s\n", p.Id.Get(), SetKernelArgs) - p.KernelArgs.Set(SetKernelArgs) + p.Kernel.Args.Set(SetKernelArgs) } if SetIpxe != "" { @@ -102,40 +102,40 @@ func CobraRunE(cmd *cobra.Command, args []string) error { if SetIpmiNetmask != "" { wwlog.Printf(wwlog.VERBOSE, "Profile: %s, Setting IPMI netmask to: %s\n", p.Id.Get(), SetIpmiNetmask) - p.IpmiNetmask.Set(SetIpmiNetmask) + p.Ipmi.Netmask.Set(SetIpmiNetmask) } if SetIpmiPort != "" { wwlog.Printf(wwlog.VERBOSE, "Profile: %s, Setting IPMI port to: %s\n", p.Id.Get(), SetIpmiPort) - p.IpmiPort.Set(SetIpmiPort) + p.Ipmi.Port.Set(SetIpmiPort) } if SetIpmiGateway != "" { wwlog.Printf(wwlog.VERBOSE, "Profile: %s, Setting IPMI gateway to: %s\n", p.Id.Get(), SetIpmiGateway) - p.IpmiGateway.Set(SetIpmiGateway) + p.Ipmi.Gateway.Set(SetIpmiGateway) } if SetIpmiUsername != "" { wwlog.Printf(wwlog.VERBOSE, "Profile: %s, Setting IPMI username to: %s\n", p.Id.Get(), SetIpmiUsername) - p.IpmiUserName.Set(SetIpmiUsername) + p.Ipmi.UserName.Set(SetIpmiUsername) } if SetIpmiPassword != "" { wwlog.Printf(wwlog.VERBOSE, "Profile: %s, Setting IPMI password to: %s\n", p.Id.Get(), SetIpmiPassword) - p.IpmiPassword.Set(SetIpmiPassword) + p.Ipmi.Password.Set(SetIpmiPassword) } if SetIpmiInterface != "" { wwlog.Printf(wwlog.VERBOSE, "Profile: %s, Setting IPMI interface to: %s\n", p.Id.Get(), SetIpmiInterface) - p.IpmiInterface.Set(SetIpmiInterface) + p.Ipmi.Interface.Set(SetIpmiInterface) } if SetIpmiWrite == "yes" || SetNetOnBoot == "y" || SetNetOnBoot == "1" || SetNetOnBoot == "true" { wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting Ipmiwrite to %s\n", p.Id.Get(), SetIpmiWrite) - p.IpmiWrite.SetB(true) + p.Ipmi.Write.SetB(true) } else { wwlog.Printf(wwlog.VERBOSE, "Node: %s, Setting Ipmiwrite to %s\n", p.Id.Get(), SetIpmiWrite) - p.IpmiWrite.SetB(false) + p.Ipmi.Write.SetB(false) } if SetDiscoverable { diff --git a/internal/pkg/buildconfig/defaults.go b/internal/pkg/buildconfig/defaults.go index fc714a3d..375778f2 100644 --- a/internal/pkg/buildconfig/defaults.go +++ b/internal/pkg/buildconfig/defaults.go @@ -2,6 +2,8 @@ package buildconfig import "github.com/hpcng/warewulf/internal/pkg/wwlog" +const WWVer = 43 + var ( bindir string = "UNDEF" sysconfdir string = "UNDEF" diff --git a/internal/pkg/node/constructors.go b/internal/pkg/node/constructors.go index db353df7..9e63f4c1 100644 --- a/internal/pkg/node/constructors.go +++ b/internal/pkg/node/constructors.go @@ -67,7 +67,7 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { n.Ipxe.SetDefault("default") n.Init.SetDefault("/sbin/init") n.Root.SetDefault("initramfs") - n.KernelArgs.SetDefault("quiet crashkernel=no vga=791") + n.Kernel.Args.SetDefault("quiet crashkernel=no vga=791") fullname := strings.SplitN(nodename, ".", 2) if len(fullname) > 1 { @@ -83,28 +83,28 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { n.Id.Set(nodename) n.Comment.Set(node.Comment) n.ContainerName.Set(node.ContainerName) - n.KernelArgs.Set(node.KernelArgs) + n.Kernel.Args.Set(node.Kernel.Args) n.ClusterName.Set(node.ClusterName) n.Ipxe.Set(node.Ipxe) n.Init.Set(node.Init) - n.IpmiIpaddr.Set(node.IpmiIpaddr) - n.IpmiNetmask.Set(node.IpmiNetmask) - n.IpmiPort.Set(node.IpmiPort) - n.IpmiGateway.Set(node.IpmiGateway) - n.IpmiUserName.Set(node.IpmiUserName) - n.IpmiPassword.Set(node.IpmiPassword) - n.IpmiInterface.Set(node.IpmiInterface) - n.IpmiWrite.SetB(node.IpmiWrite) + n.Ipmi.Ipaddr.Set(node.Ipmi.Ipaddr) + n.Ipmi.Netmask.Set(node.Ipmi.Netmask) + n.Ipmi.Port.Set(node.Ipmi.Port) + n.Ipmi.Gateway.Set(node.Ipmi.Gateway) + n.Ipmi.UserName.Set(node.Ipmi.UserName) + n.Ipmi.Password.Set(node.Ipmi.Password) + n.Ipmi.Interface.Set(node.Ipmi.Interface) + n.Ipmi.Write.SetB(node.Ipmi.Write) n.SystemOverlay.SetSlice(node.SystemOverlay) n.RuntimeOverlay.SetSlice(node.RuntimeOverlay) n.Root.Set(node.Root) n.AssetKey.Set(node.AssetKey) n.Discoverable.Set(node.Discoverable) - if node.KernelOverride != "" { - n.KernelOverride.Set(node.KernelOverride) - } else if node.KernelVersion != "" { - n.KernelOverride.Set(node.KernelVersion) + if node.Kernel.Override != "" { + n.Kernel.Override.Set(node.Kernel.Override) + } else if node.Kernel.Version != "" { + n.Kernel.Override.Set(node.Kernel.Version) } for devname, netdev := range node.NetDevs { @@ -170,27 +170,27 @@ func (config *nodeYaml) FindAllNodes() ([]NodeInfo, error) { n.Comment.SetAlt(config.NodeProfiles[p].Comment, p) n.ClusterName.SetAlt(config.NodeProfiles[p].ClusterName, p) n.ContainerName.SetAlt(config.NodeProfiles[p].ContainerName, p) - n.KernelArgs.SetAlt(config.NodeProfiles[p].KernelArgs, p) + n.Kernel.Args.SetAlt(config.NodeProfiles[p].Kernel.Args, p) n.Ipxe.SetAlt(config.NodeProfiles[p].Ipxe, p) n.Init.SetAlt(config.NodeProfiles[p].Init, p) - n.IpmiIpaddr.SetAlt(config.NodeProfiles[p].IpmiIpaddr, p) - n.IpmiNetmask.SetAlt(config.NodeProfiles[p].IpmiNetmask, p) - n.IpmiPort.SetAlt(config.NodeProfiles[p].IpmiPort, p) - n.IpmiGateway.SetAlt(config.NodeProfiles[p].IpmiGateway, p) - n.IpmiUserName.SetAlt(config.NodeProfiles[p].IpmiUserName, p) - n.IpmiPassword.SetAlt(config.NodeProfiles[p].IpmiPassword, p) - n.IpmiInterface.SetAlt(config.NodeProfiles[p].IpmiInterface, p) - n.IpmiWrite.SetB(config.NodeProfiles[p].IpmiWrite) + n.Ipmi.Ipaddr.SetAlt(config.NodeProfiles[p].Ipmi.Ipaddr, p) + n.Ipmi.Netmask.SetAlt(config.NodeProfiles[p].Ipmi.Netmask, p) + n.Ipmi.Port.SetAlt(config.NodeProfiles[p].Ipmi.Port, p) + n.Ipmi.Gateway.SetAlt(config.NodeProfiles[p].Ipmi.Gateway, p) + n.Ipmi.UserName.SetAlt(config.NodeProfiles[p].Ipmi.UserName, p) + n.Ipmi.Password.SetAlt(config.NodeProfiles[p].Ipmi.Password, p) + n.Ipmi.Interface.SetAlt(config.NodeProfiles[p].Ipmi.Interface, p) + n.Ipmi.Write.SetB(config.NodeProfiles[p].Ipmi.Write) n.SystemOverlay.SetAltSlice(config.NodeProfiles[p].SystemOverlay, p) n.RuntimeOverlay.SetAltSlice(config.NodeProfiles[p].RuntimeOverlay, p) n.Root.SetAlt(config.NodeProfiles[p].Root, p) n.AssetKey.SetAlt(config.NodeProfiles[p].AssetKey, p) n.Discoverable.SetAlt(config.NodeProfiles[p].Discoverable, p) - if config.NodeProfiles[p].KernelOverride != "" { - n.KernelOverride.SetAlt(config.NodeProfiles[p].KernelOverride, p) - } else if config.NodeProfiles[p].KernelVersion != "" { - n.KernelOverride.SetAlt(config.NodeProfiles[p].KernelVersion, p) + if config.NodeProfiles[p].Kernel.Override != "" { + n.Kernel.Override.SetAlt(config.NodeProfiles[p].Kernel.Override, p) + } else if config.NodeProfiles[p].Kernel.Version != "" { + n.Kernel.Override.SetAlt(config.NodeProfiles[p].Kernel.Version, p) } for devname, netdev := range config.NodeProfiles[p].NetDevs { @@ -260,24 +260,24 @@ func (config *nodeYaml) FindAllProfiles() ([]NodeInfo, error) { p.ContainerName.Set(profile.ContainerName) p.Ipxe.Set(profile.Ipxe) p.Init.Set(profile.Init) - p.KernelArgs.Set(profile.KernelArgs) - p.IpmiNetmask.Set(profile.IpmiNetmask) - p.IpmiPort.Set(profile.IpmiPort) - p.IpmiGateway.Set(profile.IpmiGateway) - p.IpmiUserName.Set(profile.IpmiUserName) - p.IpmiPassword.Set(profile.IpmiPassword) - p.IpmiInterface.Set(profile.IpmiInterface) - p.IpmiWrite.SetB(profile.IpmiWrite) + p.Kernel.Args.Set(profile.Kernel.Args) + p.Ipmi.Netmask.Set(profile.Ipmi.Netmask) + p.Ipmi.Port.Set(profile.Ipmi.Port) + p.Ipmi.Gateway.Set(profile.Ipmi.Gateway) + p.Ipmi.UserName.Set(profile.Ipmi.UserName) + p.Ipmi.Password.Set(profile.Ipmi.Password) + p.Ipmi.Interface.Set(profile.Ipmi.Interface) + p.Ipmi.Write.SetB(profile.Ipmi.Write) p.RuntimeOverlay.SetSlice(profile.RuntimeOverlay) p.SystemOverlay.SetSlice(profile.SystemOverlay) p.Root.Set(profile.Root) p.AssetKey.Set(profile.AssetKey) p.Discoverable.Set(profile.Discoverable) - if profile.KernelOverride != "" { - p.KernelOverride.Set(profile.KernelOverride) - } else if profile.KernelVersion != "" { - p.KernelOverride.Set(profile.KernelVersion) + if profile.Kernel.Override != "" { + p.Kernel.Override.Set(profile.Kernel.Override) + } else if profile.Kernel.Version != "" { + p.Kernel.Override.Set(profile.Kernel.Version) } for devname, netdev := range profile.NetDevs { diff --git a/internal/pkg/node/datastructure.go b/internal/pkg/node/datastructure.go index 070dc0bd..05012fd9 100644 --- a/internal/pkg/node/datastructure.go +++ b/internal/pkg/node/datastructure.go @@ -10,6 +10,7 @@ import ( ******/ type nodeYaml struct { + WWInternal int `yaml:"WW_INTERNAL"` NodeProfiles map[string]*NodeConf Nodes map[string]*NodeConf } @@ -19,19 +20,10 @@ type NodeConf struct { ClusterName string `yaml:"cluster name,omitempty"` ContainerName string `yaml:"container name,omitempty"` Ipxe string `yaml:"ipxe template,omitempty"` - KernelVersion string `yaml:"kernel version,omitempty"` - KernelOverride string `yaml:"kernel override,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"` - IpmiPort string `yaml:"ipmi port,omitempty"` - IpmiGateway string `yaml:"ipmi gateway,omitempty"` - IpmiInterface string `yaml:"ipmi interface,omitempty"` - IpmiWrite bool `yaml:"ipmi write,omitempty"` RuntimeOverlay []string `yaml:"runtime overlay,omitempty"` SystemOverlay []string `yaml:"system overlay,omitempty"` + Kernel *KernelConf `yaml:"kernel,omitempty"` + Ipmi *IpmiConf `yaml:"ipmi,omitempty"` Init string `yaml:"init,omitempty"` Root string `yaml:"root,omitempty"` AssetKey string `yaml:"asset key,omitempty"` @@ -42,6 +34,22 @@ type NodeConf struct { Keys map[string]string `yaml:"keys,omitempty"` // Reverse compatibility } +type IpmiConf struct { + UserName string `yaml:"username,omitempty"` + Password string `yaml:"password,omitempty"` + Ipaddr string `yaml:"ipaddr,omitempty"` + Netmask string `yaml:"netmask,omitempty"` + Port string `yaml:"port,omitempty"` + Gateway string `yaml:"gateway,omitempty"` + Interface string `yaml:"interface,omitempty"` + Write bool `yaml:"write,omitempty"` +} +type KernelConf struct { + Version string `yaml:"version,omitempty"` + Override string `yaml:"override,omitempty"` + Args string `yaml:"args,omitempty"` +} + type NetDevs struct { Type string `yaml:"type,omitempty"` OnBoot string `yaml:"onboot,omitempty"` @@ -78,28 +86,37 @@ type NodeInfo struct { ClusterName Entry ContainerName Entry Ipxe Entry - KernelOverride Entry - KernelArgs Entry - IpmiIpaddr Entry - IpmiNetmask Entry - IpmiPort Entry - IpmiGateway Entry - IpmiUserName Entry - IpmiPassword Entry - IpmiInterface Entry - IpmiWrite Entry RuntimeOverlay Entry SystemOverlay Entry Root Entry Discoverable Entry Init Entry //TODO: Finish adding this... AssetKey Entry + Kernel *KernelEntry + Ipmi *IpmiEntry Profiles []string GroupProfiles []string NetDevs map[string]*NetDevEntry Tags map[string]*Entry } +type IpmiEntry struct { + Ipaddr Entry + Netmask Entry + Port Entry + Gateway Entry + UserName Entry + Password Entry + Interface Entry + Write Entry +} + +type KernelEntry struct { + Version Entry + Override Entry + Args Entry +} + type NetDevEntry struct { Type Entry OnBoot Entry diff --git a/internal/pkg/node/modifiers.go b/internal/pkg/node/modifiers.go index 8137903d..933b73c6 100644 --- a/internal/pkg/node/modifiers.go +++ b/internal/pkg/node/modifiers.go @@ -60,16 +60,16 @@ func (config *nodeYaml) NodeUpdate(node NodeInfo) error { config.Nodes[nodeID].ClusterName = node.ClusterName.GetReal() config.Nodes[nodeID].Ipxe = node.Ipxe.GetReal() config.Nodes[nodeID].Init = node.Init.GetReal() - config.Nodes[nodeID].KernelOverride = node.KernelOverride.GetReal() - config.Nodes[nodeID].KernelArgs = node.KernelArgs.GetReal() - config.Nodes[nodeID].IpmiIpaddr = node.IpmiIpaddr.GetReal() - config.Nodes[nodeID].IpmiNetmask = node.IpmiNetmask.GetReal() - config.Nodes[nodeID].IpmiPort = node.IpmiPort.GetReal() - config.Nodes[nodeID].IpmiGateway = node.IpmiGateway.GetReal() - config.Nodes[nodeID].IpmiUserName = node.IpmiUserName.GetReal() - config.Nodes[nodeID].IpmiPassword = node.IpmiPassword.GetReal() - config.Nodes[nodeID].IpmiInterface = node.IpmiInterface.GetReal() - config.Nodes[nodeID].IpmiWrite = node.IpmiWrite.GetB() + config.Nodes[nodeID].Kernel.Override = node.Kernel.Override.GetReal() + config.Nodes[nodeID].Kernel.Args = node.Kernel.Args.GetReal() + config.Nodes[nodeID].Ipmi.Ipaddr = node.Ipmi.Ipaddr.GetReal() + config.Nodes[nodeID].Ipmi.Netmask = node.Ipmi.Netmask.GetReal() + config.Nodes[nodeID].Ipmi.Port = node.Ipmi.Port.GetReal() + config.Nodes[nodeID].Ipmi.Gateway = node.Ipmi.Gateway.GetReal() + config.Nodes[nodeID].Ipmi.UserName = node.Ipmi.UserName.GetReal() + config.Nodes[nodeID].Ipmi.Password = node.Ipmi.Password.GetReal() + config.Nodes[nodeID].Ipmi.Interface = node.Ipmi.Interface.GetReal() + config.Nodes[nodeID].Ipmi.Write = node.Ipmi.Write.GetB() config.Nodes[nodeID].RuntimeOverlay = node.RuntimeOverlay.GetRealSlice() config.Nodes[nodeID].SystemOverlay = node.SystemOverlay.GetRealSlice() config.Nodes[nodeID].Root = node.Root.GetReal() @@ -149,16 +149,16 @@ func (config *nodeYaml) ProfileUpdate(profile NodeInfo) error { config.NodeProfiles[profileID].Ipxe = profile.Ipxe.GetReal() config.NodeProfiles[profileID].Init = profile.Init.GetReal() config.NodeProfiles[profileID].ClusterName = profile.ClusterName.GetReal() - config.NodeProfiles[profileID].KernelOverride = profile.KernelOverride.GetReal() - config.NodeProfiles[profileID].KernelArgs = profile.KernelArgs.GetReal() - config.NodeProfiles[profileID].IpmiIpaddr = profile.IpmiIpaddr.GetReal() - config.NodeProfiles[profileID].IpmiNetmask = profile.IpmiNetmask.GetReal() - config.NodeProfiles[profileID].IpmiPort = profile.IpmiPort.GetReal() - config.NodeProfiles[profileID].IpmiGateway = profile.IpmiGateway.GetReal() - config.NodeProfiles[profileID].IpmiUserName = profile.IpmiUserName.GetReal() - config.NodeProfiles[profileID].IpmiPassword = profile.IpmiPassword.GetReal() - config.NodeProfiles[profileID].IpmiInterface = profile.IpmiInterface.GetReal() - config.NodeProfiles[profileID].IpmiWrite = profile.IpmiInterface.GetB() + config.NodeProfiles[profileID].Kernel.Override = profile.Kernel.Override.GetReal() + config.NodeProfiles[profileID].Kernel.Args = profile.Kernel.Args.GetReal() + config.NodeProfiles[profileID].Ipmi.Ipaddr = profile.Ipmi.Ipaddr.GetReal() + config.NodeProfiles[profileID].Ipmi.Netmask = profile.Ipmi.Netmask.GetReal() + config.NodeProfiles[profileID].Ipmi.Port = profile.Ipmi.Port.GetReal() + config.NodeProfiles[profileID].Ipmi.Gateway = profile.Ipmi.Gateway.GetReal() + config.NodeProfiles[profileID].Ipmi.UserName = profile.Ipmi.UserName.GetReal() + config.NodeProfiles[profileID].Ipmi.Password = profile.Ipmi.Password.GetReal() + config.NodeProfiles[profileID].Ipmi.Interface = profile.Ipmi.Interface.GetReal() + config.NodeProfiles[profileID].Ipmi.Write = profile.Ipmi.Interface.GetB() config.NodeProfiles[profileID].RuntimeOverlay = profile.RuntimeOverlay.GetRealSlice() config.NodeProfiles[profileID].SystemOverlay = profile.SystemOverlay.GetRealSlice() config.NodeProfiles[profileID].Root = profile.Root.GetReal() diff --git a/internal/pkg/overlay/datastructure.go b/internal/pkg/overlay/datastructure.go index a8bfb276..59523760 100644 --- a/internal/pkg/overlay/datastructure.go +++ b/internal/pkg/overlay/datastructure.go @@ -14,19 +14,10 @@ type TemplateStruct struct { Hostname string ClusterName string Container string - KernelVersion string - KernelOverride string - KernelArgs string + Kernel *node.KernelConf Init string Root string - IpmiIpaddr string - IpmiNetmask string - IpmiPort string - IpmiGateway string - IpmiUserName string - IpmiPassword string - IpmiInterface string - IpmiWrite string + Ipmi *node.IpmiConf RuntimeOverlay string SystemOverlay string NetDevs map[string]*node.NetDevs diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index 9bddc23f..0cee8f04 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -218,19 +218,19 @@ func BuildOverlayIndir(nodeInfo node.NodeInfo, overlayNames []string, outputDir tstruct.Hostname = nodeInfo.Id.Get() tstruct.ClusterName = nodeInfo.ClusterName.Get() tstruct.Container = nodeInfo.ContainerName.Get() - tstruct.KernelVersion = nodeInfo.KernelOverride.Get() - tstruct.KernelOverride = nodeInfo.KernelOverride.Get() - tstruct.KernelArgs = nodeInfo.KernelArgs.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.IpmiIpaddr = nodeInfo.IpmiIpaddr.Get() - tstruct.IpmiNetmask = nodeInfo.IpmiNetmask.Get() - tstruct.IpmiPort = nodeInfo.IpmiPort.Get() - tstruct.IpmiGateway = nodeInfo.IpmiGateway.Get() - tstruct.IpmiUserName = nodeInfo.IpmiUserName.Get() - tstruct.IpmiPassword = nodeInfo.IpmiPassword.Get() - tstruct.IpmiInterface = nodeInfo.IpmiInterface.Get() - tstruct.IpmiWrite = nodeInfo.IpmiWrite.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.GetB() tstruct.RuntimeOverlay = nodeInfo.RuntimeOverlay.Print() tstruct.SystemOverlay = nodeInfo.SystemOverlay.Print() tstruct.NetDevs = make(map[string]*node.NetDevs) diff --git a/internal/pkg/warewulfconf/datastructure.go b/internal/pkg/warewulfconf/datastructure.go index 7d9be76e..8c83adf5 100644 --- a/internal/pkg/warewulfconf/datastructure.go +++ b/internal/pkg/warewulfconf/datastructure.go @@ -7,18 +7,19 @@ import ( ) type ControllerConf struct { - Comment string `yaml:"comment,omitempty"` - Ipaddr string `yaml:"ipaddr"` - Ipaddr6 string `yaml:"ipaddr6,omitempty"` - Netmask string `yaml:"netmask"` - Network string `yaml:"network,omitempty"` - Ipv6net string `yaml:"ipv6net,omitempty"` - Fqdn string `yaml:"fqdn,omitempty"` - Warewulf *WarewulfConf `yaml:"warewulf"` - Dhcp *DhcpConf `yaml:"dhcp"` - Tftp *TftpConf `yaml:"tftp"` - Nfs *NfsConf `yaml:"nfs"` - current bool + WWInternal int `yaml:"WW_INTERNAL"` + Comment string `yaml:"comment,omitempty"` + Ipaddr string `yaml:"ipaddr"` + Ipaddr6 string `yaml:"ipaddr6,omitempty"` + Netmask string `yaml:"netmask"` + Network string `yaml:"network,omitempty"` + Ipv6net string `yaml:"ipv6net,omitempty"` + Fqdn string `yaml:"fqdn,omitempty"` + Warewulf *WarewulfConf `yaml:"warewulf"` + Dhcp *DhcpConf `yaml:"dhcp"` + Tftp *TftpConf `yaml:"tftp"` + Nfs *NfsConf `yaml:"nfs"` + current bool } type WarewulfConf struct { diff --git a/internal/pkg/warewulfconf/defaults.go b/internal/pkg/warewulfconf/defaults.go index db17f940..e3a89296 100644 --- a/internal/pkg/warewulfconf/defaults.go +++ b/internal/pkg/warewulfconf/defaults.go @@ -1,8 +1,8 @@ package warewulfconf -const defaultPort int = 9983 +import "github.com/hpcng/warewulf/internal/pkg/buildconfig" -var defaultDataStore string = "/var/lib/warewulf" +const defaultPort int = 9983 func defaultConfig() *ControllerConf { Warewulf := &WarewulfConf{ @@ -12,7 +12,7 @@ func defaultConfig() *ControllerConf { AutobuildOverlays: true, EnableHostOverlay: true, Syslog: false, - DataStore: defaultDataStore, + DataStore: buildconfig.LOCALSTATEDIR(), } Dhcp := &DhcpConf{ Enabled: true, @@ -23,14 +23,15 @@ func defaultConfig() *ControllerConf { } Tftp := &TftpConf{ Enabled: true, - TftpRoot: "/var/lib/tftpboot", + TftpRoot: buildconfig.TFTPDIR(), SystemdName: "tftp", } return &ControllerConf{ - Warewulf: Warewulf, - Dhcp: Dhcp, - Tftp: Tftp, - current: false, + WWInternal: buildconfig.WWVer, + Warewulf: Warewulf, + Dhcp: Dhcp, + Tftp: Tftp, + current: false, } } diff --git a/internal/pkg/warewulfd/ipxe.go b/internal/pkg/warewulfd/ipxe.go index e3fe9419..9ceac517 100644 --- a/internal/pkg/warewulfd/ipxe.go +++ b/internal/pkg/warewulfd/ipxe.go @@ -139,8 +139,8 @@ func IpxeSend(w http.ResponseWriter, req *http.Request) { replace.Hostname = node.Id.Get() replace.Hwaddr = rinfo.hwaddr replace.ContainerName = node.ContainerName.Get() - replace.KernelArgs = node.KernelArgs.Get() - replace.KernelOverride = node.KernelOverride.Get() + replace.KernelArgs = node.Kernel.Args.Get() + replace.KernelOverride = node.Kernel.Override.Get() err = tmpl.Execute(w, replace) if err != nil { diff --git a/internal/pkg/warewulfd/kernel.go b/internal/pkg/warewulfd/kernel.go index f386852d..1c78bdff 100644 --- a/internal/pkg/warewulfd/kernel.go +++ b/internal/pkg/warewulfd/kernel.go @@ -31,8 +31,8 @@ func KernelSend(w http.ResponseWriter, req *http.Request) { } var fileName string - if node.KernelOverride.Defined() { - fileName = kernel.KernelImage(node.KernelOverride.Get()) + if node.Kernel.Override.Defined() { + fileName = kernel.KernelImage(node.Kernel.Override.Get()) } else if node.ContainerName.Defined() { fileName = container.KernelFind(node.ContainerName.Get()) diff --git a/internal/pkg/warewulfd/kmods.go b/internal/pkg/warewulfd/kmods.go index a8378699..e02fe661 100644 --- a/internal/pkg/warewulfd/kmods.go +++ b/internal/pkg/warewulfd/kmods.go @@ -28,10 +28,10 @@ func KmodsSend(w http.ResponseWriter, req *http.Request) { return } - if node.KernelOverride.Defined() { - fileName := kernel.KmodsImage(node.KernelOverride.Get()) + if node.Kernel.Override.Defined() { + fileName := kernel.KmodsImage(node.Kernel.Override.Get()) - updateStatus(node.Id.Get(), "KMODS_OVERLAY", node.KernelOverride.Get()+".img", strings.Split(req.RemoteAddr, ":")[0]) + updateStatus(node.Id.Get(), "KMODS_OVERLAY", node.Kernel.Override.Get()+".img", strings.Split(req.RemoteAddr, ":")[0]) err := sendFile(w, fileName, node.Id.Get()) if err != nil {