Refactor gRPC-based image functions
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
60
internal/pkg/image/rename.go
Normal file
60
internal/pkg/image/rename.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package image
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/warewulf/warewulf/internal/pkg/node"
|
||||
"github.com/warewulf/warewulf/internal/pkg/wwlog"
|
||||
)
|
||||
|
||||
func Rename(name string, targetName string, build bool) error {
|
||||
if !ValidSource(name) {
|
||||
return fmt.Errorf("image source does not exist: %s", name)
|
||||
}
|
||||
if !ValidName(targetName) {
|
||||
return fmt.Errorf("invalid image name: %s", targetName)
|
||||
}
|
||||
|
||||
// rename the image source folder
|
||||
sourceDir := SourceDir(name)
|
||||
destDir := SourceDir(targetName)
|
||||
err := os.Rename(sourceDir, destDir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = DeleteImage(name)
|
||||
if err != nil {
|
||||
wwlog.Warn("Could not remove image files for %s: %s", name, err)
|
||||
}
|
||||
|
||||
if build {
|
||||
err = Build(targetName, true)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// update the nodes profiles image name
|
||||
nodeDB, err := node.New()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for nodeId, node := range nodeDB.Nodes {
|
||||
if node.ImageName == name {
|
||||
wwlog.Debug("updating node %s image to %s", nodeId, targetName)
|
||||
nodeDB.Nodes[nodeId].ImageName = targetName
|
||||
}
|
||||
}
|
||||
|
||||
for profileId, profile := range nodeDB.NodeProfiles {
|
||||
if profile.ImageName == name {
|
||||
wwlog.Debug("updating profile %s image to %s", profileId, targetName)
|
||||
nodeDB.NodeProfiles[profileId].ImageName = targetName
|
||||
}
|
||||
}
|
||||
|
||||
return nodeDB.Persist()
|
||||
}
|
||||
Reference in New Issue
Block a user