volume

package
v2.2.1+incompatible Latest Latest
Warning

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

Go to latest
Published: Apr 23, 2019 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetSnapshotType

func GetSnapshotType(snap *snapv1.VolumeSnapshot) string

GetSnapshotType gets the snapshot type

func IsNodeMatch added in v1.1.4

func IsNodeMatch(k8sNode *v1.Node, driverNode *NodeInfo) bool

IsNodeMatch There are a couple of things that need to be checked to see if the driver node matched the k8s node since different k8s installs set the node name, hostname and IPs differently

func Register

func Register(name string, d Driver) error

Register registers the given volume driver

Types

type ClusterDomainsNotSupported

type ClusterDomainsNotSupported struct{}

ClusterDomainsNotSupported to be used by drivers that don't support cluster domains

func (*ClusterDomainsNotSupported) ActivateClusterDomain

ActivateClusterDomain activates a cluster domain

func (*ClusterDomainsNotSupported) DeactivateClusterDomain

func (c *ClusterDomainsNotSupported) DeactivateClusterDomain(*stork_crd.ClusterDomainUpdate) error

DeactivateClusterDomain deactivates a cluster domain

func (*ClusterDomainsNotSupported) GetClusterDomains

func (c *ClusterDomainsNotSupported) GetClusterDomains() (*stork_crd.ClusterDomains, error)

GetClusterDomains returns all the cluster domains and their status

type ClusterDomainsPluginInterface

type ClusterDomainsPluginInterface interface {
	// GetClusterDomains returns all the cluster domains and their status
	GetClusterDomains() (*stork_crd.ClusterDomains, error)
	// ActivateClusterDomain activates a cluster domain
	ActivateClusterDomain(*stork_crd.ClusterDomainUpdate) error
	// DeactivateClusterDomain deactivates a cluster domain
	DeactivateClusterDomain(*stork_crd.ClusterDomainUpdate) error
}

ClusterDomainsPluginInterface Interface to manage cluster domains

type ClusterPairNotSupported

type ClusterPairNotSupported struct{}

ClusterPairNotSupported to be used by drivers that don't support pairing

func (*ClusterPairNotSupported) CreatePair

CreatePair Returns ErrNotSupported

func (*ClusterPairNotSupported) DeletePair

DeletePair Returns ErrNotSupported

type ClusterPairPluginInterface

type ClusterPairPluginInterface interface {
	// Create a pair with a remote cluster
	CreatePair(*stork_crd.ClusterPair) (string, error)
	// Deletes a paring with a remote cluster
	DeletePair(*stork_crd.ClusterPair) error
}

ClusterPairPluginInterface Interface to pair clusters

type Driver

type Driver interface {
	// Init initializes the volume driver.
	Init(interface{}) error

	// String returns the string name of this driver.
	String() string

	// InspectVolume returns information about a volume.
	InspectVolume(volumeID string) (*Info, error)

	// GetNodes Get the list of nodes where the driver is available
	GetNodes() ([]*NodeInfo, error)

	// GetPodVolumes Get all the volumes used by a pod backed by the driver
	GetPodVolumes(*v1.PodSpec, string) ([]*Info, error)

	// GetVolumeClaimTemplates Get all the volume templates from the list backed by
	// the driver
	GetVolumeClaimTemplates([]v1.PersistentVolumeClaim) ([]v1.PersistentVolumeClaim, error)

	// OwnsPVC returns true if the PVC is owned by the driver
	OwnsPVC(pvc *v1.PersistentVolumeClaim) bool

	// GetSnapshotPlugin Get the snapshot plugin to be used for the driver
	GetSnapshotPlugin() snapshotVolume.Plugin

	// GetSnapshotType Get the type of the snapshot. Return error is snapshot
	// doesn't belong to driver
	GetSnapshotType(snap *snapv1.VolumeSnapshot) (string, error)

	// Stop the driver
	Stop() error

	// GetClusterID returns the clusterID for the driver
	GetClusterID() (string, error)

	// GroupSnapshotPluginInterface Interface for group snapshots
	GroupSnapshotPluginInterface
	// ClusterPairPluginInterface Interface to pair clusters
	ClusterPairPluginInterface
	// MigratePluginInterface Interface to migrate data between clusters
	MigratePluginInterface
	// ClusterDomainsPluginInterface Interface to manage cluster domains
	ClusterDomainsPluginInterface
}

Driver defines an external volume driver interface. Any driver that wants to be used with stork needs to implement these interfaces.

func Get

func Get(name string) (Driver, error)

Get an external storage provider to be used with Stork

type ErrPVCPending

type ErrPVCPending struct {
	// Name of the PVC
	Name string
}

ErrPVCPending PVC hasn't been bound yet

func (*ErrPVCPending) Error

func (e *ErrPVCPending) Error() string

type GroupSnapshotCreateResponse

type GroupSnapshotCreateResponse struct {
	Snapshots []*stork_crd.VolumeSnapshotStatus
}

GroupSnapshotCreateResponse is the response for the group snapshot operation

type GroupSnapshotNotSupported

type GroupSnapshotNotSupported struct{}

GroupSnapshotNotSupported to be used by drivers that don't support group snapshots

func (*GroupSnapshotNotSupported) CreateGroupSnapshot

CreateGroupSnapshot returns ErrNotSupported

func (*GroupSnapshotNotSupported) DeleteGroupSnapshot

DeleteGroupSnapshot returns ErrNotSupported

func (*GroupSnapshotNotSupported) GetGroupSnapshotStatus

GetGroupSnapshotStatus returns ErrNotSupported

type GroupSnapshotPluginInterface

type GroupSnapshotPluginInterface interface {
	// CreateGroupSnapshot creates a group snapshot with the given pvcs
	CreateGroupSnapshot(snap *stork_crd.GroupVolumeSnapshot) (*GroupSnapshotCreateResponse, error)
	// GetGroupSnapshotStatus returns status of group snapshot
	GetGroupSnapshotStatus(snap *stork_crd.GroupVolumeSnapshot) (*GroupSnapshotCreateResponse, error)
	// DeleteGroupSnapshot delete a group snapshot with the given spec
	DeleteGroupSnapshot(snap *stork_crd.GroupVolumeSnapshot) error
}

GroupSnapshotPluginInterface is used to perform group snapshot operations

type Info

type Info struct {
	// VolumeID is a unique identifier for the volume
	VolumeID string
	// VolumeName is the name for the volume
	VolumeName string
	// DataNodes is a list of nodes where the data for the volume resides
	DataNodes []string
	// Size is the size of the volume in GB
	Size uint64
	// ParentID points to the ID of the parent volume for snapshots
	ParentID string
	// Labels are user applied labels on the volume
	Labels map[string]string
	// VolumeSourceRef is a optional reference to the source of the volume
	VolumeSourceRef interface{}
}

Info Information about a volume

type MigratePluginInterface

type MigratePluginInterface interface {
	// Start migration of volumes specified by the spec. Should only migrate
	// volumes, not the specs associated with them
	StartMigration(*stork_crd.Migration) ([]*stork_crd.VolumeInfo, error)
	// Get the status of migration of the volumes specified in the status
	// for the migration spec
	GetMigrationStatus(*stork_crd.Migration) ([]*stork_crd.VolumeInfo, error)
	// Cancel the migration of volumes specified in the status
	CancelMigration(*stork_crd.Migration) error
	// Update the PVC spec to point to the migrated volume on the destination
	// cluster
	UpdateMigratedPersistentVolumeSpec(object runtime.Unstructured) (runtime.Unstructured, error)
}

MigratePluginInterface Interface to migrate data between clusters

type MigrationNotSupported

type MigrationNotSupported struct{}

MigrationNotSupported to be used by drivers that don't support migration

func (*MigrationNotSupported) CancelMigration

func (m *MigrationNotSupported) CancelMigration(*stork_crd.Migration) error

CancelMigration returns ErrNotSupported

func (*MigrationNotSupported) GetMigrationStatus

func (m *MigrationNotSupported) GetMigrationStatus(*stork_crd.Migration) ([]*stork_crd.VolumeInfo, error)

GetMigrationStatus returns ErrNotSupported

func (*MigrationNotSupported) StartMigration

StartMigration returns ErrNotSupported

func (*MigrationNotSupported) UpdateMigratedPersistentVolumeSpec

func (m *MigrationNotSupported) UpdateMigratedPersistentVolumeSpec(
	runtime.Unstructured,
) (runtime.Unstructured, error)

UpdateMigratedPersistentVolumeSpec returns ErrNotSupported

type NodeInfo

type NodeInfo struct {
	// ID is a unique identifier for the node
	ID string
	// Hostname of the node. Should be in lower case because Kubernetes
	// converts it to lower case
	Hostname string
	// IPs List of IPs associated with the node
	IPs []string
	// Rack Specifies the rack within the datacenter where the node is located
	Rack string
	// Zone Specifies the zone where the rack is located
	Zone string
	// Region Specifies the region where the datacenter is located
	Region string
	// Status of the node
	Status NodeStatus
}

NodeInfo Information about a node

type NodeStatus

type NodeStatus string

NodeStatus Status of driver on a node

const (
	// NodeOnline Node is online
	NodeOnline NodeStatus = "Online"
	// NodeOffline Node is Offline
	NodeOffline NodeStatus = "Offline"
	// NodeDegraded Node is in degraded state
	NodeDegraded NodeStatus = "Degraded"
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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