package filesystem
import "k8s.io/kubernetes/pkg/util/filesystem"
Index ¶
- Constants
- func Chmod(path string, filemode os.FileMode) error
- func IsUnixDomainSocket(filePath string) (bool, error)
- func MkdirAll(path string, perm os.FileMode) error
- func MkdirAllWithPathCheck(path string, perm os.FileMode) error
- type DefaultFs
- func (fs *DefaultFs) Chtimes(name string, atime time.Time, mtime time.Time) error
- func (fs *DefaultFs) Create(name string) (File, error)
- func (fs *DefaultFs) MkdirAll(path string, perm os.FileMode) error
- func (fs *DefaultFs) ReadDir(dirname string) ([]os.DirEntry, error)
- func (fs *DefaultFs) ReadFile(filename string) ([]byte, error)
- func (fs *DefaultFs) Remove(name string) error
- func (fs *DefaultFs) RemoveAll(path string) error
- func (fs *DefaultFs) Rename(oldpath, newpath string) error
- func (fs *DefaultFs) Stat(name string) (os.FileInfo, error)
- func (fs *DefaultFs) TempDir(dir, prefix string) (string, error)
- func (fs *DefaultFs) TempFile(dir, prefix string) (File, error)
- func (fs *DefaultFs) Walk(root string, walkFn filepath.WalkFunc) error
- type FSErrorHandler
- type FSEventHandler
- type FSWatcher
- type File
- type Filesystem
Constants ¶
const ( // These aren't defined in the syscall package for Windows :( USER_READ = 0x100 USER_WRITE = 0x80 USER_EXECUTE = 0x40 GROUP_READ = 0x20 GROUP_WRITE = 0x10 GROUP_EXECUTE = 0x8 OTHERS_READ = 0x4 OTHERS_WRITE = 0x2 OTHERS_EXECUTE = 0x1 USER_ALL = USER_READ | USER_WRITE | USER_EXECUTE GROUP_ALL = GROUP_READ | GROUP_WRITE | GROUP_EXECUTE OTHERS_ALL = OTHERS_READ | OTHERS_WRITE | OTHERS_EXECUTE )
Functions ¶
func Chmod ¶
On Windows os.Chmod only sets the read-only flag on files, so we need to use Windows APIs to set the desired access on files / directories. The OWNER mode will set file permissions for the file owner SID, the GROUP mode will set file permissions for the file group SID, and the OTHERS mode will set file permissions for BUILTIN\Users. Please note that Windows containers can be run as one of two user accounts; ContainerUser or ContainerAdministrator. Containers run as ContainerAdministrator will inherit permissions from BUILTIN\Administrators, while containers run as ContainerUser will inherit permissions from BUILTIN\Users. Windows containers do not have the ability to run as a custom user account that is known to the host so the OTHERS group mode is used to grant / deny permissions of files on the hosts to the ContainerUser account.
func IsUnixDomainSocket ¶
IsUnixDomainSocket returns whether a given file is a AF_UNIX socket file Note that due to the retry logic inside, it could take up to 4 seconds to determine whether or not the file path supplied is a Unix domain socket
func MkdirAll ¶
On Windows os.Mkdir all doesn't set any permissions so call the Chown function below to set permissions once the directory is created.
func MkdirAllWithPathCheck ¶
MkdirAllWithPathCheck checks if path exists already. If not, it creates a directory named path, along with any necessary parents, and returns nil, or else returns an error. Permission bits perm (before umask) are used for all directories that MkdirAllWithPathCheck creates. If path is already a directory, MkdirAllWithPathCheck does nothing and returns nil. NOTE: In case of Windows NTFS, mount points are implemented as reparse-point (similar to symlink) and do not represent actual directory. Hence Directory existence check for windows NTFS will NOT check for dir, but for symlink presence.
Types ¶
type DefaultFs ¶
type DefaultFs struct {
// contains filtered or unexported fields
}
DefaultFs implements Filesystem using same-named functions from "os" and "io"
func (*DefaultFs) Chtimes ¶
Chtimes via os.Chtimes
func (*DefaultFs) Create ¶
Create via os.Create
func (*DefaultFs) MkdirAll ¶
func (*DefaultFs) ReadDir ¶
ReadDir via os.ReadDir
func (*DefaultFs) ReadFile ¶
ReadFile via os.ReadFile
func (*DefaultFs) Remove ¶
Remove via os.Remove
func (*DefaultFs) RemoveAll ¶
RemoveAll via os.RemoveAll
func (*DefaultFs) Rename ¶
Rename via os.Rename
func (*DefaultFs) Stat ¶
Stat via os.Stat
func (*DefaultFs) TempDir ¶
TempDir via os.MkdirTemp
func (*DefaultFs) TempFile ¶
TempFile via os.CreateTemp
func (*DefaultFs) Walk ¶
Walk via filepath.Walk
type FSErrorHandler ¶
type FSErrorHandler func(err error)
FSErrorHandler is called when a fsnotify error occurs.
type FSEventHandler ¶
FSEventHandler is called when a fsnotify event occurs.
type FSWatcher ¶
type FSWatcher interface { // Initializes the watcher with the given watch handlers. // Called before all other methods. Init(FSEventHandler, FSErrorHandler) error // Starts listening for events and errors. // When an event or error occurs, the corresponding handler is called. Run() // Add a filesystem path to watch AddWatch(path string) error }
FSWatcher is a callback-based filesystem watcher abstraction for fsnotify.
func NewFsnotifyWatcher ¶
func NewFsnotifyWatcher() FSWatcher
NewFsnotifyWatcher returns an implementation of FSWatcher that continuously listens for fsnotify events and calls the event handler as soon as an event is received.
type File ¶
type File interface { // for now, the only os.File methods used are those below, add more as necessary Name() string Write(b []byte) (n int, err error) Sync() error Close() error }
File is an interface that we can use to mock various filesystem operations typically accessed through the File object from the "os" package
type Filesystem ¶
type Filesystem interface { // from "os" Stat(name string) (os.FileInfo, error) Create(name string) (File, error) 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 Remove(name string) error // from "os" ReadFile(filename string) ([]byte, error) TempDir(dir, prefix string) (string, error) TempFile(dir, prefix string) (File, error) ReadDir(dirname string) ([]os.DirEntry, error) Walk(root string, walkFn filepath.WalkFunc) error }
Filesystem is an interface that we can use to mock various filesystem operations
func NewTempFs ¶
func NewTempFs() Filesystem
NewTempFs returns a fake Filesystem in temporary directory, useful for unit tests
Source Files ¶
defaultfs.go filesystem.go util_windows.go watcher.go
- Version
- v1.29.10
- Published
- Oct 22, 2024
- Platform
- windows/amd64
- Imports
- 11 packages
- Last checked
- 1 minute ago –
Tools for package owners.