subpath

package
v0.0.0-...-da7db65 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 18, 2021 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type FakeSubpath

type FakeSubpath struct{}

FakeSubpath is a subpather implementation for testing

func (*FakeSubpath) CleanSubPaths

func (fs *FakeSubpath) CleanSubPaths(podDir string, volumeName string) error

CleanSubPaths is a fake implementation of CleanSubPaths. It is a noop

func (*FakeSubpath) PrepareSafeSubpath

func (fs *FakeSubpath) PrepareSafeSubpath(subPath Subpath) (newHostPath string, cleanupAction func(), err error)

PrepareSafeSubpath is a fake implementation of PrepareSafeSubpath. Always returns newHostPath == subPath.Path

func (*FakeSubpath) SafeMakeDir

func (fs *FakeSubpath) SafeMakeDir(pathname string, base string, perm os.FileMode) error

SafeMakeDir is a fake implementation of SafeMakeDir. It is a noop

type Interface

type Interface interface {
	// CleanSubPaths removes any bind-mounts created by PrepareSafeSubpath in given
	// pod volume directory.
	CleanSubPaths(poodDir string, volumeName string) error

	// PrepareSafeSubpath does everything that's necessary to prepare a subPath
	// that's 1) inside given volumePath and 2) immutable after this call.
	//
	// newHostPath - location of prepared subPath. It should be used instead of
	// hostName when running the container.
	// cleanupAction - action to run when the container is running or it failed to start.
	//
	// CleanupAction must be called immediately after the container with given
	// subpath starts. On the other hand, Interface.CleanSubPaths must be called
	// when the pod finishes.
	PrepareSafeSubpath(subPath Subpath) (newHostPath string, cleanupAction func(), err error)

	// SafeMakeDir creates subdir within given base. It makes sure that the
	// created directory does not escape given base directory mis-using
	// symlinks. Note that the function makes sure that it creates the directory
	// somewhere under the base, nothing else. E.g. if the directory already
	// exists, it may exist outside of the base due to symlinks.
	// This method should be used if the directory to create is inside volume
	// that's under user control. User must not be able to use symlinks to
	// escape the volume to create directories somewhere else.
	SafeMakeDir(subdir string, base string, perm os.FileMode) error
}

Interface defines the set of methods all subpathers must implement

func New

func New(mounter mount.Interface) Interface

New returns a subpath.Interface for the current system

func NewNSEnter

func NewNSEnter(mounter mount.Interface, ne *nsenter.Nsenter, rootDir string) Interface

NewNSEnter returns a subpath.Interface that is to be used with the NsenterMounter It is only valid on Linux systems

type Subpath

type Subpath struct {
	// index of the VolumeMount for this container
	VolumeMountIndex int

	// Full path to the subpath directory on the host
	Path string

	// name of the volume that is a valid directory name.
	VolumeName string

	// Full path to the volume path
	VolumePath string

	// Path to the pod's directory, including pod UID
	PodDir string

	// Name of the container
	ContainerName string
}

Subpath defines the attributes of a subpath

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL