Get wwid from interface not /proc/cmdline when wwid=[interface] is specified

Signed-off-by: Timothy Middelkoop <tmiddelkoop@internet2.edu>
This commit is contained in:
Timothy Middelkoop
2024-02-27 19:43:13 +00:00
parent c036f658a6
commit 3575132db1

View File

@@ -141,6 +141,20 @@ func CobraRunE(cmd *cobra.Command, args []string) (err error) {
}
wwid := strings.Split(wwid_tmp[1], " ")[0]
wwid = strings.TrimSuffix(wwid, "\n")
// Dereference wwid from [interface] for cases that cannot have /proc/cmdline set by bootloader
if string(wwid[0]) == "[" {
iface := wwid[1:len(wwid)-1]
wwid_tmp, err := os.ReadFile(fmt.Sprintf("/sys/class/net/%s/address", iface))
if err != nil {
wwlog.Error("'wwid' cannot be dereferenced from /sys/class/net", iface)
os.Exit(1)
}
wwid = strings.TrimSuffix(string(wwid_tmp), "\n")
wwlog.Info("Dereferencing wwid from [%s] to %s", iface, wwid)
}
duration := 300
if conf.Warewulf.UpdateInterval > 0 {