Add methods to config.New().Paths for site and distribution overlays

- SiteOverlaySourcedir() uses WWOverlaydir (/var/lib/warewulf/overlays)
- DistributionOverlaySourcedir() uses Datadir (/usr/share/warewulf/overlays)
- config.New().Warewulf.DataStore moved to config.New().Paths.Datadir
- FindOverlays() ignores missing distribution overlay directory

Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
Jonathon Anderson
2024-12-17 23:20:47 -07:00
committed by Christian Goll
parent ed78da4123
commit 717241aa18
19 changed files with 163 additions and 50 deletions

View File

@@ -88,12 +88,11 @@ Get all overlays present in warewulf
func FindOverlays() (overlayList []string, err error) {
dotfilecheck, _ := regexp.Compile(`^\..*`)
controller := warewulfconf.Get()
files, err := os.ReadDir(controller.Paths.WWOverlaydir)
if err != nil {
return overlayList, fmt.Errorf("could not get list of distribution overlays: %w", err)
var files []fs.DirEntry
if distfiles, err := os.ReadDir(controller.Paths.DistributionOverlaySourcedir()); err == nil {
files = append(files, distfiles...)
}
sitefiles, err := os.ReadDir(path.Join(controller.Paths.Sysconfdir, "overlays"))
if err == nil { // we don't care if there are no site overlays
if sitefiles, err := os.ReadDir(path.Join(controller.Paths.SiteOverlaySourcedir())); err == nil {
files = append(files, sitefiles...)
}
for _, file := range files {