introduce site overlays
site overlays are place in sysconfdir/overlays and take precedence over distribution overlays with the same name. Every `wwctl overlay` command changing overlays will create an site overlay. distribution overlays can't be deleted or modified with wwctl. Signed-off-by: Christian Goll <cgoll@suse.com>
This commit is contained in:
@@ -30,16 +30,20 @@ const initialTemplate = `# This is a Warewulf Template file.
|
||||
# Keep the following for better reference:
|
||||
# ---
|
||||
# This file is autogenerated by warewulf
|
||||
# Host: {{.BuildHost}}
|
||||
# Time: {{.BuildTime}}
|
||||
# Source: {{.BuildSource}}
|
||||
`
|
||||
|
||||
func CobraRunE(cmd *cobra.Command, args []string) error {
|
||||
func CobraRunE(cmd *cobra.Command, args []string) (err error) {
|
||||
overlayName := args[0]
|
||||
fileName := args[1]
|
||||
|
||||
overlaySourceDir := overlay.OverlaySourceDir(overlayName)
|
||||
createdSite := false
|
||||
overlaySourceDir, isSite := overlay.OverlaySourceDir(overlayName)
|
||||
if !isSite {
|
||||
err = overlay.CreateSiteOverlay(overlayName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
createdSite = true
|
||||
}
|
||||
if !util.IsDir(overlaySourceDir) {
|
||||
return fmt.Errorf("overlay does not exist: %s", overlayName)
|
||||
}
|
||||
@@ -102,12 +106,15 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
|
||||
} else {
|
||||
if startTime == fileInfo.ModTime() {
|
||||
wwlog.Debug("No change detected. Not updating overlay.")
|
||||
os.Exit(0)
|
||||
if createdSite {
|
||||
os.Remove(overlaySourceDir)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
// try renaming the tempfile to overlayfile first
|
||||
err := os.Rename(tempFile.Name(), overlayFile)
|
||||
err = os.Rename(tempFile.Name(), overlayFile)
|
||||
if err != nil {
|
||||
// if it fails, which probably means that they exists on different partitions
|
||||
// fallback to data copy
|
||||
|
||||
Reference in New Issue
Block a user