Skip to content

Commit 5827adb

Browse files
committed
Move leftover os.WriteFile and os.ReadFile to filesystem
Signed-off-by: apostasie <[email protected]>
1 parent 87a6ab9 commit 5827adb

File tree

16 files changed

+36
-30
lines changed

16 files changed

+36
-30
lines changed

.golangci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ linters:
4848
- pattern: ^os\.WriteFile.*$
4949
pkg: github.com/containerd/nerdctl/v2/pkg
5050
msg: os.WriteFile is neither atomic nor durable - use nerdctl filesystem.WriteFile instead
51+
- pattern: ^os\.ReadFile.*$
52+
pkg: github.com/containerd/nerdctl/v2/pkg
53+
msg: use filesystem.ReadFile instead of os.ReadFile
5154
staticcheck:
5255
checks:
5356
# Below is the default set

pkg/apparmorutil/apparmorutil_linux.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ import (
2626
"github.com/moby/sys/userns"
2727

2828
"github.com/containerd/log"
29+
30+
"github.com/containerd/nerdctl/v2/pkg/internal/filesystem"
2931
)
3032

3133
var (
@@ -55,7 +57,7 @@ func hostSupports() bool {
5557
return
5658
}
5759
var buf []byte
58-
buf, err = os.ReadFile("/sys/module/apparmor/parameters/enabled")
60+
buf, err = filesystem.ReadFile("/sys/module/apparmor/parameters/enabled")
5961
appArmorSupported = err == nil && len(buf) == 2 && string(buf) == "Y\n"
6062
})
6163
return appArmorSupported
@@ -88,7 +90,7 @@ var (
8890
// Related: https://gitlab.com/apparmor/apparmor/-/blob/v3.0.3/libraries/libapparmor/src/kernel.c#L311
8991
func CanApplyExistingProfile() bool {
9092
paramEnabledOnce.Do(func() {
91-
buf, err := os.ReadFile("/sys/module/apparmor/parameters/enabled")
93+
buf, err := filesystem.ReadFile("/sys/module/apparmor/parameters/enabled")
9294
paramEnabled = err == nil && len(buf) == 2 && string(buf) == "Y\n"
9395
})
9496
return paramEnabled
@@ -132,7 +134,7 @@ func Profiles() ([]Profile, error) {
132134
res := make([]Profile, len(ents))
133135
for i, ent := range ents {
134136
namePath := filepath.Join(profilesPath, ent.Name(), "name")
135-
b, err := os.ReadFile(namePath)
137+
b, err := filesystem.ReadFile(namePath)
136138
if err != nil {
137139
log.L.WithError(err).Warnf("failed to read %q", namePath)
138140
continue

pkg/buildkitutil/buildkitutil.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import (
3939

4040
"github.com/containerd/log"
4141

42+
"github.com/containerd/nerdctl/v2/pkg/internal/filesystem"
4243
"github.com/containerd/nerdctl/v2/pkg/rootlessutil"
4344
)
4445

@@ -196,11 +197,11 @@ func BuildKitFile(dir, inputfile string) (absDir string, file string, err error)
196197
_, cErr := os.Lstat(filepath.Join(absDir, ContainerfileName))
197198
if dErr == nil && cErr == nil {
198199
// both files exist, prefer Dockerfile.
199-
dockerfile, err := os.ReadFile(filepath.Join(absDir, DefaultDockerfileName))
200+
dockerfile, err := filesystem.ReadFile(filepath.Join(absDir, DefaultDockerfileName))
200201
if err != nil {
201202
return "", "", err
202203
}
203-
containerfile, err := os.ReadFile(filepath.Join(absDir, ContainerfileName))
204+
containerfile, err := filesystem.ReadFile(filepath.Join(absDir, ContainerfileName))
204205
if err != nil {
205206
return "", "", err
206207
}

pkg/cmd/builder/build.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ func generateBuildctlArgs(ctx context.Context, client *containerd.Client, option
467467
}
468468

469469
func getDigestFromMetaFile(path string) (string, error) {
470-
data, err := os.ReadFile(path)
470+
data, err := filesystem.ReadFile(path)
471471
if err != nil {
472472
return "", err
473473
}

pkg/composer/create.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/containerd/log"
3030

3131
"github.com/containerd/nerdctl/v2/pkg/composer/serviceparser"
32+
"github.com/containerd/nerdctl/v2/pkg/internal/filesystem"
3233
"github.com/containerd/nerdctl/v2/pkg/labels"
3334
)
3435

@@ -208,7 +209,7 @@ func (c *Composer) createServiceContainer(ctx context.Context, service *servicep
208209
return "", fmt.Errorf("error while creating container %s: %w", container.Name, err)
209210
}
210211

211-
cid, err := os.ReadFile(cidFilename)
212+
cid, err := filesystem.ReadFile(cidFilename)
212213
if err != nil {
213214
return "", fmt.Errorf("error while creating container %s: %w", container.Name, err)
214215
}

pkg/composer/up_service.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131
"github.com/containerd/log"
3232

3333
"github.com/containerd/nerdctl/v2/pkg/composer/serviceparser"
34+
"github.com/containerd/nerdctl/v2/pkg/internal/filesystem"
3435
"github.com/containerd/nerdctl/v2/pkg/labels"
3536
)
3637

@@ -198,7 +199,7 @@ func (c *Composer) upServiceContainer(ctx context.Context, service *serviceparse
198199
return "", fmt.Errorf("error while creating container %s: %w", container.Name, err)
199200
}
200201

201-
cid, err := os.ReadFile(cidFilename)
202+
cid, err := filesystem.ReadFile(cidFilename)
202203
if err != nil {
203204
return "", fmt.Errorf("error while creating container %s: %w", container.Name, err)
204205
}

pkg/containerutil/container_network_manager.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,7 @@ func (m *hostNetworkManager) ContainerNetworkingOpts(_ context.Context, containe
686686
return nil, nil, err
687687
}
688688

689-
content, err := os.ReadFile("/etc/hosts")
689+
content, err := filesystem.ReadFile("/etc/hosts")
690690
if err != nil {
691691
return nil, nil, err
692692
}

pkg/dnsutil/hostsstore/hostsstore.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -352,14 +352,7 @@ func (x *hostsStore) updateAllHosts() (err error) {
352352
return err
353353
}
354354

355-
// Because the file is mounted, we cannot do atomic writes here as that would change inode.
356-
// The practical implications of this are that a partial / interrupted write would leave the hosts file with
357-
// an invalid entry and/or missing entries. At worse, this would lead to a container losing localhost network
358-
// capabilities.
359-
// Proper consistency requires that we would have a rollback mechanism in case of recoverable failure,
360-
// and a disaster management / cleanup mechanism, presumably at the top-level of the operation.
361-
// nolint:forbidigo
362-
err = os.WriteFile(loc, buf.Bytes(), 0o644)
355+
err = filesystem.WriteFile(loc, buf.Bytes(), 0o644)
363356
if err != nil {
364357
log.L.WithError(err).Errorf("failed to write hosts file for %q", entry)
365358
}

pkg/logging/logging.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ func LoadLogConfig(dataStore, ns, id string) (LogConfig, error) {
142142
logConfig := LogConfig{}
143143

144144
logConfigFilePath := LogConfigFilePath(dataStore, ns, id)
145-
logConfigData, err := os.ReadFile(logConfigFilePath)
145+
logConfigData, err := filesystem.ReadFile(logConfigFilePath)
146146
if err != nil {
147147
return logConfig, fmt.Errorf("failed to read log config file %q: %w", logConfigFilePath, err)
148148
}

pkg/netutil/netutil.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
"github.com/containerd/log"
3838

3939
"github.com/containerd/nerdctl/v2/pkg/api/types"
40+
"github.com/containerd/nerdctl/v2/pkg/internal/filesystem"
4041
"github.com/containerd/nerdctl/v2/pkg/labels"
4142
"github.com/containerd/nerdctl/v2/pkg/netutil/nettype"
4243
subnetutil "github.com/containerd/nerdctl/v2/pkg/netutil/subnet"
@@ -481,7 +482,7 @@ func cniLoad(fileNames []string) (configList []*NetworkConfig, err error) {
481482

482483
for _, fileName = range fileNames {
483484
var bytes []byte
484-
bytes, err = os.ReadFile(fileName)
485+
bytes, err = filesystem.ReadFile(fileName)
485486
if err != nil {
486487
return nil, fmt.Errorf("error reading %s: %w", fileName, err)
487488
}

0 commit comments

Comments
 (0)