deps: Update ioutil deprecated library references to os and io respectively in the client package (#16318)

* Update ioutil deprecated library references to os and io respectively

* Deal with the errors produced.

Add error handling to filEntry info
Add error handling to info
This commit is contained in:
Lance Haig
2023-03-08 20:25:10 +01:00
committed by GitHub
parent 3160c76209
commit 48e7d70fcd
34 changed files with 112 additions and 127 deletions

View File

@@ -3,7 +3,6 @@ package taskrunner
import (
"context"
"fmt"
"io/ioutil"
"net/http"
"net/http/httptest"
"os"
@@ -83,7 +82,7 @@ func TestTaskRunner_ArtifactHook_PartialDone(t *testing.T) {
// Only create one of the 2 artifacts to cause an error on first run.
file1 := filepath.Join(srcdir, "foo.txt")
require.NoError(t, ioutil.WriteFile(file1, []byte{'1'}, 0644))
require.NoError(t, os.WriteFile(file1, []byte{'1'}, 0644))
// Test server to serve the artifacts
ts := httptest.NewServer(http.FileServer(http.Dir(srcdir)))
@@ -127,7 +126,7 @@ func TestTaskRunner_ArtifactHook_PartialDone(t *testing.T) {
// Write file2 so artifacts can download successfully
file2 := filepath.Join(srcdir, "bar.txt")
require.NoError(t, ioutil.WriteFile(file2, []byte{'1'}, 0644))
require.NoError(t, os.WriteFile(file2, []byte{'1'}, 0644))
// Mock TaskRunner by copying state from resp to req and reset resp.
req.PreviousState = maps.Clone(resp.State)
@@ -174,7 +173,7 @@ func TestTaskRunner_ArtifactHook_ConcurrentDownloadSuccess(t *testing.T) {
numOfFiles := 7
for i := 0; i < numOfFiles; i++ {
file := filepath.Join(srcdir, fmt.Sprintf("file%d.txt", i))
require.NoError(t, ioutil.WriteFile(file, []byte{byte(i)}, 0644))
require.NoError(t, os.WriteFile(file, []byte{byte(i)}, 0644))
}
// Test server to serve the artifacts
@@ -260,13 +259,13 @@ func TestTaskRunner_ArtifactHook_ConcurrentDownloadFailure(t *testing.T) {
srcdir := t.TempDir()
file1 := filepath.Join(srcdir, "file1.txt")
require.NoError(t, ioutil.WriteFile(file1, []byte{'1'}, 0644))
require.NoError(t, os.WriteFile(file1, []byte{'1'}, 0644))
file2 := filepath.Join(srcdir, "file2.txt")
require.NoError(t, ioutil.WriteFile(file2, []byte{'2'}, 0644))
require.NoError(t, os.WriteFile(file2, []byte{'2'}, 0644))
file3 := filepath.Join(srcdir, "file3.txt")
require.NoError(t, ioutil.WriteFile(file3, []byte{'3'}, 0644))
require.NoError(t, os.WriteFile(file3, []byte{'3'}, 0644))
// Test server to serve the artifacts
ts := httptest.NewServer(http.FileServer(http.Dir(srcdir)))
@@ -319,7 +318,7 @@ func TestTaskRunner_ArtifactHook_ConcurrentDownloadFailure(t *testing.T) {
// create the missing file
file0 := filepath.Join(srcdir, "file0.txt")
require.NoError(t, ioutil.WriteFile(file0, []byte{'0'}, 0644))
require.NoError(t, os.WriteFile(file0, []byte{'0'}, 0644))
// Mock TaskRunner by copying state from resp to req and reset resp.
req.PreviousState = maps.Clone(resp.State)
@@ -342,19 +341,19 @@ func TestTaskRunner_ArtifactHook_ConcurrentDownloadFailure(t *testing.T) {
require.Contains(t, files[3], "file3.txt")
// verify the file contents too, since files will also be created for failed downloads
data0, err := ioutil.ReadFile(files[0])
data0, err := os.ReadFile(files[0])
require.NoError(t, err)
require.Equal(t, data0, []byte{'0'})
data1, err := ioutil.ReadFile(files[1])
data1, err := os.ReadFile(files[1])
require.NoError(t, err)
require.Equal(t, data1, []byte{'1'})
data2, err := ioutil.ReadFile(files[2])
data2, err := os.ReadFile(files[2])
require.NoError(t, err)
require.Equal(t, data2, []byte{'2'})
data3, err := ioutil.ReadFile(files[3])
data3, err := os.ReadFile(files[3])
require.NoError(t, err)
require.Equal(t, data3, []byte{'3'})

View File

@@ -4,7 +4,6 @@ import (
"context"
"fmt"
"io"
"io/ioutil"
"os"
"path/filepath"
@@ -270,7 +269,7 @@ func (h *connectNativeHook) maybeSetSITokenEnv(dir, task string, env map[string]
return nil
}
token, err := ioutil.ReadFile(filepath.Join(dir, sidsTokenFile))
token, err := os.ReadFile(filepath.Join(dir, sidsTokenFile))
if err != nil {
if !os.IsNotExist(err) {
return fmt.Errorf("failed to load SI token for native task %s: %w", task, err)

View File

@@ -2,7 +2,8 @@ package taskrunner
import (
"context"
"io/ioutil"
"io"
"os"
"path/filepath"
"testing"
@@ -27,8 +28,8 @@ func getTestConsul(t *testing.T) *consultest.TestServer {
testConsul, err := consultest.NewTestServerConfigT(t, func(c *consultest.TestServerConfig) {
c.Peering = nil // fix for older versions of Consul (<1.13.0) that don't support peering
if !testing.Verbose() { // disable consul logging if -v not set
c.Stdout = ioutil.Discard
c.Stderr = ioutil.Discard
c.Stdout = io.Discard
c.Stderr = io.Discard
}
})
require.NoError(t, err, "failed to start test consul server")
@@ -42,7 +43,7 @@ func TestConnectNativeHook_Name(t *testing.T) {
}
func setupCertDirs(t *testing.T) (string, string) {
fd, err := ioutil.TempFile(t.TempDir(), "connect_native_testcert")
fd, err := os.CreateTemp(t.TempDir(), "connect_native_testcert")
require.NoError(t, err)
_, err = fd.WriteString("ABCDEF")
require.NoError(t, err)
@@ -65,7 +66,7 @@ func TestConnectNativeHook_copyCertificate(t *testing.T) {
t.Run("normal", func(t *testing.T) {
err := new(connectNativeHook).copyCertificate(f, d, "out.pem")
require.NoError(t, err)
b, err := ioutil.ReadFile(filepath.Join(d, "out.pem"))
b, err := os.ReadFile(filepath.Join(d, "out.pem"))
require.NoError(t, err)
require.Equal(t, "ABCDEF", string(b))
})
@@ -83,7 +84,7 @@ func TestConnectNativeHook_copyCertificates(t *testing.T) {
KeyFile: f,
}, d)
require.NoError(t, err)
ls, err := ioutil.ReadDir(d)
ls, err := os.ReadDir(d)
require.NoError(t, err)
require.Equal(t, 3, len(ls))
})
@@ -411,7 +412,7 @@ func TestTaskRunner_ConnectNativeHook_with_SI_token(t *testing.T) {
// Insert service identity token in the secrets directory
token := uuid.Generate()
siTokenFile := filepath.Join(request.TaskDir.SecretsDir, sidsTokenFile)
err = ioutil.WriteFile(siTokenFile, []byte(token), 0440)
err = os.WriteFile(siTokenFile, []byte(token), 0440)
require.NoError(t, err)
response := new(interfaces.TaskPrestartResponse)
@@ -538,7 +539,7 @@ func TestTaskRunner_ConnectNativeHook_shareTLS(t *testing.T) {
}
func checkFilesInDir(t *testing.T, dir string, includes, excludes []string) {
ls, err := ioutil.ReadDir(dir)
ls, err := os.ReadDir(dir)
require.NoError(t, err)
var present []string

View File

@@ -2,7 +2,6 @@ package taskrunner
import (
"context"
"io/ioutil"
"os"
"path/filepath"
@@ -69,5 +68,5 @@ func writeDispatchPayload(base, filename string, payload []byte) error {
return err
}
return ioutil.WriteFile(renderTo, decoded, 0777)
return os.WriteFile(renderTo, decoded, 0777)
}

View File

@@ -2,7 +2,7 @@ package taskrunner
import (
"context"
"io/ioutil"
"os"
"path/filepath"
"testing"
@@ -50,7 +50,7 @@ func TestTaskRunner_DispatchHook_NoPayload(t *testing.T) {
require.True(resp.Done)
// Assert payload directory is empty
files, err := ioutil.ReadDir(req.TaskDir.LocalDir)
files, err := os.ReadDir(req.TaskDir.LocalDir)
require.NoError(err)
require.Empty(files)
}
@@ -94,7 +94,7 @@ func TestTaskRunner_DispatchHook_Ok(t *testing.T) {
require.True(resp.Done)
filename := filepath.Join(req.TaskDir.LocalDir, task.DispatchPayload.File)
result, err := ioutil.ReadFile(filename)
result, err := os.ReadFile(filename)
require.NoError(err)
require.Equal(expected, result)
}
@@ -141,7 +141,7 @@ func TestTaskRunner_DispatchHook_Error(t *testing.T) {
require.False(resp.Done)
// Assert payload directory is empty
files, err := ioutil.ReadDir(req.TaskDir.LocalDir)
files, err := os.ReadDir(req.TaskDir.LocalDir)
require.NoError(err)
require.Empty(files)
}

View File

@@ -6,7 +6,6 @@ import (
"errors"
"fmt"
"io"
"io/ioutil"
"net"
"os"
"os/exec"
@@ -448,7 +447,7 @@ func buildEnvoyBind(alloc *structs.Allocation, ifce, service, task string, taskE
}
func (h *envoyBootstrapHook) writeConfig(filename, config string) error {
if err := ioutil.WriteFile(filename, []byte(config), 0440); err != nil {
if err := os.WriteFile(filename, []byte(config), 0440); err != nil {
_ = os.Remove(filename)
return err
}
@@ -596,7 +595,7 @@ func (e envoyBootstrapArgs) env(env []string) []string {
// Consul ACLs are enabled), it will be in place by the time we try to read it.
func (h *envoyBootstrapHook) maybeLoadSIToken(task, dir string) (string, error) {
tokenPath := filepath.Join(dir, sidsTokenFile)
token, err := ioutil.ReadFile(tokenPath)
token, err := os.ReadFile(tokenPath)
if err != nil {
if !os.IsNotExist(err) {
h.logger.Error("failed to load SI token", "task", task, "error", err)

View File

@@ -10,7 +10,6 @@ import (
"context"
"encoding/json"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"testing"
@@ -46,7 +45,7 @@ func writeTmp(t *testing.T, s string, fm os.FileMode) string {
dir := t.TempDir()
fPath := filepath.Join(dir, sidsTokenFile)
err := ioutil.WriteFile(fPath, []byte(s), fm)
err := os.WriteFile(fPath, []byte(s), fm)
require.NoError(t, err)
return dir
@@ -358,7 +357,7 @@ func TestEnvoyBootstrapHook_with_SI_token(t *testing.T) {
// Insert service identity token in the secrets directory
token := uuid.Generate()
siTokenFile := filepath.Join(req.TaskDir.SecretsDir, sidsTokenFile)
err = ioutil.WriteFile(siTokenFile, []byte(token), 0440)
err = os.WriteFile(siTokenFile, []byte(token), 0440)
require.NoError(t, err)
resp := &interfaces.TaskPrestartResponse{}

View File

@@ -4,7 +4,6 @@ import (
"context"
"errors"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"sync"
@@ -147,7 +146,7 @@ func (h *sidsHook) earlyExit() bool {
// writeToken writes token into the secrets directory for the task.
func (h *sidsHook) writeToken(dir string, token string) error {
tokenPath := filepath.Join(dir, sidsTokenFile)
if err := ioutil.WriteFile(tokenPath, []byte(token), sidsTokenFilePerms); err != nil {
if err := os.WriteFile(tokenPath, []byte(token), sidsTokenFilePerms); err != nil {
return fmt.Errorf("failed to write SI token: %w", err)
}
return nil
@@ -158,7 +157,7 @@ func (h *sidsHook) writeToken(dir string, token string) error {
// is returned only for some other (e.g. disk IO) error.
func (h *sidsHook) recoverToken(dir string) (string, error) {
tokenPath := filepath.Join(dir, sidsTokenFile)
token, err := ioutil.ReadFile(tokenPath)
token, err := os.ReadFile(tokenPath)
if err != nil {
if !os.IsNotExist(err) {
h.logger.Error("failed to recover SI token", "error", err)

View File

@@ -8,7 +8,6 @@ package taskrunner
import (
"context"
"io/ioutil"
"os"
"path/filepath"
"testing"
@@ -118,7 +117,7 @@ func TestSIDSHook_writeToken(t *testing.T) {
err := h.writeToken(secrets, id)
r.NoError(err)
content, err := ioutil.ReadFile(filepath.Join(secrets, sidsTokenFile))
content, err := os.ReadFile(filepath.Join(secrets, sidsTokenFile))
r.NoError(err)
r.Equal(id, string(content))
}
@@ -273,7 +272,7 @@ func TestTaskRunner_DeriveSIToken_UnWritableTokenFile(t *testing.T) {
// successful token derivation
secrets := t.TempDir()
trConfig.TaskDir.SecretsDir = secrets
err := ioutil.WriteFile(filepath.Join(secrets, sidsTokenFile), nil, 0400)
err := os.WriteFile(filepath.Join(secrets, sidsTokenFile), nil, 0400)
r.NoError(err)
// set a consul token for the nomad client, which is what triggers the
@@ -306,7 +305,7 @@ func TestTaskRunner_DeriveSIToken_UnWritableTokenFile(t *testing.T) {
// assert the token is *not* on disk, as secrets dir was un-writable
tokenPath := filepath.Join(trConfig.TaskDir.SecretsDir, sidsTokenFile)
token, err := ioutil.ReadFile(tokenPath)
token, err := os.ReadFile(tokenPath)
r.NoError(err)
r.Empty(token)
}

View File

@@ -4,7 +4,6 @@ import (
"context"
"errors"
"fmt"
"io/ioutil"
"net/http"
"net/http/httptest"
"os"
@@ -743,7 +742,7 @@ func TestTaskRunner_TaskEnv_None(t *testing.T) {
// Read stdout
p := filepath.Join(conf.TaskDir.LogDir, task.Name+".stdout.0")
stdout, err := ioutil.ReadFile(p)
stdout, err := os.ReadFile(p)
require.NoError(err)
require.Equalf(exp, string(stdout), "expected: %s\n\nactual: %s\n", exp, stdout)
}
@@ -1161,7 +1160,7 @@ func TestTaskRunner_Dispatch_Payload(t *testing.T) {
// Check that the file was written to disk properly
payloadPath := filepath.Join(tr.taskDir.LocalDir, fileName)
data, err := ioutil.ReadFile(payloadPath)
data, err := os.ReadFile(payloadPath)
require.NoError(t, err)
require.Equal(t, expected, data)
}
@@ -1417,7 +1416,7 @@ func TestTaskRunner_BlockForSIDSToken(t *testing.T) {
// assert the token is on disk
tokenPath := filepath.Join(trConfig.TaskDir.SecretsDir, sidsTokenFile)
data, err := ioutil.ReadFile(tokenPath)
data, err := os.ReadFile(tokenPath)
r.NoError(err)
r.Equal(token, string(data))
}
@@ -1470,7 +1469,7 @@ func TestTaskRunner_DeriveSIToken_Retry(t *testing.T) {
// assert the token is on disk
tokenPath := filepath.Join(trConfig.TaskDir.SecretsDir, sidsTokenFile)
data, err := ioutil.ReadFile(tokenPath)
data, err := os.ReadFile(tokenPath)
r.NoError(err)
r.Equal(token, string(data))
}
@@ -1586,7 +1585,7 @@ func TestTaskRunner_BlockForVaultToken(t *testing.T) {
// Check that the token is on disk
tokenPath := filepath.Join(conf.TaskDir.SecretsDir, vaultTokenFile)
data, err := ioutil.ReadFile(tokenPath)
data, err := os.ReadFile(tokenPath)
require.NoError(t, err)
require.Equal(t, token, string(data))
@@ -1663,7 +1662,7 @@ func TestTaskRunner_DeriveToken_Retry(t *testing.T) {
// Check that the token is on disk
tokenPath := filepath.Join(conf.TaskDir.SecretsDir, vaultTokenFile)
data, err := ioutil.ReadFile(tokenPath)
data, err := os.ReadFile(tokenPath)
require.NoError(t, err)
require.Equal(t, token, string(data))

View File

@@ -3,7 +3,6 @@ package taskrunner
import (
"context"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"sync"
@@ -130,7 +129,7 @@ func (h *vaultHook) Prestart(ctx context.Context, req *interfaces.TaskPrestartRe
// directory
recoveredToken := ""
h.tokenPath = filepath.Join(req.TaskDir.SecretsDir, vaultTokenFile)
data, err := ioutil.ReadFile(h.tokenPath)
data, err := os.ReadFile(h.tokenPath)
if err != nil {
if !os.IsNotExist(err) {
return fmt.Errorf("failed to recover vault token: %v", err)
@@ -343,7 +342,7 @@ func (h *vaultHook) deriveVaultToken() (token string, exit bool) {
// writeToken writes the given token to disk
func (h *vaultHook) writeToken(token string) error {
if err := ioutil.WriteFile(h.tokenPath, []byte(token), 0666); err != nil {
if err := os.WriteFile(h.tokenPath, []byte(token), 0666); err != nil {
return fmt.Errorf("failed to write vault token: %v", err)
}