Update linter for golang v1.25 compatibility
Signed-off-by: Jonathon Anderson <janderson@ciq.com>
This commit is contained in:
committed by
Christian Goll
parent
019408d076
commit
081d2ec61e
@@ -47,7 +47,7 @@ func NodeStatus(nodeNames []string) (nodeStatusResponse *wwapiv1.NodeStatusRespo
|
||||
wwlog.Error("Could not connect to Warewulf server: %s", err)
|
||||
return
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
defer func() { _ = resp.Body.Close() }()
|
||||
|
||||
decoder := json.NewDecoder(resp.Body)
|
||||
var wwNodeStatus allStatus
|
||||
|
||||
@@ -234,7 +234,7 @@ func (config *WarewulfYaml) Dump() ([]byte, error) {
|
||||
return buf.Bytes(), err
|
||||
}
|
||||
|
||||
func (config *WarewulfYaml) PersistToFile(configFile string) error {
|
||||
func (config *WarewulfYaml) PersistToFile(configFile string) (err error) {
|
||||
out, dumpErr := config.Dump()
|
||||
if dumpErr != nil {
|
||||
wwlog.Error("%s", dumpErr)
|
||||
@@ -245,7 +245,11 @@ func (config *WarewulfYaml) PersistToFile(configFile string) error {
|
||||
wwlog.Error("%s", err)
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
defer func() {
|
||||
if cerr := file.Close(); cerr != nil && err == nil {
|
||||
err = cerr
|
||||
}
|
||||
}()
|
||||
_, err = file.WriteString(string(out))
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -305,7 +305,7 @@ func TestInitializedFromFile(t *testing.T) {
|
||||
example_warewulf_conf := ""
|
||||
tempWarewulfConf, warewulfConfErr := os.CreateTemp("", "warewulf.conf-")
|
||||
assert.NoError(t, warewulfConfErr)
|
||||
defer os.Remove(tempWarewulfConf.Name())
|
||||
defer func() { _ = os.Remove(tempWarewulfConf.Name()) }()
|
||||
_, warewulfConfErr = tempWarewulfConf.Write([]byte(example_warewulf_conf))
|
||||
assert.NoError(t, warewulfConfErr)
|
||||
assert.NoError(t, tempWarewulfConf.Sync())
|
||||
|
||||
@@ -10,7 +10,7 @@ func GetOutboundIP() net.IP {
|
||||
if err != nil {
|
||||
return nil
|
||||
}
|
||||
defer conn.Close()
|
||||
defer func() { _ = conn.Close() }()
|
||||
localAddr := conn.LocalAddr().(*net.UDPAddr)
|
||||
return localAddr.IP
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ func TFTP() (err error) {
|
||||
}
|
||||
|
||||
// Create tftpdir if needed
|
||||
var tftpdir string = path.Join(controller.TFTP.TftpRoot, "warewulf")
|
||||
tftpdir := path.Join(controller.TFTP.TftpRoot, "warewulf")
|
||||
err = os.MkdirAll(tftpdir, 0755)
|
||||
if err != nil {
|
||||
return
|
||||
|
||||
@@ -14,7 +14,7 @@ func TestFindInitramfs(t *testing.T) {
|
||||
conf := warewulfconf.Get()
|
||||
temp, err := os.MkdirTemp(os.TempDir(), "ww-conf-*")
|
||||
assert.NoError(t, err)
|
||||
defer os.RemoveAll(temp)
|
||||
defer func() { _ = os.RemoveAll(temp) }()
|
||||
conf.Paths.WWChrootdir = temp
|
||||
|
||||
assert.NoError(t, os.MkdirAll(filepath.Join(RootFsDir("image"), "boot"), 0700))
|
||||
|
||||
@@ -23,9 +23,10 @@ func InitMountPnts(binds []string) (mounts []*warewulfconf.MountEntry) {
|
||||
readonly := false
|
||||
copy_ := false
|
||||
if len(bind) >= 3 {
|
||||
if bind[2] == "ro" {
|
||||
switch bind[2] {
|
||||
case "ro":
|
||||
readonly = true
|
||||
} else if bind[2] == "copy" {
|
||||
case "copy":
|
||||
copy_ = true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,9 +20,9 @@ func writeTempFile(t *testing.T, input string) string {
|
||||
|
||||
func makeSyncDB(t *testing.T, hostInput string, imageInput string) syncDB {
|
||||
hostFileName := writeTempFile(t, hostInput)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
imageFileName := writeTempFile(t, imageInput)
|
||||
defer os.Remove(imageFileName)
|
||||
defer func() { _ = os.Remove(imageFileName) }()
|
||||
db := make(syncDB)
|
||||
var err error
|
||||
err = db.readFromHost(hostFileName)
|
||||
@@ -34,7 +34,7 @@ func makeSyncDB(t *testing.T, hostInput string, imageInput string) syncDB {
|
||||
|
||||
func Test_readFromHost_single(t *testing.T) {
|
||||
hostFileName := writeTempFile(t, `testuser:x:1001:1001::/home/testuser:/bin/bash`)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
|
||||
db := make(syncDB)
|
||||
err := db.readFromHost(hostFileName)
|
||||
@@ -50,7 +50,7 @@ func Test_readFromHost_multiple(t *testing.T) {
|
||||
testuser1:x:1001:1001::/home/testuser:/bin/bash
|
||||
testuser2:x:1002:1002::/home/testuser:/bin/bash
|
||||
`)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
|
||||
db := make(syncDB)
|
||||
err := db.readFromHost(hostFileName)
|
||||
@@ -65,7 +65,7 @@ testuser2:x:1002:1002::/home/testuser:/bin/bash
|
||||
|
||||
func Test_readFromimage_single(t *testing.T) {
|
||||
imageFileName := writeTempFile(t, `testuser:x:1001:1001::/home/testuser:/bin/bash`)
|
||||
defer os.Remove(imageFileName)
|
||||
defer func() { _ = os.Remove(imageFileName) }()
|
||||
|
||||
db := make(syncDB)
|
||||
err := db.readFromimage(imageFileName)
|
||||
@@ -81,7 +81,7 @@ func Test_readFromimage_multiple(t *testing.T) {
|
||||
testuser1:x:1001:1001::/home/testuser:/bin/bash
|
||||
testuser2:x:1002:1002::/home/testuser:/bin/bash
|
||||
`)
|
||||
defer os.Remove(imageFileName)
|
||||
defer func() { _ = os.Remove(imageFileName) }()
|
||||
|
||||
db := make(syncDB)
|
||||
err := db.readFromimage(imageFileName)
|
||||
@@ -98,13 +98,13 @@ func Test_readFromBoth_multiple(t *testing.T) {
|
||||
testuser1:x:1001:1001::/home/testuser:/bin/bash
|
||||
testuser2:x:1002:1002::/home/testuser:/bin/bash
|
||||
`)
|
||||
defer os.Remove(imageFileName)
|
||||
defer func() { _ = os.Remove(imageFileName) }()
|
||||
|
||||
hostFileName := writeTempFile(t, `
|
||||
testuser1:x:2001:2001::/home/testuser:/bin/bash
|
||||
testuser3:x:2003:2003::/home/testuser:/bin/bash
|
||||
`)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
|
||||
db := make(syncDB)
|
||||
var err error
|
||||
@@ -150,13 +150,13 @@ func Test_getOnlyimageLines(t *testing.T) {
|
||||
testuser1:x:1001:1001::/home/testuser:/bin/bash
|
||||
testuser2:x:1002:1002::/home/testuser:/bin/bash
|
||||
`)
|
||||
defer os.Remove(imageFileName)
|
||||
defer func() { _ = os.Remove(imageFileName) }()
|
||||
|
||||
hostFileName := writeTempFile(t, `
|
||||
testuser1:x:2001:2001::/home/testuser:/bin/bash
|
||||
testuser3:x:2003:2003::/home/testuser:/bin/bash
|
||||
`)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
|
||||
db := make(syncDB)
|
||||
var err error
|
||||
@@ -265,7 +265,7 @@ func Test_malformed_passwd(t *testing.T) {
|
||||
hostInput := `"testuser1:x:1001:1001::/home/testuser:/bin/bash"
|
||||
asdf`
|
||||
hostFileName := writeTempFile(t, hostInput)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
db := make(syncDB)
|
||||
err := db.readFromHost(hostFileName)
|
||||
assert.NoError(t, err)
|
||||
@@ -278,7 +278,7 @@ func Test_network_passwd(t *testing.T) {
|
||||
+::::::
|
||||
-::::::`
|
||||
hostFileName := writeTempFile(t, hostInput)
|
||||
defer os.Remove(hostFileName)
|
||||
defer func() { _ = os.Remove(hostFileName) }()
|
||||
db := make(syncDB)
|
||||
err := db.readFromHost(hostFileName)
|
||||
assert.NotContains(t, buf.String(), "parse error")
|
||||
|
||||
@@ -160,7 +160,7 @@ func (db syncDB) read(fileName string, fromimage bool) error {
|
||||
if file, err := os.Open(fileName); err != nil {
|
||||
return err
|
||||
} else {
|
||||
defer file.Close()
|
||||
defer func() { _ = file.Close() }()
|
||||
fileScanner := bufio.NewScanner(file)
|
||||
for fileScanner.Scan() {
|
||||
line := fileScanner.Text()
|
||||
@@ -293,7 +293,7 @@ func (db syncDB) getOnlyimageLines(fileName string) ([]string, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer file.Close()
|
||||
defer func() { _ = file.Close() }()
|
||||
fileScanner := bufio.NewScanner(file)
|
||||
|
||||
var lines []string
|
||||
|
||||
@@ -48,7 +48,7 @@ func (k collection) Default() *Kernel {
|
||||
nk := append(collection{}, k...)
|
||||
sort.Sort(sort.Reverse(nk))
|
||||
for _, kernel := range nk {
|
||||
if !(kernel.IsDebug() || kernel.IsRescue()) {
|
||||
if !kernel.IsDebug() && !kernel.IsRescue() {
|
||||
return kernel
|
||||
}
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ func (config *NodesYaml) MergeNode(id string) (node Node, fields fieldMap, err e
|
||||
node.setIds(id)
|
||||
node.valid = true
|
||||
node.updatePrimaryNetDev()
|
||||
node.Profile.cleanLists()
|
||||
node.cleanLists()
|
||||
return node, fields, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ func (config *NodesYaml) Persist() error {
|
||||
return config.PersistToFile(warewulfconf.Get().Paths.NodesConf())
|
||||
}
|
||||
|
||||
func (config *NodesYaml) PersistToFile(configFile string) error {
|
||||
func (config *NodesYaml) PersistToFile(configFile string) (err error) {
|
||||
if configFile == "" {
|
||||
configFile = warewulfconf.Get().Paths.NodesConf()
|
||||
}
|
||||
@@ -127,7 +127,11 @@ func (config *NodesYaml) PersistToFile(configFile string) error {
|
||||
wwlog.Error("%s", err)
|
||||
return err
|
||||
}
|
||||
defer file.Close()
|
||||
defer func() {
|
||||
if cerr := file.Close(); cerr != nil && err == nil {
|
||||
err = cerr
|
||||
}
|
||||
}()
|
||||
_, err = file.WriteString(string(out))
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -83,7 +83,7 @@ func Test_nodeYaml_FindByHwaddr(t *testing.T) {
|
||||
t.Errorf("FindByHwaddr() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if !(got.id == tt.want) {
|
||||
if got.id != tt.want {
|
||||
t.Errorf("FindByHwaddr() got = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
@@ -121,7 +121,7 @@ func Test_nodeYaml_FindByIpaddr(t *testing.T) {
|
||||
t.Errorf("FindByIpaddr() error = %v, wantErr %v", err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if !(got.id == tt.want) {
|
||||
if got.id != tt.want {
|
||||
t.Errorf("FindByHwaddr() got = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -20,6 +20,7 @@ import (
|
||||
"github.com/opencontainers/umoci"
|
||||
"github.com/opencontainers/umoci/oci/layer"
|
||||
"github.com/warewulf/warewulf/internal/pkg/util"
|
||||
"github.com/warewulf/warewulf/internal/pkg/wwlog"
|
||||
)
|
||||
|
||||
type pullerOpt func(*puller) error
|
||||
@@ -140,7 +141,11 @@ func (p *puller) Pull(ctx context.Context, uri, dst string) (err error) {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer os.RemoveAll(tmpDir)
|
||||
defer func() {
|
||||
if err := os.RemoveAll(tmpDir); err != nil {
|
||||
wwlog.Warn("failed to remove temporary directory %s: %s", tmpDir, err)
|
||||
}
|
||||
}()
|
||||
|
||||
// create an oci bundle our tmpdir to avoid issues with umoci.UnpackRootfs()
|
||||
tmpRef, err := layout.ParseReference(tmpDir + ":" + "tmp")
|
||||
|
||||
@@ -13,7 +13,7 @@ import (
|
||||
func TestGetReference(t *testing.T) {
|
||||
temp, err := os.MkdirTemp(os.TempDir(), "ww-archive-*")
|
||||
assert.NoError(t, err)
|
||||
defer os.RemoveAll(temp)
|
||||
defer func() { _ = os.RemoveAll(temp) }()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
|
||||
@@ -45,7 +45,7 @@ func templateFileBlock(inc string, abortStr string) (string, error) {
|
||||
wwlog.Info("couldn't read block %s: %s", inc, err)
|
||||
return abortStr, nil
|
||||
}
|
||||
defer readFile.Close()
|
||||
defer func() { _ = readFile.Close() }()
|
||||
var cont string
|
||||
fileScanner := bufio.NewScanner(readFile)
|
||||
fileScanner.Split(bufio.ScanLines)
|
||||
|
||||
@@ -238,7 +238,7 @@ func (overlay Overlay) Chmod(path string, mode uint64) (err error) {
|
||||
}
|
||||
}
|
||||
fullPath := overlay.File(path)
|
||||
if !(util.IsFile(fullPath) || util.IsDir(fullPath)) {
|
||||
if !util.IsFile(fullPath) && !util.IsDir(fullPath) {
|
||||
return fmt.Errorf("file does not exist within overlay: %s:%s", overlay.Name(), fullPath)
|
||||
}
|
||||
|
||||
@@ -254,7 +254,7 @@ func (overlay Overlay) Chown(path string, uid, gid int) (err error) {
|
||||
}
|
||||
}
|
||||
fullPath := overlay.File(path)
|
||||
if !(util.IsFile(fullPath) || util.IsDir(fullPath)) {
|
||||
if !util.IsFile(fullPath) && !util.IsDir(fullPath) {
|
||||
return fmt.Errorf("file does not exist within overlay: %s:%s", overlay.Name(), fullPath)
|
||||
}
|
||||
return os.Chown(fullPath, uid, gid)
|
||||
@@ -309,8 +309,8 @@ func (overlay Overlay) ParseVarFields(file string) map[string]FieldInfo {
|
||||
// Initialize $ to refer to the root template context
|
||||
rangeVars["$"] = rootType
|
||||
|
||||
if tmpl.Tree != nil && tmpl.Tree.Root != nil {
|
||||
walkParseTree(tmpl.Tree.Root, rootType, "", rangeVars, result)
|
||||
if tmpl.Tree != nil && tmpl.Root != nil {
|
||||
walkParseTree(tmpl.Root, rootType, "", rangeVars, result)
|
||||
}
|
||||
|
||||
return result
|
||||
@@ -846,7 +846,7 @@ func BuildHostOverlay() error {
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not build host overlay: %w ", err)
|
||||
}
|
||||
if !(stats.Mode() == os.FileMode(0o750|os.ModeDir) || stats.Mode() == os.FileMode(0o700|os.ModeDir)) {
|
||||
if stats.Mode() != os.FileMode(0o750|os.ModeDir) && stats.Mode() != os.FileMode(0o700|os.ModeDir) {
|
||||
wwlog.SecWarn("Permissions of host overlay dir %s are %s (750 is considered as secure)", hostdir.Rootfs(), stats.Mode())
|
||||
}
|
||||
registry, err := node.New()
|
||||
@@ -918,7 +918,11 @@ func BuildOverlay(nodeConf node.Node, allNodes []node.Node, context string, over
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to create temporary directory for %s: %w", name, err)
|
||||
}
|
||||
defer os.RemoveAll(buildDir)
|
||||
defer func() {
|
||||
if err := os.RemoveAll(buildDir); err != nil {
|
||||
wwlog.Warn("failed to remove temporary build directory %s: %s", buildDir, err)
|
||||
}
|
||||
}()
|
||||
|
||||
wwlog.Debug("Created temporary directory for %s: %s", name, buildDir)
|
||||
|
||||
@@ -1126,7 +1130,7 @@ func BuildOverlayIndir(nodeData node.Node, allNodes []node.Node, overlayNames []
|
||||
/*
|
||||
Writes buffer to the destination file. If wwbackup is set a wwbackup will be created.
|
||||
*/
|
||||
func CarefulWriteBuffer(destFile string, buffer bytes.Buffer, backupFile bool, perm fs.FileMode) error {
|
||||
func CarefulWriteBuffer(destFile string, buffer bytes.Buffer, backupFile bool, perm fs.FileMode) (err error) {
|
||||
wwlog.Debug("Trying to careful write file (%d bytes): %s", buffer.Len(), destFile)
|
||||
if backupFile {
|
||||
if !util.IsFile(destFile+".wwbackup") && util.IsFile(destFile) {
|
||||
@@ -1140,7 +1144,11 @@ func CarefulWriteBuffer(destFile string, buffer bytes.Buffer, backupFile bool, p
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not open new file for template %w", err)
|
||||
}
|
||||
defer w.Close()
|
||||
defer func() {
|
||||
if cerr := w.Close(); cerr != nil && err == nil {
|
||||
err = fmt.Errorf("failed to close file %s: %w", destFile, cerr)
|
||||
}
|
||||
}()
|
||||
_, err = buffer.WriteTo(w)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -586,7 +586,7 @@ func Test_BuildAllOverlays(t *testing.T) {
|
||||
conf := warewulfconf.Get()
|
||||
overlayDir, overlayDirErr := os.MkdirTemp(os.TempDir(), "ww-test-overlay-*")
|
||||
assert.NoError(t, overlayDirErr)
|
||||
defer os.RemoveAll(overlayDir)
|
||||
defer func() { _ = os.RemoveAll(overlayDir) }()
|
||||
conf.Paths.WWOverlaydir = overlayDir
|
||||
assert.NoError(t, os.Mkdir(path.Join(overlayDir, "o1"), 0o700))
|
||||
assert.NoError(t, os.Mkdir(path.Join(overlayDir, "o2"), 0o700))
|
||||
@@ -595,7 +595,7 @@ func Test_BuildAllOverlays(t *testing.T) {
|
||||
t.Run(tt.description, func(t *testing.T) {
|
||||
provisionDir, provisionDirErr := os.MkdirTemp(os.TempDir(), "ww-test-provision-*")
|
||||
assert.NoError(t, provisionDirErr)
|
||||
defer os.RemoveAll(provisionDir)
|
||||
defer func() { _ = os.RemoveAll(provisionDir) }()
|
||||
conf.Paths.WWProvisiondir = provisionDir
|
||||
|
||||
var nodes []node.Node
|
||||
@@ -684,7 +684,7 @@ func Test_BuildSpecificOverlays(t *testing.T) {
|
||||
conf := warewulfconf.Get()
|
||||
overlayDir, overlayDirErr := os.MkdirTemp(os.TempDir(), "ww-test-overlay-*")
|
||||
assert.NoError(t, overlayDirErr)
|
||||
defer os.RemoveAll(overlayDir)
|
||||
defer func() { _ = os.RemoveAll(overlayDir) }()
|
||||
conf.Paths.WWOverlaydir = overlayDir
|
||||
assert.NoError(t, os.Mkdir(path.Join(overlayDir, "o1"), 0o700))
|
||||
assert.NoError(t, os.Mkdir(path.Join(overlayDir, "o2"), 0o700))
|
||||
@@ -693,7 +693,7 @@ func Test_BuildSpecificOverlays(t *testing.T) {
|
||||
t.Run(tt.description, func(t *testing.T) {
|
||||
provisionDir, provisionDirErr := os.MkdirTemp(os.TempDir(), "ww-test-provision-*")
|
||||
assert.NoError(t, provisionDirErr)
|
||||
defer os.RemoveAll(provisionDir)
|
||||
defer func() { _ = os.RemoveAll(provisionDir) }()
|
||||
conf.Paths.WWProvisiondir = provisionDir
|
||||
|
||||
var nodes []node.Node
|
||||
@@ -729,7 +729,7 @@ func Test_CreateOverlayFile(t *testing.T) {
|
||||
conf := warewulfconf.Get()
|
||||
overlayDir, overlayDirErr := os.MkdirTemp(os.TempDir(), "ww-test-overlay-*")
|
||||
assert.NoError(t, overlayDirErr)
|
||||
defer os.RemoveAll(overlayDir)
|
||||
defer func() { _ = os.RemoveAll(overlayDir) }()
|
||||
conf.Paths.WWOverlaydir = overlayDir
|
||||
conf.Paths.Datadir = "/dev/null"
|
||||
for _, tt := range tests {
|
||||
@@ -757,7 +757,7 @@ func dirIsEmpty(t *testing.T, name string) bool {
|
||||
t.Log(err)
|
||||
return true
|
||||
}
|
||||
defer f.Close()
|
||||
defer func() { _ = f.Close() }()
|
||||
|
||||
dirnames, err2 := f.Readdirnames(1)
|
||||
if err2 == io.EOF {
|
||||
@@ -773,7 +773,7 @@ func readCpio(name string) (headers map[string]*cpio.Header, err error) {
|
||||
if err != nil {
|
||||
return headers, err
|
||||
}
|
||||
defer f.Close()
|
||||
defer func() { _ = f.Close() }()
|
||||
|
||||
reader := cpio.NewReader(f)
|
||||
headers = make(map[string]*cpio.Header)
|
||||
|
||||
@@ -175,7 +175,7 @@ func (env *TestEnv) WriteFile(fileName string, content string) {
|
||||
|
||||
f, err := os.Create(env.GetPath(fileName))
|
||||
env.assertNoError(err)
|
||||
defer f.Close()
|
||||
defer func() { _ = f.Close() }()
|
||||
_, err = f.WriteString(content)
|
||||
env.assertNoError(err)
|
||||
err = os.Chtimes(env.GetPath(fileName),
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"github.com/warewulf/warewulf/internal/pkg/wwlog"
|
||||
)
|
||||
|
||||
func CopyFile(src string, dst string) error {
|
||||
func CopyFile(src string, dst string) (err error) {
|
||||
|
||||
wwlog.Debug("Copying '%s' to '%s'", src, dst)
|
||||
|
||||
@@ -17,7 +17,7 @@ func CopyFile(src string, dst string) error {
|
||||
wwlog.Debug("Could not open source file %s: %s", src, err)
|
||||
return err
|
||||
}
|
||||
defer srcFD.Close()
|
||||
defer func() { _ = srcFD.Close() }()
|
||||
|
||||
srcInfo, err := srcFD.Stat()
|
||||
if err != nil {
|
||||
@@ -30,7 +30,11 @@ func CopyFile(src string, dst string) error {
|
||||
wwlog.Debug("Could not create destination file %s: %s", dst, err)
|
||||
return err
|
||||
}
|
||||
defer dstFD.Close()
|
||||
defer func() {
|
||||
if cerr := dstFD.Close(); cerr != nil && err == nil {
|
||||
err = cerr
|
||||
}
|
||||
}()
|
||||
|
||||
bytes, err := io.Copy(dstFD, srcFD)
|
||||
if err != nil {
|
||||
|
||||
@@ -125,7 +125,7 @@ func ReadFile(path string) ([]string, error) {
|
||||
for scanner.Scan() {
|
||||
lines = append(lines, scanner.Text())
|
||||
}
|
||||
f.Close()
|
||||
_ = f.Close()
|
||||
return lines, nil
|
||||
}
|
||||
|
||||
@@ -319,8 +319,8 @@ func CopyUIDGID(source string, dest string) error {
|
||||
}
|
||||
|
||||
// root is always good, if we failt to get UID/GID of a file
|
||||
var UID int = 0
|
||||
var GID int = 0
|
||||
var UID = 0
|
||||
var GID = 0
|
||||
if stat, ok := info.Sys().(*syscall.Stat_t); ok {
|
||||
UID = int(stat.Uid)
|
||||
GID = int(stat.Gid)
|
||||
@@ -345,16 +345,20 @@ func IncrementIPv4(start net.IP, inc uint) net.IP {
|
||||
/*
|
||||
Appending the lines to the given file
|
||||
*/
|
||||
func AppendLines(fileName string, lines []string) error {
|
||||
func AppendLines(fileName string, lines []string) (err error) {
|
||||
wwlog.Verbose("appending %v lines to %s", len(lines), fileName)
|
||||
file, err := os.OpenFile(fileName, os.O_APPEND|os.O_WRONLY, 0o644)
|
||||
if err != nil {
|
||||
return fmt.Errorf("can't open file: %s: %w", fileName, err)
|
||||
}
|
||||
defer file.Close()
|
||||
defer func() {
|
||||
if cerr := file.Close(); cerr != nil && err == nil {
|
||||
err = cerr
|
||||
}
|
||||
}()
|
||||
for _, line := range lines {
|
||||
wwlog.Debug("Appending '%s' to %s", line, fileName)
|
||||
if _, err := file.WriteString(fmt.Sprintf("%s\n", line)); err != nil {
|
||||
if _, err := fmt.Fprintf(file, "%s\n", line); err != nil {
|
||||
return fmt.Errorf("can't write to file: %s: %w", fileName, err)
|
||||
}
|
||||
|
||||
@@ -393,7 +397,7 @@ func CpioCreate(
|
||||
|
||||
err_in := make(chan error, 1)
|
||||
go func() {
|
||||
defer stdin.Close()
|
||||
defer func() { _ = stdin.Close() }()
|
||||
_, err := io.WriteString(stdin, strings.Join(ifiles, "\n"))
|
||||
err_in <- err
|
||||
}()
|
||||
@@ -475,14 +479,16 @@ func FileGz(
|
||||
err = proc.Start()
|
||||
if err != nil {
|
||||
_ = proc.Wait()
|
||||
gzippedFile.Close()
|
||||
os.Remove(file_gz)
|
||||
_ = gzippedFile.Close()
|
||||
_ = os.Remove(file_gz)
|
||||
err = fmt.Errorf("unable to successfully execute compression program: %s: %w", compressor, err)
|
||||
} else {
|
||||
err = proc.Wait()
|
||||
gzippedFile.Close()
|
||||
if cerr := gzippedFile.Close(); cerr != nil {
|
||||
wwlog.Warn("failed to close compressed image file %s: %s", file_gz, cerr)
|
||||
}
|
||||
if err != nil {
|
||||
os.Remove(file_gz)
|
||||
_ = os.Remove(file_gz)
|
||||
err = fmt.Errorf("unable to successfully create compressed image file: %s: %w", file_gz, err)
|
||||
} else {
|
||||
wwlog.Verbose("Successfully compressed image file: %s", file_gz)
|
||||
|
||||
@@ -119,7 +119,7 @@ func (of *OverlayFile) readContents() (string, error) {
|
||||
}
|
||||
|
||||
func (of *OverlayFile) renderContents(nodeName string) (string, error) {
|
||||
if !(path.Ext(of.Path) == ".ww") {
|
||||
if path.Ext(of.Path) != ".ww" {
|
||||
return "", fmt.Errorf("'%s' does not end with '.ww'", of.Path)
|
||||
}
|
||||
|
||||
@@ -329,7 +329,7 @@ func addOverlayFile() usecase.Interactor {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if err := overlay_.AddFile(relPath, []byte(input.Content), true, !(input.IfNoneMatch == "*")); err != nil {
|
||||
if err := overlay_.AddFile(relPath, []byte(input.Content), true, input.IfNoneMatch != "*"); err != nil {
|
||||
return fmt.Errorf("unable to add overlay file %v: %v: %w", input.Name, relPath, err)
|
||||
}
|
||||
*output = *NewOverlayResponse(input.Name)
|
||||
|
||||
@@ -186,7 +186,7 @@ nodes:
|
||||
w := httptest.NewRecorder()
|
||||
HandleRuntimeOverlay(w, req)
|
||||
res := w.Result()
|
||||
defer res.Body.Close()
|
||||
defer func() { _ = res.Body.Close() }()
|
||||
|
||||
data, readErr := io.ReadAll(res.Body)
|
||||
assert.NoError(t, readErr)
|
||||
|
||||
@@ -99,7 +99,7 @@ nodes:
|
||||
w := httptest.NewRecorder()
|
||||
HandleProvision(w, req)
|
||||
res := w.Result()
|
||||
defer res.Body.Close()
|
||||
defer func() { _ = res.Body.Close() }()
|
||||
|
||||
data, readErr := io.ReadAll(res.Body)
|
||||
assert.NoError(t, readErr)
|
||||
|
||||
@@ -37,7 +37,7 @@ type slashFix struct {
|
||||
Filter out the '//'
|
||||
*/
|
||||
func (h *slashFix) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
r.URL.Path = strings.Replace(r.URL.Path, "//", "/", -1)
|
||||
r.URL.Path = strings.ReplaceAll(r.URL.Path, "//", "/")
|
||||
h.mux.ServeHTTP(w, r)
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ func sendFile(
|
||||
w.WriteHeader(http.StatusInternalServerError)
|
||||
return err
|
||||
}
|
||||
defer fd.Close()
|
||||
defer func() { _ = fd.Close() }()
|
||||
|
||||
stat, err := fd.Stat()
|
||||
if err != nil {
|
||||
@@ -40,7 +40,7 @@ func sendFile(
|
||||
fd)
|
||||
|
||||
wwlog.Info("send %s -> %s", filename, sendto)
|
||||
req.Body.Close()
|
||||
_ = req.Body.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ func ArpFind(ip string) (mac string) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer arpCache.Close()
|
||||
defer func() { _ = arpCache.Close() }()
|
||||
|
||||
scanner := bufio.NewScanner(arpCache)
|
||||
scanner.Scan()
|
||||
|
||||
@@ -205,9 +205,9 @@ func LogCaller(level int, skip int, err error, message string, a ...interface{})
|
||||
|
||||
message = logFormatter(logLevel, &rec)
|
||||
if level == INFO || level == OUT {
|
||||
fmt.Fprint(logOut, message)
|
||||
_, _ = fmt.Fprint(logOut, message)
|
||||
} else {
|
||||
fmt.Fprint(logErr, message)
|
||||
_, _ = fmt.Fprint(logErr, message)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,7 +250,7 @@ func Test_Log(t *testing.T) {
|
||||
outCh <- string(out)
|
||||
}()
|
||||
|
||||
w.Close()
|
||||
_ = w.Close()
|
||||
os.Stderr = oldErr
|
||||
out := <-outCh
|
||||
if tt.exactMatch {
|
||||
|
||||
Reference in New Issue
Block a user