From 421a03b75dd2479a164a392d0e2e86891f56444c Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Thu, 26 Nov 2020 19:15:30 -0800 Subject: [PATCH] Updates to nodeDB --- internal/pkg/node/constructors.go | 58 +++++++++++++++--------------- internal/pkg/node/datastructure.go | 14 ++++---- internal/pkg/node/methods.go | 22 ++++++++++++ internal/pkg/node/modifiers.go | 6 ++-- 4 files changed, 61 insertions(+), 39 deletions(-) diff --git a/internal/pkg/node/constructors.go b/internal/pkg/node/constructors.go index ad76b714..11018d65 100644 --- a/internal/pkg/node/constructors.go +++ b/internal/pkg/node/constructors.go @@ -40,10 +40,10 @@ func (self *nodeYaml) FindAllNodes() ([]NodeInfo, error) { continue } - n.Id = nodename - n.Gid = groupname - n.GroupName = groupname - n.HostName = node.Hostname + n.Id.Set(nodename) + n.Gid.Set(groupname) + n.GroupName.Set(groupname) + n.HostName.Set(node.Hostname) n.IpmiIpaddr.Set(node.IpmiIpaddr) n.Profiles = node.Profiles @@ -57,38 +57,38 @@ func (self *nodeYaml) FindAllNodes() ([]NodeInfo, error) { continue } - n.Vnfs.profile = self.NodeProfiles[p].Vnfs - n.KernelVersion.profile = self.NodeProfiles[p].KernelVersion - n.KernelArgs.profile = self.NodeProfiles[p].KernelArgs - n.Ipxe.profile = self.NodeProfiles[p].Ipxe - n.IpmiUserName.profile = self.NodeProfiles[p].IpmiUserName - n.IpmiPassword.profile = self.NodeProfiles[p].IpmiPassword - n.DomainName.profile = self.NodeProfiles[p].DomainName - n.SystemOverlay.profile = self.NodeProfiles[p].SystemOverlay - n.RuntimeOverlay.profile = self.NodeProfiles[p].RuntimeOverlay + n.Vnfs.SetProfile(self.NodeProfiles[p].Vnfs) + n.KernelVersion.SetProfile(self.NodeProfiles[p].KernelVersion) + n.KernelArgs.SetProfile(self.NodeProfiles[p].KernelArgs) + n.Ipxe.SetProfile(self.NodeProfiles[p].Ipxe) + n.IpmiUserName.SetProfile(self.NodeProfiles[p].IpmiUserName) + n.IpmiPassword.SetProfile(self.NodeProfiles[p].IpmiPassword) + n.DomainName.SetProfile(self.NodeProfiles[p].DomainName) + n.SystemOverlay.SetProfile(self.NodeProfiles[p].SystemOverlay) + n.RuntimeOverlay.SetProfile(self.NodeProfiles[p].RuntimeOverlay) } - n.DomainName.value = node.DomainName - n.DomainName.group = group.DomainName - n.Vnfs.value = node.Vnfs - n.KernelVersion.value = node.KernelVersion - n.KernelArgs.value = node.KernelArgs - n.Ipxe.value = node.Ipxe - n.IpmiUserName.value = node.IpmiUserName - n.IpmiPassword.value = node.IpmiPassword + n.DomainName.Set(node.DomainName) + n.DomainName.SetGroup(group.DomainName) + n.Vnfs.Set(node.Vnfs) + n.KernelVersion.Set(node.KernelVersion) + n.KernelArgs.Set(node.KernelArgs) + n.Ipxe.Set(node.Ipxe) + n.IpmiUserName.Set(node.IpmiUserName) + n.IpmiPassword.Set(node.IpmiPassword) - n.RuntimeOverlay.def = "default" - n.SystemOverlay.def = "default" - n.Ipxe.def = "default" - n.KernelArgs.def = "crashkernel=no quiet" + n.RuntimeOverlay.SetDefault("default") + n.SystemOverlay.SetDefault("default") + n.Ipxe.SetDefault("default") + n.KernelArgs.SetDefault("crashkernel=no quiet") // config := config.New() // n.VnfsRoot = config.VnfsChroot(vnfs.CleanName(n.Vnfs)) if n.DomainName.Defined() == true { - n.Fqdn = n.HostName + "." + n.DomainName.Get() + n.Fqdn.Set(node.Hostname +"."+ n.DomainName.Get()) } else { - n.Fqdn = node.Hostname + n.Fqdn.Set(node.Hostname) } n.NetDevs = node.NetDevs @@ -192,7 +192,7 @@ func (nodes *nodeYaml) SearchByName(search string) ([]NodeInfo, error) { n, _ := nodes.FindAllNodes() for _, node := range n { - b, _ := regexp.MatchString(search, node.Fqdn) + b, _ := regexp.MatchString(search, node.Fqdn.Get()) if b == true { ret = append(ret, node) } @@ -208,7 +208,7 @@ func (nodes *nodeYaml) SearchByNameList(searchList []string) ([]NodeInfo, error) for _, search := range searchList { for _, node := range n { - b, _ := regexp.MatchString(search, node.Fqdn) + b, _ := regexp.MatchString(search, node.Fqdn.Get()) if b == true { ret = append(ret, node) } diff --git a/internal/pkg/node/datastructure.go b/internal/pkg/node/datastructure.go index 831ce558..4ce7acca 100644 --- a/internal/pkg/node/datastructure.go +++ b/internal/pkg/node/datastructure.go @@ -66,13 +66,13 @@ type NodeInfoEntry struct { } type NodeInfo struct { - Id string - Gid string - Uid string - Comment string - GroupName string - HostName string - Fqdn string + Id NodeInfoEntry + Gid NodeInfoEntry + Uid NodeInfoEntry + Comment NodeInfoEntry + GroupName NodeInfoEntry + HostName NodeInfoEntry + Fqdn NodeInfoEntry DomainName NodeInfoEntry Vnfs NodeInfoEntry VnfsRoot NodeInfoEntry diff --git a/internal/pkg/node/methods.go b/internal/pkg/node/methods.go index 93e12b54..dfc25789 100644 --- a/internal/pkg/node/methods.go +++ b/internal/pkg/node/methods.go @@ -36,9 +36,31 @@ func (self *NodeInfoEntry) Defined() bool { if self.Get() == "" { return false } + return true } +func (self *NodeInfoEntry) SetDefault(value string) { + if value == "" { + return + } + self.def = value +} + +func (self *NodeInfoEntry) SetGroup(value string) { + if value == "" { + return + } + self.group = value +} + +func (self *NodeInfoEntry) SetProfile(value string) { + if value == "" { + return + } + self.profile = value +} + func (self *NodeInfoEntry) Set(value string) { if value == "" { return diff --git a/internal/pkg/node/modifiers.go b/internal/pkg/node/modifiers.go index 014a9dca..3a07df51 100644 --- a/internal/pkg/node/modifiers.go +++ b/internal/pkg/node/modifiers.go @@ -49,8 +49,8 @@ func (self *nodeYaml) DelNode(groupID string, nodeID string) error { } func(self *nodeYaml) NodeUpdate(node NodeInfo) error { - groupID := node.Gid - nodeID := node.Id + groupID := node.Gid.Get() + nodeID := node.Id.Get() if _, ok := self.NodeGroups[groupID]; !ok { return errors.New("Group '" + groupID + "' was not found") @@ -59,7 +59,7 @@ func(self *nodeYaml) NodeUpdate(node NodeInfo) error { return errors.New("Node '" + nodeID + "' was not found in group '" + groupID + "'") } - self.NodeGroups[groupID].Nodes[nodeID].Hostname = node.HostName + self.NodeGroups[groupID].Nodes[nodeID].Hostname = node.HostName.GetReal() self.NodeGroups[groupID].Nodes[nodeID].Vnfs = node.Vnfs.GetReal() self.NodeGroups[groupID].Nodes[nodeID].DomainName = node.DomainName.GetReal() self.NodeGroups[groupID].Nodes[nodeID].Ipxe = node.Ipxe.GetReal()