diff --git a/pkg/kubelet/kubeletconfig/util/filesystem/BUILD b/pkg/util/filesystem/BUILD similarity index 100% rename from pkg/kubelet/kubeletconfig/util/filesystem/BUILD rename to pkg/util/filesystem/BUILD diff --git a/pkg/kubelet/kubeletconfig/util/filesystem/defaultfs.go b/pkg/util/filesystem/defaultfs.go similarity index 81% rename from pkg/kubelet/kubeletconfig/util/filesystem/defaultfs.go rename to pkg/util/filesystem/defaultfs.go index 3840da0cde3..fca8f76b3c2 100644 --- a/pkg/kubelet/kubeletconfig/util/filesystem/defaultfs.go +++ b/pkg/util/filesystem/defaultfs.go @@ -19,12 +19,15 @@ package filesystem import ( "io/ioutil" "os" + "path/filepath" "time" ) // DefaultFs implements Filesystem using same-named functions from "os" and "io/ioutil" type DefaultFs struct{} +var _ Filesystem = DefaultFs{} + // Stat via os.Stat func (DefaultFs) Stat(name string) (os.FileInfo, error) { return os.Stat(name) @@ -54,12 +57,17 @@ func (DefaultFs) Chtimes(name string, atime time.Time, mtime time.Time) error { return os.Chtimes(name, atime, mtime) } -// ReadFile via os.ReadFile +// RemoveAll via os.RemoveAll +func (DefaultFs) RemoveAll(path string) error { + return os.RemoveAll(path) +} + +// ReadFile via ioutil.ReadFile func (DefaultFs) ReadFile(filename string) ([]byte, error) { return ioutil.ReadFile(filename) } -// TempFile via os.TempFile +// TempFile via ioutil.TempFile func (DefaultFs) TempFile(dir, prefix string) (File, error) { file, err := ioutil.TempFile(dir, prefix) if err != nil { @@ -68,6 +76,16 @@ func (DefaultFs) TempFile(dir, prefix string) (File, error) { return &defaultFile{file}, nil } +// ReadDir via ioutil.ReadDir +func (DefaultFs) ReadDir(dirname string) ([]os.FileInfo, error) { + return ioutil.ReadDir(dirname) +} + +// Walk via filepath.Walk +func (DefaultFs) Walk(root string, walkFn filepath.WalkFunc) error { + return filepath.Walk(root, walkFn) +} + // defaultFile implements File using same-named functions from "os" type defaultFile struct { file *os.File diff --git a/pkg/kubelet/kubeletconfig/util/filesystem/fakefs.go b/pkg/util/filesystem/fakefs.go similarity index 83% rename from pkg/kubelet/kubeletconfig/util/filesystem/fakefs.go rename to pkg/util/filesystem/fakefs.go index 7bbce8cc5a7..dfb727bd439 100644 --- a/pkg/kubelet/kubeletconfig/util/filesystem/fakefs.go +++ b/pkg/util/filesystem/fakefs.go @@ -21,6 +21,7 @@ import ( "time" "github.com/spf13/afero" + "path/filepath" ) // fakeFs is implemented in terms of afero @@ -62,12 +63,12 @@ func (fs *fakeFs) Chtimes(name string, atime time.Time, mtime time.Time) error { return fs.a.Fs.Chtimes(name, atime, mtime) } -// ReadFile via afero.Fs.ReadFile +// ReadFile via afero.ReadFile func (fs *fakeFs) ReadFile(filename string) ([]byte, error) { return fs.a.ReadFile(filename) } -// TempFile via afero.Fs.TempFile +// TempFile via afero.TempFile func (fs *fakeFs) TempFile(dir, prefix string) (File, error) { file, err := fs.a.TempFile(dir, prefix) if err != nil { @@ -76,6 +77,21 @@ func (fs *fakeFs) TempFile(dir, prefix string) (File, error) { return &fakeFile{file}, nil } +// ReadDir via afero.ReadDir +func (fs *fakeFs) ReadDir(dirname string) ([]os.FileInfo, error) { + return fs.a.ReadDir(dirname) +} + +// Walk via afero.Walk +func (fs *fakeFs) Walk(root string, walkFn filepath.WalkFunc) error { + return fs.a.Walk(root, walkFn) +} + +// RemoveAll via afero.RemoveAll +func (fs *fakeFs) RemoveAll(path string) error { + return fs.a.RemoveAll(path) +} + // fakeFile implements File; for use with fakeFs type fakeFile struct { file afero.File diff --git a/pkg/kubelet/kubeletconfig/util/filesystem/filesystem.go b/pkg/util/filesystem/filesystem.go similarity index 90% rename from pkg/kubelet/kubeletconfig/util/filesystem/filesystem.go rename to pkg/util/filesystem/filesystem.go index 2396681faf0..e65897bfd91 100644 --- a/pkg/kubelet/kubeletconfig/util/filesystem/filesystem.go +++ b/pkg/util/filesystem/filesystem.go @@ -18,6 +18,7 @@ package filesystem import ( "os" + "path/filepath" "time" ) @@ -29,10 +30,13 @@ type Filesystem interface { Rename(oldpath, newpath string) error MkdirAll(path string, perm os.FileMode) error Chtimes(name string, atime time.Time, mtime time.Time) error + RemoveAll(path string) error // from "io/ioutil" ReadFile(filename string) ([]byte, error) TempFile(dir, prefix string) (File, error) + ReadDir(dirname string) ([]os.FileInfo, error) + Walk(root string, walkFn filepath.WalkFunc) error } // File is an interface that we can use to mock various filesystem operations typically