kubernetes: github.com/erimatnor/kubernetes/pkg/volume Index | Files | Directories

package volume

import "github.com/erimatnor/kubernetes/pkg/volume"

Package volume includes internal representations of external volume types as well as utility methods required to mount/unmount volumes to kubelets.

Index

Package Files

doc.go plugins.go testing.go util.go volume.go

func GetAccessModesAsString Uses

func GetAccessModesAsString(modes []api.AccessModeType) string

func NewFakeVolumeHost Uses

func NewFakeVolumeHost(rootDir string, kubeClient client.Interface, plugins []VolumePlugin) *fakeVolumeHost

func RenameDirectory Uses

func RenameDirectory(oldPath, newName string) (string, error)

type Builder Uses

type Builder interface {
    // Uses Interface to provide the path for Docker binds.
    Volume
    // SetUp prepares and mounts/unpacks the volume to a self-determined
    // directory path.  This may be called more than once, so
    // implementations must be idempotent.
    SetUp() error
    // SetUpAt prepares and mounts/unpacks the volume to the specified
    // directory path, which may or may not exist yet.  This may be called
    // more than once, so implementations must be idempotent.
    SetUpAt(dir string) error
}

Builder interface provides method to set up/mount the volume.

type Cleaner Uses

type Cleaner interface {
    Volume
    // TearDown unmounts the volume from a self-determined directory and
    // removes traces of the SetUp procedure.
    TearDown() error
    // TearDown unmounts the volume from the specified directory and
    // removes traces of the SetUp procedure.
    TearDownAt(dir string) error
}

Cleaner interface provides method to cleanup/unmount the volumes.

type FakeVolume Uses

type FakeVolume struct {
    PodUID  types.UID
    VolName string
    Plugin  *FakeVolumePlugin
}

func (*FakeVolume) GetPath Uses

func (fv *FakeVolume) GetPath() string

func (*FakeVolume) SetUp Uses

func (fv *FakeVolume) SetUp() error

func (*FakeVolume) SetUpAt Uses

func (fv *FakeVolume) SetUpAt(dir string) error

func (*FakeVolume) TearDown Uses

func (fv *FakeVolume) TearDown() error

func (*FakeVolume) TearDownAt Uses

func (fv *FakeVolume) TearDownAt(dir string) error

type FakeVolumePlugin Uses

type FakeVolumePlugin struct {
    PluginName string
    Host       VolumeHost
}

FakeVolumePlugin is useful for testing. It tries to be a fully compliant plugin, but all it does is make empty directories. Use as:

volume.RegisterPlugin(&FakePlugin{"fake-name"})

func (*FakeVolumePlugin) CanSupport Uses

func (plugin *FakeVolumePlugin) CanSupport(spec *Spec) bool

func (*FakeVolumePlugin) GetAccessModes Uses

func (plugin *FakeVolumePlugin) GetAccessModes() []api.AccessModeType

func (*FakeVolumePlugin) Init Uses

func (plugin *FakeVolumePlugin) Init(host VolumeHost)

func (*FakeVolumePlugin) Name Uses

func (plugin *FakeVolumePlugin) Name() string

func (*FakeVolumePlugin) NewBuilder Uses

func (plugin *FakeVolumePlugin) NewBuilder(spec *Spec, podRef *api.ObjectReference, opts VolumeOptions, mounter mount.Interface) (Builder, error)

func (*FakeVolumePlugin) NewCleaner Uses

func (plugin *FakeVolumePlugin) NewCleaner(volName string, podUID types.UID, mounter mount.Interface) (Cleaner, error)

type PersistentVolumePlugin Uses

type PersistentVolumePlugin interface {
    VolumePlugin
    // GetAccessModes describes the ways a given volume can be accessed/mounted.
    GetAccessModes() []api.AccessModeType
}

PersistentVolumePlugin is an extended interface of VolumePlugin and is used by volumes that want to provide long term persistence of data

type Spec Uses

type Spec struct {
    Name                   string
    VolumeSource           api.VolumeSource
    PersistentVolumeSource api.PersistentVolumeSource
}

Spec is an internal representation of a volume. All API volume types translate to Spec.

func NewSpecFromPersistentVolume Uses

func NewSpecFromPersistentVolume(pv *api.PersistentVolume) *Spec

NewSpecFromPersistentVolume creates an Spec from an api.PersistentVolume

func NewSpecFromVolume Uses

func NewSpecFromVolume(vs *api.Volume) *Spec

NewSpecFromVolume creates an Spec from an api.Volume

type Volume Uses

type Volume interface {
    // GetPath returns the directory path the volume is mounted to.
    GetPath() string
}

Volume represents a directory used by pods or hosts on a node. All method implementations of methods in the volume interface must be idempotent.

type VolumeHost Uses

