Fixups for new API

This commit is contained in:
Gregory Kurtzer
2020-12-03 17:28:58 -08:00
parent 5070c530bd
commit 4af41736ab
4 changed files with 36 additions and 53 deletions

View File

@@ -12,7 +12,6 @@ import (
)
func Build(kernelVersion string) error {
config := config.New()
kernelImage := "/boot/vmlinuz-" + kernelVersion
kernelDrivers := "/lib/modules/" + kernelVersion

View File

@@ -19,7 +19,7 @@ import (
type TemplateStruct struct {
Self struct {
Fqdn string
Id string
Hostname string
GroupName string
Vnfs string
@@ -57,7 +57,6 @@ func RuntimeOverlayInit(name string) error {
}
func findAllOverlays(overlayType string) ([]string, error) {
config := config.New()
var ret []string
var files []os.FileInfo
var err error
@@ -89,7 +88,6 @@ func findAllOverlays(overlayType string) ([]string, error) {
func overlayInit(name string, overlayType string) error {
var path string
config := config.New()
if overlayType == "system" {
wwlog.Printf(wwlog.DEBUG, "Looking for system overlays...")
@@ -112,36 +110,39 @@ func overlayInit(name string, overlayType string) error {
}
func buildOverlay(nodeList []node.NodeInfo, overlayType string) error {
config := config.New()
nodeDB, _ := node.New()
allNodes, _ := nodeDB.FindAllNodes()
for _, node := range nodeList {
for _, n := range nodeList {
var t TemplateStruct
var OverlayDir string
var OverlayFile string
if overlayType == "runtime" {
OverlayDir = config.RuntimeOverlaySource(node.RuntimeOverlay.Get())
OverlayFile = config.RuntimeOverlayImage(node.Id.Get())
OverlayDir = config.RuntimeOverlaySource(n.RuntimeOverlay.Get())
OverlayFile = config.RuntimeOverlayImage(n.Id.Get())
} else if overlayType == "system" {
OverlayDir = config.SystemOverlaySource(node.RuntimeOverlay.Get())
OverlayFile = config.SystemOverlayImage(node.Id.Get())
OverlayDir = config.SystemOverlaySource(n.RuntimeOverlay.Get())
OverlayFile = config.SystemOverlayImage(n.Id.Get())
} else {
wwlog.Printf(wwlog.ERROR, "overlayType requested is not supported: %s\n", overlayType)
os.Exit(1)
}
wwlog.Printf(wwlog.DEBUG, "Processing overlay for node: %s\n", node.Id.Get())
wwlog.Printf(wwlog.DEBUG, "Processing overlay for node: %s\n", n.Id.Get())
t.Self.Fqdn = node.Id.Get()
t.Self.Hostname = node.Id.Get()
t.Self.Vnfs = node.Vnfs.Get()
t.Self.IpmiIpaddr = node.IpmiIpaddr.Get()
t.Self.IpmiNetmask = node.IpmiNetmask.Get()
t.Self.IpmiUserName = node.IpmiUserName.Get()
t.Self.IpmiPassword = node.IpmiPassword.Get()
for devname, netdev := range node.NetDevs {
t.Self.Id = n.Id.Get()
t.Self.Hostname = n.Id.Get()
t.Self.Vnfs = n.Vnfs.Get()
t.Self.IpmiIpaddr = n.IpmiIpaddr.Get()
t.Self.IpmiNetmask = n.IpmiNetmask.Get()
t.Self.IpmiUserName = n.IpmiUserName.Get()
t.Self.IpmiPassword = n.IpmiPassword.Get()
t.Self.NetDevs = make(map[string]*node.NetDevs)
for devname, netdev := range n.NetDevs {
var nd node.NetDevs
t.Self.NetDevs[devname] = &nd
t.Self.NetDevs[devname].Hwaddr = netdev.Hwaddr.Get()
t.Self.NetDevs[devname].Ipaddr = netdev.Ipaddr.Get()
t.Self.NetDevs[devname].Netmask = netdev.Netmask.Get()
t.Self.NetDevs[devname].Gateway = netdev.Gateway.Get()
@@ -149,16 +150,16 @@ func buildOverlay(nodeList []node.NodeInfo, overlayType string) error {
}
t.AllNodes = allNodes
if overlayType == "runtime" && node.RuntimeOverlay.Defined() == false {
wwlog.Printf(wwlog.WARN, "Undefined runtime overlay, skipping node: %s\n", node.Id.Get())
if overlayType == "runtime" && n.RuntimeOverlay.Defined() == false {
wwlog.Printf(wwlog.WARN, "Undefined runtime overlay, skipping node: %s\n", n.Id.Get())
}
if overlayType == "system" && node.SystemOverlay.Defined() == false {
wwlog.Printf(wwlog.WARN, "Undefined system overlay, skipping node: %s\n", node.Id.Get())
if overlayType == "system" && n.SystemOverlay.Defined() == false {
wwlog.Printf(wwlog.WARN, "Undefined system overlay, skipping node: %s\n", n.Id.Get())
}
wwlog.Printf(wwlog.DEBUG, "Checking to see if overlay directory exists: %s\n", OverlayDir)
if util.IsDir(OverlayDir) == false {
wwlog.Printf(wwlog.WARN, "%-35s: Skipped (runtime overlay template not found)\n", node.Id.Get())
wwlog.Printf(wwlog.WARN, "%-35s: Skipped (runtime overlay template not found)\n", n.Id.Get())
continue
}
@@ -207,7 +208,7 @@ func buildOverlay(nodeList []node.NodeInfo, overlayType string) error {
}).ParseGlob(path.Join(OverlayDir, destFile+".ww*"))
if err != nil {
wwlog.Printf(wwlog.ERROR, "%s\n", err)
return err
return nil
}
w, err := os.OpenFile(path.Join(tmpDir, destFile), os.O_RDWR|os.O_CREATE, info.Mode())
@@ -220,7 +221,7 @@ func buildOverlay(nodeList []node.NodeInfo, overlayType string) error {
err = tmpl.Execute(w, t)
if err != nil {
wwlog.Printf(wwlog.ERROR, "%s\n", err)
return err
return nil
}
} else if b, _ := regexp.MatchString(`\.ww[a-zA-Z0-9\-\._]*$`, location); b == true {
@@ -239,7 +240,7 @@ func buildOverlay(nodeList []node.NodeInfo, overlayType string) error {
return nil
})
wwlog.Printf(wwlog.VERBOSE, "Finished generating overlay directory for: %s\n", node.Id.Get())
wwlog.Printf(wwlog.VERBOSE, "Finished generating overlay directory for: %s\n", n.Id.Get())
cmd := fmt.Sprintf("cd \"%s\"; find . | cpio --quiet -o -H newc -F \"%s\"", tmpDir, OverlayFile)
wwlog.Printf(wwlog.DEBUG, "RUNNING: %s\n", cmd)
@@ -248,7 +249,7 @@ func buildOverlay(nodeList []node.NodeInfo, overlayType string) error {
wwlog.Printf(wwlog.ERROR, "Could not generate runtime image overlay: %s\n", err)
continue
}
wwlog.Printf(wwlog.INFO, "%-35s: Done\n", node.Id.Get())
wwlog.Printf(wwlog.INFO, "%-35s: Done\n", n.Id.Get())
wwlog.Printf(wwlog.DEBUG, "Removing temporary directory: %s\n", tmpDir)
os.RemoveAll(tmpDir)

View File

@@ -10,10 +10,8 @@ import (
"path"
)
func BuildDocker(vnfs VnfsObject, buildForce bool) {
wwlog.Printf(wwlog.VERBOSE, "Building OCI Container: %s\n", vnfs.Source)
config := config.New()
OciCacheDir := config.LocalStateDir + "/oci"
VnfsHashDir := config.LocalStateDir + "/oci/vnfs"
@@ -73,12 +71,12 @@ func BuildDocker(vnfs VnfsObject, buildForce bool) {
// Setup links from OCI image to provision path
_ = os.Remove(vnfs.Image + "-link")
err = os.Symlink(hashDestination, vnfs.Image + "-link")
err = os.Symlink(hashDestination, vnfs.Image+"-link")
if err != nil {
wwlog.Printf(wwlog.ERROR, "Could not create symlink for Image: %s\n", err)
os.Exit(1)
}
err = os.Rename(vnfs.Image + "-link", vnfs.Image)
err = os.Rename(vnfs.Image+"-link", vnfs.Image)
if err != nil {
wwlog.Printf(wwlog.ERROR, "Could not rename link: %s\n", err)
os.Exit(1)
@@ -86,20 +84,18 @@ func BuildDocker(vnfs VnfsObject, buildForce bool) {
// Setup links from OCI rootfs to chroot path
_ = os.Remove(vnfs.Chroot + "-link")
err = os.Symlink(sourcePath, vnfs.Chroot + "-link")
err = os.Symlink(sourcePath, vnfs.Chroot+"-link")
if err != nil {
wwlog.Printf(wwlog.ERROR, "Could not create symlink for Chroot: %s\n", err)
os.Exit(1)
}
err = os.Rename(vnfs.Chroot + "-link", vnfs.Chroot)
err = os.Rename(vnfs.Chroot+"-link", vnfs.Chroot)
if err != nil {
wwlog.Printf(wwlog.ERROR, "Could not rename link: %s\n", err)
os.Exit(1)
}
wwlog.Printf(wwlog.INFO, "%-35s: Done\n", vnfs.Source)
return
}

View File

@@ -13,15 +13,14 @@ import (
)
type VnfsObject struct {
Name string
Name string
Source string
Chroot string
Image string
Image string
Config string
}
func Load (name string) (VnfsObject, error) {
config := config.New()
func Load(name string) (VnfsObject, error) {
var ret VnfsObject
if name == "" {
@@ -68,7 +67,6 @@ func CleanName(source string) string {
func New(source string) (VnfsObject, error) {
var ret VnfsObject
config := config.New()
if source == "" {
wwlog.Printf(wwlog.DEBUG, "Called vnfs.Load() without a name, returning error\n")
@@ -122,11 +120,6 @@ func (self *VnfsObject) SaveConfig() error {
return nil
}
func Build(name string, force bool) error {
vnfs, err := New(name)
@@ -154,12 +147,6 @@ func Build(name string, force bool) error {
return nil
}
func (self *VnfsObject) Nameold() string {
if self.Source == "" {
return ""
@@ -183,4 +170,4 @@ func NameClean1(SourcePath string) string {
uri := strings.Split(SourcePath, "://")
return strings.ReplaceAll(uri[0]+":"+uri[1], "/", "_")
}
}