Skip to content

Commit 4989907

Browse files
committed
Filesystem package
Signed-off-by: apostasie <[email protected]>
1 parent 2a2834d commit 4989907

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+1711
-76
lines changed

.golangci.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ linters:
3131
- revive
3232
# Gocritic
3333
- gocritic
34+
- forbidigo
3435

3536
# 3. We used to use these, but have now removed them
3637

@@ -41,6 +42,10 @@ linters:
4142
# - nakedret
4243

4344
settings:
45+
forbidigo:
46+
forbid:
47+
- pattern: ^os\.WriteFile.*$
48+
msg: os.WriteFile is neither atomic nor durable - use nerdctl filesystem.WriteFile instead
4449
staticcheck:
4550
checks:
4651
# Below is the default set

cmd/nerdctl/compose/compose_up_linux_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package compose
1919
import (
2020
"fmt"
2121
"io"
22-
"os"
2322
"strings"
2423
"testing"
2524
"time"
@@ -32,6 +31,7 @@ import (
3231

3332
"github.com/containerd/nerdctl/v2/cmd/nerdctl/helpers"
3433
"github.com/containerd/nerdctl/v2/pkg/composer/serviceparser"
34+
"github.com/containerd/nerdctl/v2/pkg/filesystem"
3535
"github.com/containerd/nerdctl/v2/pkg/rootlessutil"
3636
"github.com/containerd/nerdctl/v2/pkg/testutil"
3737
"github.com/containerd/nerdctl/v2/pkg/testutil/nettestutil"
@@ -503,7 +503,7 @@ func TestComposeUpProfile(t *testing.T) {
503503
// write the env.common file to tmpdir
504504
tmpDir := t.TempDir()
505505
envFilePath := fmt.Sprintf("%s/env.common", tmpDir)
506-
err := os.WriteFile(envFilePath, []byte("TEST_ENV_INJECTION=WORKS\n"), 0644)
506+
err := filesystem.WriteFile(envFilePath, []byte("TEST_ENV_INJECTION=WORKS\n"), 0644)
507507
assert.NilError(t, err)
508508

509509
dockerComposeYAML := fmt.Sprintf(`

cmd/nerdctl/container/container_cp_acid_linux_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"gotest.tools/v3/icmd"
2727

2828
"github.com/containerd/nerdctl/v2/pkg/containerutil"
29+
"github.com/containerd/nerdctl/v2/pkg/filesystem"
2930
"github.com/containerd/nerdctl/v2/pkg/rootlessutil"
3031
"github.com/containerd/nerdctl/v2/pkg/testutil"
3132
"github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest"
@@ -70,7 +71,7 @@ func TestCopyAcid(t *testing.T) {
7071
base.Cmd("exec", roContainer, "sh", "-euxc", "cd /vol2/dir2/rw; ln -s ../../../ relativelinktoroot").AssertOK()
7172
base.Cmd("exec", roContainer, "sh", "-euxc", "cd /vol2/dir2/rw; ln -s / absolutelinktoroot").AssertOK()
7273
// Create file on the host
73-
err := os.WriteFile(sourceFile, sourceFileContent, filePerm)
74+
err := filesystem.WriteFile(sourceFile, sourceFileContent, filePerm)
7475
assert.NilError(t, err)
7576
}
7677

cmd/nerdctl/container/container_cp_linux_test.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
"gotest.tools/v3/icmd"
2929

3030
"github.com/containerd/nerdctl/v2/pkg/containerutil"
31+
"github.com/containerd/nerdctl/v2/pkg/filesystem"
3132
"github.com/containerd/nerdctl/v2/pkg/rootlessutil"
3233
"github.com/containerd/nerdctl/v2/pkg/testutil"
3334
"github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest"
@@ -453,7 +454,7 @@ func TestCopyFromContainer(t *testing.T) {
453454
ExitCode: 0,
454455
},
455456
setup: func(base *testutil.Base, container string, destPath string) {
456-
err := os.WriteFile(destPath, []byte(""), filePerm)
457+
err := filesystem.WriteFile(destPath, []byte(""), filePerm)
457458
assert.NilError(t, err)
458459
},
459460
},
@@ -464,7 +465,7 @@ func TestCopyFromContainer(t *testing.T) {
464465
ExitCode: 0,
465466
},
466467
setup: func(base *testutil.Base, container string, destPath string) {
467-
err := os.WriteFile(destPath, []byte(""), filePerm)
468+
err := filesystem.WriteFile(destPath, []byte(""), filePerm)
468469
assert.NilError(t, err)
469470
},
470471
},
@@ -476,7 +477,7 @@ func TestCopyFromContainer(t *testing.T) {
476477
Err: containerutil.ErrDestinationIsNotADir.Error(),
477478
},
478479
setup: func(base *testutil.Base, container string, destPath string) {
479-
err := os.WriteFile(destPath, []byte(""), filePerm)
480+
err := filesystem.WriteFile(destPath, []byte(""), filePerm)
480481
assert.NilError(t, err)
481482
},
482483
},
@@ -488,7 +489,7 @@ func TestCopyFromContainer(t *testing.T) {
488489
Err: containerutil.ErrDestinationIsNotADir.Error(),
489490
},
490491
setup: func(base *testutil.Base, container string, destPath string) {
491-
err := os.WriteFile(destPath, []byte(""), filePerm)
492+
err := filesystem.WriteFile(destPath, []byte(""), filePerm)
492493
assert.NilError(t, err)
493494
},
494495
},
@@ -588,7 +589,7 @@ func TestCopyFromContainer(t *testing.T) {
588589
setup: func(base *testutil.Base, container string, destPath string) {
589590
err := os.MkdirAll(filepath.Dir(destPath), dirPerm)
590591
assert.NilError(t, err)
591-
err = os.WriteFile(destPath, []byte(""), filePerm)
592+
err = filesystem.WriteFile(destPath, []byte(""), filePerm)
592593
assert.NilError(t, err)
593594
},
594595
},
@@ -602,7 +603,7 @@ func TestCopyFromContainer(t *testing.T) {
602603
setup: func(base *testutil.Base, container string, destPath string) {
603604
err := os.MkdirAll(filepath.Dir(destPath), dirPerm)
604605
assert.NilError(t, err)
605-
err = os.WriteFile(destPath, []byte(""), filePerm)
606+
err = filesystem.WriteFile(destPath, []byte(""), filePerm)
606607
assert.NilError(t, err)
607608
},
608609
},
@@ -616,7 +617,7 @@ func TestCopyFromContainer(t *testing.T) {
616617
setup: func(base *testutil.Base, container string, destPath string) {
617618
err := os.MkdirAll(filepath.Dir(destPath), dirPerm)
618619
assert.NilError(t, err)
619-
err = os.WriteFile(destPath, []byte(""), filePerm)
620+
err = filesystem.WriteFile(destPath, []byte(""), filePerm)
620621
assert.NilError(t, err)
621622
},
622623
},
@@ -630,7 +631,7 @@ func TestCopyFromContainer(t *testing.T) {
630631
setup: func(base *testutil.Base, container string, destPath string) {
631632
err := os.MkdirAll(filepath.Dir(destPath), dirPerm)
632633
assert.NilError(t, err)
633-
err = os.WriteFile(destPath, []byte(""), filePerm)
634+
err = filesystem.WriteFile(destPath, []byte(""), filePerm)
634635
assert.NilError(t, err)
635636
},
636637
},
@@ -838,7 +839,7 @@ func cpTestHelper(t *testing.T, tg *testgroup) {
838839
// Create file on the host
839840
err := os.MkdirAll(filepath.Dir(sourceFile), dirPerm)
840841
assert.NilError(t, err)
841-
err = os.WriteFile(sourceFile, sourceFileContent, filePerm)
842+
err = filesystem.WriteFile(sourceFile, sourceFileContent, filePerm)
842843
assert.NilError(t, err)
843844
}
844845

cmd/nerdctl/container/container_inspect_linux_test.go

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

34+
"github.com/containerd/nerdctl/v2/pkg/filesystem"
3435
"github.com/containerd/nerdctl/v2/pkg/infoutil"
3536
"github.com/containerd/nerdctl/v2/pkg/inspecttypes/dockercompat"
3637
"github.com/containerd/nerdctl/v2/pkg/labels"
@@ -535,7 +536,7 @@ RUN groupadd -r test && useradd -r -g test test
535536
USER test
536537
`, testutil.UbuntuImage)
537538

538-
err := os.WriteFile(filepath.Join(data.Temp().Path(), "Dockerfile"), []byte(dockerfile), 0o600)
539+
err := filesystem.WriteFile(filepath.Join(data.Temp().Path(), "Dockerfile"), []byte(dockerfile), 0o600)
539540
assert.NilError(helpers.T(), err)
540541

541542
helpers.Ensure("build", "-t", data.Identifier(), data.Temp().Path())

cmd/nerdctl/container/container_run_cgroup_linux_test.go

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

3939
"github.com/containerd/nerdctl/v2/pkg/cmd/container"
40+
"github.com/containerd/nerdctl/v2/pkg/filesystem"
4041
"github.com/containerd/nerdctl/v2/pkg/idutil/containerwalker"
4142
"github.com/containerd/nerdctl/v2/pkg/testutil"
4243
"github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest"
@@ -246,7 +247,7 @@ func TestRunDevice(t *testing.T) {
246247
assert.NilError(t, err)
247248
t.Logf("lo[%d] = %+v", i, lo[i])
248249
loContent := fmt.Sprintf("lo%d-content", i)
249-
assert.NilError(t, os.WriteFile(lo[i].Device, []byte(loContent), 0o700))
250+
assert.NilError(t, filesystem.WriteFile(lo[i].Device, []byte(loContent), 0o700))
250251
data.Labels().Set("loContent"+strconv.Itoa(i), loContent)
251252
}
252253

cmd/nerdctl/container/container_run_linux_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import (
3838
"github.com/containerd/nerdctl/mod/tigron/test"
3939

4040
"github.com/containerd/nerdctl/v2/cmd/nerdctl/helpers"
41+
"github.com/containerd/nerdctl/v2/pkg/filesystem"
4142
"github.com/containerd/nerdctl/v2/pkg/rootlessutil"
4243
"github.com/containerd/nerdctl/v2/pkg/strutil"
4344
"github.com/containerd/nerdctl/v2/pkg/testutil"
@@ -188,7 +189,7 @@ func TestRunIpcHost(t *testing.T) {
188189
base := testutil.NewBase(t)
189190
testFilePath := filepath.Join("/dev/shm",
190191
fmt.Sprintf("%s-%d-%s", testutil.Identifier(t), os.Geteuid(), base.Target))
191-
err := os.WriteFile(testFilePath, []byte(""), 0644)
192+
err := filesystem.WriteFile(testFilePath, []byte(""), 0644)
192193
assert.NilError(base.T, err)
193194
defer os.Remove(testFilePath)
194195

@@ -691,7 +692,7 @@ func TestRunDeviceCDIWithNerdctlConfig(t *testing.T) {
691692
writeTestCDISpec(t, cdiSpecDir)
692693

693694
tomlPath := filepath.Join(t.TempDir(), "nerdctl.toml")
694-
err := os.WriteFile(tomlPath, []byte(fmt.Sprintf(`
695+
err := filesystem.WriteFile(tomlPath, []byte(fmt.Sprintf(`
695696
cdi_spec_dirs = ["%s"]
696697
`, cdiSpecDir)), 0400)
697698
assert.NilError(t, err)
@@ -719,6 +720,6 @@ devices:
719720
err := os.MkdirAll(cdiSpecDir, 0700)
720721
assert.NilError(t, err)
721722
cdiSpecPath := filepath.Join(cdiSpecDir, "vendor1.yaml")
722-
err = os.WriteFile(cdiSpecPath, []byte(testCDIVendor1), 0400)
723+
err = filesystem.WriteFile(cdiSpecPath, []byte(testCDIVendor1), 0400)
723724
assert.NilError(t, err)
724725
}

cmd/nerdctl/helpers/testing.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@ import (
2626
"testing"
2727

2828
"gotest.tools/v3/assert"
29+
30+
"github.com/containerd/nerdctl/v2/pkg/filesystem"
2931
)
3032

3133
func CreateBuildContext(t *testing.T, dockerfile string) string {
3234
tmpDir := t.TempDir()
33-
err := os.WriteFile(filepath.Join(tmpDir, "Dockerfile"), []byte(dockerfile), 0644)
35+
err := filesystem.WriteFile(filepath.Join(tmpDir, "Dockerfile"), []byte(dockerfile), 0644)
3436
assert.NilError(t, err)
3537
return tmpDir
3638
}

cmd/nerdctl/image/image_list_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package image
1919
import (
2020
"errors"
2121
"fmt"
22-
"os"
2322
"path/filepath"
2423
"runtime"
2524
"slices"
@@ -32,6 +31,7 @@ import (
3231
"github.com/containerd/nerdctl/mod/tigron/require"
3332
"github.com/containerd/nerdctl/mod/tigron/test"
3433

34+
"github.com/containerd/nerdctl/v2/pkg/filesystem"
3535
"github.com/containerd/nerdctl/v2/pkg/tabutil"
3636
"github.com/containerd/nerdctl/v2/pkg/testutil"
3737
"github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest"
@@ -149,7 +149,7 @@ LABEL version=0.1
149149
RUN echo "actually creating a layer so that docker sets the createdAt time"
150150
`, testutil.CommonImage)
151151
buildCtx := data.Temp().Path()
152-
err := os.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
152+
err := filesystem.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
153153
assert.NilError(helpers.T(), err)
154154
data.Labels().Set("buildCtx", buildCtx)
155155
},
@@ -296,7 +296,7 @@ func TestImagesFilterDangling(t *testing.T) {
296296
CMD ["echo", "nerdctl-build-notag-string"]
297297
`, testutil.CommonImage)
298298
buildCtx := data.Temp().Path()
299-
err := os.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
299+
err := filesystem.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
300300
assert.NilError(helpers.T(), err)
301301
data.Labels().Set("buildCtx", buildCtx)
302302
},

cmd/nerdctl/image/image_prune_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package image
1818

1919
import (
2020
"fmt"
21-
"os"
2221
"path/filepath"
2322
"strings"
2423
"testing"
@@ -30,6 +29,7 @@ import (
3029
"github.com/containerd/nerdctl/mod/tigron/require"
3130
"github.com/containerd/nerdctl/mod/tigron/test"
3231

32+
"github.com/containerd/nerdctl/v2/pkg/filesystem"
3333
"github.com/containerd/nerdctl/v2/pkg/testutil"
3434
"github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest"
3535
)
@@ -72,7 +72,7 @@ func TestImagePrune(t *testing.T) {
7272
`, testutil.CommonImage)
7373

7474
buildCtx := data.Temp().Path()
75-
err := os.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
75+
err := filesystem.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
7676
assert.NilError(helpers.T(), err)
7777
helpers.Ensure("build", buildCtx)
7878
// After we rebuild with tag, docker will no longer show the <none> version from above
@@ -120,7 +120,7 @@ func TestImagePrune(t *testing.T) {
120120
`, testutil.CommonImage)
121121

122122
buildCtx := data.Temp().Path()
123-
err := os.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
123+
err := filesystem.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
124124
assert.NilError(helpers.T(), err)
125125
helpers.Ensure("build", buildCtx)
126126
helpers.Ensure("build", "-t", identifier, buildCtx)
@@ -164,7 +164,7 @@ CMD ["echo", "nerdctl-test-image-prune-filter-label"]
164164
LABEL foo=bar
165165
LABEL version=0.1`, testutil.CommonImage)
166166
buildCtx := data.Temp().Path()
167-
err := os.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
167+
err := filesystem.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
168168
assert.NilError(helpers.T(), err)
169169
helpers.Ensure("build", "-t", data.Identifier(), buildCtx)
170170
imgList := helpers.Capture("images")
@@ -204,7 +204,7 @@ LABEL version=0.1`, testutil.CommonImage)
204204
RUN echo "Anything, so that we create actual content for docker to set the current time for CreatedAt"
205205
CMD ["echo", "nerdctl-test-image-prune-until"]`, testutil.CommonImage)
206206
buildCtx := data.Temp().Path()
207-
err := os.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
207+
err := filesystem.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
208208
assert.NilError(helpers.T(), err)
209209
helpers.Ensure("build", "-t", data.Identifier(), buildCtx)
210210
imgList := helpers.Capture("images")

cmd/nerdctl/ipfs/ipfs_registry_linux_test.go

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

34+
"github.com/containerd/nerdctl/v2/pkg/filesystem"
3435
"github.com/containerd/nerdctl/v2/pkg/testutil"
3536
"github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest"
3637
)
@@ -138,7 +139,7 @@ CMD ["echo", "nerdctl-build-test-string"]
138139
`, data.Labels().Get(ipfsImageURLKey))
139140

140141
buildCtx := data.Temp().Path()
141-
err := os.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
142+
err := filesystem.WriteFile(filepath.Join(buildCtx, "Dockerfile"), []byte(dockerfile), 0o600)
142143
assert.NilError(helpers.T(), err)
143144

144145
helpers.Ensure("build", "-t", data.Identifier("built-image"), buildCtx)

cmd/nerdctl/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ import (
4747
"github.com/containerd/nerdctl/v2/pkg/config"
4848
ncdefaults "github.com/containerd/nerdctl/v2/pkg/defaults"
4949
"github.com/containerd/nerdctl/v2/pkg/errutil"
50+
"github.com/containerd/nerdctl/v2/pkg/filesystem"
5051
"github.com/containerd/nerdctl/v2/pkg/logging"
5152
"github.com/containerd/nerdctl/v2/pkg/rootlessutil"
52-
"github.com/containerd/nerdctl/v2/pkg/store"
5353
"github.com/containerd/nerdctl/v2/pkg/version"
5454
)
5555

cmd/nerdctl/volume/volume_inspect_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,15 @@ import (
3232
"github.com/containerd/nerdctl/mod/tigron/test"
3333
"github.com/containerd/nerdctl/mod/tigron/tig"
3434

35+
"github.com/containerd/nerdctl/v2/pkg/filesystem"
3536
"github.com/containerd/nerdctl/v2/pkg/inspecttypes/native"
3637
"github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest"
3738
)
3839

3940
func createFileWithSize(mountPoint string, size int64) error {
4041
token := make([]byte, size)
4142
_, _ = rand.Read(token)
42-
err := os.WriteFile(filepath.Join(mountPoint, "test-file"), token, 0644)
43+
err := filesystem.WriteFile(filepath.Join(mountPoint, "test-file"), token, 0644)
4344
return err
4445
}
4546

docs/dev/auditing_dockerfile.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ On a warm cache, it is still over 150MB and 30+ seconds.
255255
In and of itself, this is hard to reduce, as we need these...
256256

257257
Actions:
258-
- [ ] we could cache the module download location to reduce round-trips on modules that are shared accross
258+
- [ ] we could cache the module download location to reduce round-trips on modules that are shared across
259259
different projects
260260
- [ ] we are likely installing nerdctl modules six times - (once per architecture during the build phase, then once per
261261
ubuntu version and architecture during the tests runs (this is not even accounted for in the audit above)) - it should

docs/dev/store.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ containers can be named the same), etc.
2323
However, storing data on the filesystem in a reliable way comes with challenges:
2424
- incomplete writes may happen (because of a system restart, or an application crash), leaving important structured files
2525
in a broken state
26-
- concurrent writes, or reading while writing would obviously be a problem as well, be it accross goroutines, or between
26+
- concurrent writes, or reading while writing would obviously be a problem as well, be it across goroutines, or between
2727
concurrent executions of the nerdctl binary, or embedded in a third-party application that does concurrently access resources
2828

2929
The `pkg/store` package does provide a "storage" abstraction that takes care of these issues, generally providing

docs/dir.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ Data volume
6565

6666
Can be overridden with `nerdctl --cni-netconfpath=<NETCONFPATH>` flag and environment variable `$NETCONFPATH`.
6767

68-
At the top-level of <NETCONFPATH>, network (files) are shared accross all namespaces.
68+
At the top-level of <NETCONFPATH>, network (files) are shared across all namespaces.
6969
Sub-folders inside <NETCONFPATH> are only available to the namespace bearing the same name,
7070
and its networks definitions are private.
7171

0 commit comments

Comments
 (0)