type VolumeHost interface {
    // GetPluginDir returns the absolute path to a directory under which
    // a given plugin may store data.  This directory might not actually
    // exist on disk yet.  For plugin data that is per-pod, see
    // GetPodPluginDir().
    GetPluginDir(pluginName string) string

    // GetPodVolumeDir returns the absolute path a directory which
    // represents the named volume under the named plugin for the given
    // pod.  If the specified pod does not exist, the result of this call
    // might not exist.
    GetPodVolumeDir(podUID types.UID, pluginName string, volumeName string) string

    // GetPodPluginDir returns the absolute path to a directory under which
    // a given plugin may store data for a given pod.  If the specified pod
    // does not exist, the result of this call might not exist.  This
    // directory might not actually exist on disk yet.
    GetPodPluginDir(podUID types.UID, pluginName string) string

    // GetKubeClient returns a client interface
    GetKubeClient() client.Interface

    // NewWrapperBuilder finds an appropriate plugin with which to handle
    // the provided spec.  This is used to implement volume plugins which
    // "wrap" other plugins.  For example, the "secret" volume is
    // implemented in terms of the "emptyDir" volume.
    NewWrapperBuilder(spec *Spec, podRef *api.ObjectReference, opts VolumeOptions, mounter mount.Interface) (Builder, error)

    // NewWrapperCleaner finds an appropriate plugin with which to handle
    // the provided spec.  See comments on NewWrapperBuilder for more
    // context.
    NewWrapperCleaner(spec *Spec, podUID types.UID, mounter mount.Interface) (Cleaner, error)
}

VolumeHost is an interface that plugins can use to access the kubelet.

type VolumeOptions Uses

type VolumeOptions struct {
    // The rootcontext to use when performing mounts for a volume.
    RootContext string
}

VolumeOptions contains option information about a volume.

Currently, this struct containers only a single field for the rootcontext of the volume. This is a temporary measure in order to set the rootContext of tmpfs mounts correctly; it will be replaced and expanded on by future SecurityContext work.

type VolumePlugin Uses

type VolumePlugin interface {
    // Init initializes the plugin.  This will be called exactly once
    // before any New* calls are made - implementations of plugins may
    // depend on this.
    Init(host VolumeHost)

    // Name returns the plugin's name.  Plugins should use namespaced names
    // such as "example.com/volume".  The "kubernetes.io" namespace is
    // reserved for plugins which are bundled with kubernetes.
    Name() string

    // CanSupport tests whether the plugin supports a given volume
    // specification from the API.  The spec pointer should be considered
    // const.
    CanSupport(spec *Spec) bool

    // NewBuilder creates a new volume.Builder from an API specification.
    // Ownership of the spec pointer in *not* transferred.
    // - spec: The api.Volume spec
    // - podRef: a reference to the enclosing pod
    NewBuilder(spec *Spec, podRef *api.ObjectReference, opts VolumeOptions, mounter mount.Interface) (Builder, error)

    // NewCleaner creates a new volume.Cleaner from recoverable state.
    // - name: The volume name, as per the api.Volume spec.
    // - podUID: The UID of the enclosing pod
    NewCleaner(name string, podUID types.UID, mounter mount.Interface) (Cleaner, error)
}

VolumePlugin is an interface to volume plugins that can be used on a kubernetes node (e.g. by kubelet) to instantiate and manage volumes.

type VolumePluginMgr Uses

type VolumePluginMgr struct {
    // contains filtered or unexported fields
}

VolumePluginMgr tracks registered plugins.

func (*VolumePluginMgr) FindPersistentPluginByName Uses

func (pm *VolumePluginMgr) FindPersistentPluginByName(name string) (PersistentVolumePlugin, error)

FindPluginByName fetches a plugin by name or by legacy name. If no plugin is found, returns error.

func (*VolumePluginMgr) FindPluginByName Uses

func (pm *VolumePluginMgr) FindPluginByName(name string) (VolumePlugin, error)

FindPluginByName fetches a plugin by name or by legacy name. If no plugin is found, returns error.

func (*VolumePluginMgr) FindPluginBySpec Uses

func (pm *VolumePluginMgr) FindPluginBySpec(spec *Spec) (VolumePlugin, error)

FindPluginBySpec looks for a plugin that can support a given volume specification. If no plugins can support or more than one plugin can support it, return error.

func (*VolumePluginMgr) InitPlugins Uses

func (pm *VolumePluginMgr) InitPlugins(plugins []VolumePlugin, host VolumeHost) error

InitPlugins initializes each plugin. All plugins must have unique names. This must be called exactly once before any New* methods are called on any plugins.

Directories

PathSynopsis
aws_ebs
empty_dir
gce_pd
git_repo
glusterfs
host_path
iscsi
nfs
persistent_claim
secret
utilContains utility code for use by volume plugins.

Package volume imports 13 packages (graph). Updated 2017-05-11. Refresh now. Tools for package owners.