From ecea7a949f5029577d0c75c96d2cf8bc03d5938f Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Wed, 8 Jun 2022 10:33:49 +0200 Subject: [PATCH] create symlink if target exists --- internal/pkg/overlay/overlay.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index 634b5082..df2b317e 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -417,12 +417,23 @@ func BuildOverlayIndir(nodeInfo node.NodeInfo, overlayNames []string, outputDir if err != nil { wwlog.ErrorExc(err, "") } + if util.IsFile(path.Join(outputDir, location)) { + if !util.IsFile(path.Join(outputDir, location+".wwbackup")) { + wwlog.Debug("Target exists, creating backup file") + err = os.Rename(path.Join(outputDir, location), path.Join(outputDir, location+"wwbackup")) + } else { + wwlog.Debug("%s exists, keeping the backup file", path.Join(outputDir, location+".wwbackup")) + err = os.Remove(path.Join(outputDir, location)) + } + if err != nil { + wwlog.ErrorExc(err, "") + } + } err = os.Symlink(destination, path.Join(outputDir, location)) if err != nil { wwlog.ErrorExc(err, "") } } else { - err := util.CopyFile(location, path.Join(outputDir, location)) if err == nil { wwlog.Debug("Copied file into overlay: %s", location)