Documentation ¶
Overview ¶
* csimanager manages locally running CSI Plugins on a Nomad host, and provides a few different interfaces.
It provides:
- a pluginmanager.PluginManager implementation that is used to fingerprint and heartbeat local node plugins
- (TODO) a csimanager.AttachmentWaiter implementation that can be used to wait for an external CSIVolume to be attached to the node before returning
- (TODO) a csimanager.NodeController implementation that is used to manage the node-local portions of the CSI specification, and encompassess volume staging/publishing
- (TODO) a csimanager.VolumeChecker implementation that can be used by hooks to ensure their volumes are healthy(ish)
Index ¶
Constants ¶
View Source
const ( DefaultMountActionTimeout = 2 * time.Minute StagingDirName = "staging" AllocSpecificDirName = "per-alloc" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { Logger hclog.Logger DynamicRegistry dynamicplugins.Registry UpdateNodeCSIInfoFunc UpdateNodeCSIInfoFunc PluginResyncPeriod time.Duration TriggerNodeEvent TriggerNodeEvent }
type Manager ¶
type Manager interface { // PluginManager returns a PluginManager for use by the node fingerprinter. PluginManager() pluginmanager.PluginManager // WaitForPlugin waits for the plugin to become available, // or until its context is canceled or times out. WaitForPlugin(ctx context.Context, pluginType, pluginID string) error // MounterForPlugin returns a VolumeMounter for the plugin ID associated // with the volume. Returns an error if this plugin isn't registered. MounterForPlugin(ctx context.Context, pluginID string) (VolumeMounter, error) // Shutdown shuts down the Manager and unmounts any locally attached volumes. Shutdown() }
type TriggerNodeEvent ¶
type UpdateNodeCSIInfoFunc ¶
UpdateNodeCSIInfoFunc is the callback used to update the node from fingerprinting
type UsageOptions ¶
type UsageOptions struct { ReadOnly bool AttachmentMode structs.CSIVolumeAttachmentMode AccessMode structs.CSIVolumeAccessMode MountOptions *structs.CSIMountOptions }
func (*UsageOptions) ToFS ¶
func (u *UsageOptions) ToFS() string
ToFS is used by a VolumeManager to construct the path to where a volume should be staged/published. It should always return a string that is easy enough to manage as a filesystem path segment (e.g avoid starting the string with a special character).
type VolumeMounter ¶
type VolumeMounter interface { MountVolume(ctx context.Context, vol *structs.CSIVolume, alloc *structs.Allocation, usageOpts *UsageOptions, publishContext map[string]string) (*MountInfo, error) UnmountVolume(ctx context.Context, volID, remoteID, allocID string, usageOpts *UsageOptions) error HasMount(ctx context.Context, mountInfo *MountInfo) (bool, error) ExternalID() string }
Click to show internal directories.
Click to hide internal directories.