diff --git a/internal/pkg/vnfs_old/containerdir.go b/internal/pkg/vnfs_old/containerdir.go deleted file mode 100644 index ba9b3ae9..00000000 --- a/internal/pkg/vnfs_old/containerdir.go +++ /dev/null @@ -1,63 +0,0 @@ -package vnfs - -import ( - "fmt" - "os" - "path" - - "github.com/hpcng/warewulf/internal/pkg/util" - "github.com/hpcng/warewulf/internal/pkg/wwlog" -) - -func BuildContainerdir(vnfs VnfsObject, buildForce bool) { - - if _, err := os.Stat(vnfs.Source); err != nil { - wwlog.Printf(wwlog.INFO, "%-35s: Skipping (bad path)\n", vnfs.Source) - return - } - - wwlog.Printf(wwlog.DEBUG, "Checking if there have been any updates to the VNFS directory\n") - if util.PathIsNewer(vnfs.Source, vnfs.Image) { - if buildForce == false { - wwlog.Printf(wwlog.INFO, "%-35s: Skipping, VNFS is current\n", vnfs.Name) - return - } - } - - wwlog.Printf(wwlog.DEBUG, "Making parent directory for: %s\n", vnfs.Image) - err := os.MkdirAll(path.Dir(vnfs.Image), 0755) - if err != nil { - fmt.Printf("ERROR: %s\n", err) - return - } - - wwlog.Printf(wwlog.DEBUG, "Making parent directory for: %s\n", vnfs.Chroot) - err = os.MkdirAll(path.Dir(vnfs.Chroot), 0755) - if err != nil { - fmt.Printf("ERROR: %s\n", err) - return - } - - wwlog.Printf(wwlog.DEBUG, "Building VNFS image: '%s' -> '%s'\n", vnfs.Source, vnfs.Image) - err = buildVnfs(vnfs.Source, vnfs.Image) - if err != nil { - fmt.Printf("ERROR: %s\n", err) - os.Exit(1) - } - - // Setup links from OCI rootfs to chroot path - _ = os.Remove(vnfs.Chroot + "-link") - err = os.Symlink(vnfs.Source, 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) - 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.Name) - -} diff --git a/internal/pkg/vnfs_old/docker.go b/internal/pkg/vnfs_old/docker.go deleted file mode 100644 index 4731dd4d..00000000 --- a/internal/pkg/vnfs_old/docker.go +++ /dev/null @@ -1,102 +0,0 @@ -package vnfs - -import ( - "context" - "fmt" - "os" - "path" - - "github.com/hpcng/warewulf/internal/pkg/config" - "github.com/hpcng/warewulf/internal/pkg/oci" - "github.com/hpcng/warewulf/internal/pkg/wwlog" -) - -func BuildDocker(vnfs VnfsObject, buildForce bool) { - wwlog.Printf(wwlog.VERBOSE, "Building OCI Container: %s\n", vnfs.Source) - - OciCacheDir := config.LocalStateDir + "/oci" - VnfsHashDir := config.LocalStateDir + "/oci/container" - - c, err := oci.NewCache(oci.OptSetCachePath(OciCacheDir)) - if err != nil { - fmt.Printf("ERROR: %s\n", err) - os.Exit(1) - } - - wwlog.Printf(wwlog.VERBOSE, "Downloading OCI container layers\n") - sourcePath, err := c.Pull(context.Background(), vnfs.Source, nil) - if err != nil { - fmt.Printf("ERROR: %s\n", err) - os.Exit(1) - } - - hashDestination := VnfsHashDir + path.Base(sourcePath) - - name, err := os.Readlink(vnfs.Image) - if err == nil { - if name == hashDestination && buildForce == false { - wwlog.Printf(wwlog.INFO, "%-35s: Skipping, VNFS is current\n", vnfs.Name) - return - } - } - - err = os.MkdirAll(VnfsHashDir, 0755) - if err != nil { - fmt.Printf("ERROR: %s\n", err) - return - } - - wwlog.Printf(wwlog.DEBUG, "Making parent directory for: %s\n", vnfs.Image) - err = os.MkdirAll(path.Dir(vnfs.Image), 0755) - if err != nil { - fmt.Printf("ERROR: %s\n", err) - return - } - - wwlog.Printf(wwlog.DEBUG, "Making parent directory for: %s\n", vnfs.Chroot) - err = os.MkdirAll(path.Dir(vnfs.Chroot), 0755) - if err != nil { - fmt.Printf("ERROR: %s\n", err) - return - } - - wwlog.Printf(wwlog.VERBOSE, "Building bootable VNFS image\n") - - err = buildVnfs(sourcePath, hashDestination) - if err != nil { - fmt.Printf("ERROR: %s\n", err) - os.Exit(1) - } - - wwlog.Printf(wwlog.VERBOSE, "Finalizing Build\n") - - // Setup links from OCI image to provision path - _ = os.Remove(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) - if err != nil { - wwlog.Printf(wwlog.ERROR, "Could not rename link: %s\n", err) - os.Exit(1) - } - - // Setup links from OCI rootfs to chroot path - _ = os.Remove(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) - 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 -} diff --git a/internal/pkg/vnfs_old/util.go b/internal/pkg/vnfs_old/util.go deleted file mode 100644 index 91d26a39..00000000 --- a/internal/pkg/vnfs_old/util.go +++ /dev/null @@ -1,14 +0,0 @@ -package vnfs - -import ( - "fmt" - "os/exec" -) - -func buildVnfs(source string, dest string) error { - cmd := fmt.Sprintf("cd %s; find . | cpio --quiet -o -H newc | gzip -c > \"%s\"", source, dest) - - err := exec.Command("/bin/sh", "-c", cmd).Run() - - return err -} diff --git a/internal/pkg/vnfs_old/vnfs.go b/internal/pkg/vnfs_old/vnfs.go deleted file mode 100644 index 2f5ab3c6..00000000 --- a/internal/pkg/vnfs_old/vnfs.go +++ /dev/null @@ -1,174 +0,0 @@ -package vnfs - -import ( - "io/ioutil" - "os" - "path" - "strings" - - "github.com/hpcng/warewulf/internal/pkg/config" - "github.com/hpcng/warewulf/internal/pkg/errors" - "github.com/hpcng/warewulf/internal/pkg/util" - "github.com/hpcng/warewulf/internal/pkg/wwlog" - "gopkg.in/yaml.v2" -) - -type VnfsObject struct { - Name string - Source string - Chroot string - Image string - Config string -} - -func Load(name string) (VnfsObject, error) { - var ret VnfsObject - - if name == "" { - wwlog.Printf(wwlog.DEBUG, "Called container.Load() without a name, returning error\n") - return ret, errors.New("Called container.Load() without a VNFS name") - } - - pathFriendlyName := CleanName(name) - - configFile := path.Join(config.VnfsImageDir(pathFriendlyName), "config.yaml") - - if util.IsFile(configFile) == false { - return ret, errors.New("VNFS has not been imported: " + name) - } - - data, err := ioutil.ReadFile(configFile) - if err != nil { - return ret, errors.New("Error reading VNFS configuration file: " + name) - } - - err = yaml.Unmarshal(data, &ret) - if err != nil { - return ret, err - } - - return ret, nil -} - -func CleanName(source string) string { - var tmp string - - if strings.HasPrefix(source, "/") == true { - tmp = path.Base(source) - } else { - tmp = source - } - - tmp = strings.ReplaceAll(tmp, "://", ":") - tmp = strings.ReplaceAll(tmp, "/", "-") - tmp = strings.ReplaceAll(tmp, ":", ":") - - return tmp -} - -func New(source string) (VnfsObject, error) { - var ret VnfsObject - - if source == "" { - wwlog.Printf(wwlog.DEBUG, "Called container.Load() without a name, returning error\n") - return ret, errors.New("Called container.Load() without a VNFS name") - } - - if util.IsFile(ret.Config) { - return Load(source) - } - - pathFriendlyName := CleanName(source) - - if strings.HasPrefix(source, "/") == true { - ret.Source = source - ret.Name = pathFriendlyName - } else { - tmp := strings.ReplaceAll(source, "://", "-") - tmp = strings.ReplaceAll(tmp, "/", ".") - tmp = strings.ReplaceAll(tmp, ":", ".") - ret.Name = source - ret.Source = source - } - - ret.Chroot = config.VnfsChroot(pathFriendlyName) - ret.Image = config.VnfsImage(pathFriendlyName) - ret.Config = path.Join(config.VnfsImageDir(pathFriendlyName), "config.yaml") - - return ret, nil -} - -func (self *VnfsObject) SaveConfig() error { - - out, err := yaml.Marshal(self) - if err != nil { - return err - } - - file, err := os.OpenFile(self.Config, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644) - if err != nil { - wwlog.Printf(wwlog.ERROR, "%s\n", err) - os.Exit(1) - } - - defer file.Close() - - _, err = file.WriteString(string(out)) - if err != nil { - return err - } - - return nil -} - -func Build(name string, force bool) error { - - vnfs, err := New(name) - if err != nil { - return err - } - - wwlog.Printf(wwlog.VERBOSE, "Building VNFS: %s\n", vnfs.Name) - if strings.HasPrefix(vnfs.Source, "/") { - if strings.HasSuffix(vnfs.Source, "tar.gz") { - //wwlog.Printf(wwlog.WARN, "Building VNFS from local tarball: %s\n", uri) - wwlog.Printf(wwlog.WARN, "Building VNFS from local tarball is not supported yet: %s\n", vnfs.Name) - } else { - BuildContainerdir(vnfs, force) - } - } else { - BuildDocker(vnfs, force) - } - - err = vnfs.SaveConfig() - if err != nil { - return err - } - - return nil -} - -func (self *VnfsObject) Nameold() string { - if self.Source == "" { - return "" - } - - if strings.HasPrefix(self.Source, "/") { - return path.Base(self.Source) - } - - return self.Source -} - -func NameClean1(SourcePath string) string { - if SourcePath == "" { - return "" - } - - if strings.HasPrefix(SourcePath, "/") { - return path.Base(SourcePath) - } - uri := strings.Split(SourcePath, "://") - - return strings.ReplaceAll(uri[0]+":"+uri[1], "/", "_") -}