volume

package
v2.4.4+incompatible Latest Latest
Warning

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

Go to latest
Published: Aug 11, 2020 License: Apache-2.0 Imports: 10 Imported by: 75

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetApplicationBackupLabels added in v1.4.0

func GetApplicationBackupLabels(
	backup *storkapi.ApplicationBackup,
	pvc *v1.PersistentVolumeClaim,
) map[string]string

GetApplicationBackupLabels Gets the labels that need to be applied to a snapshot when creating a backup

func GetApplicationRestoreLabels added in v1.4.0

func GetApplicationRestoreLabels(
	restore *storkapi.ApplicationRestore,
	volumeInfo *storkapi.ApplicationRestoreVolumeInfo,
) map[string]string

GetApplicationRestoreLabels Gets the labels that need to be applied to a volume when restoring from a backup

func GetDefaultDriverName added in v1.4.0

func GetDefaultDriverName() string

GetDefaultDriverName returns the default driver name in case on isn't set

func GetPVCDriver added in v1.4.0

func GetPVCDriver(pvc *v1.PersistentVolumeClaim) (string, error)

GetPVCDriver gets the driver associated with a PVC. Returns ErrNotFound if the PVC is not owned by any available driver

func GetPVDriver added in v1.4.0

func GetPVDriver(pv *v1.PersistentVolume) (string, error)

GetPVDriver gets the driver associated with a PV. Returns ErrNotFound if the PV is not owned by any available driver

func GetSnapshotType added in v1.4.0

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 BackupRestoreNotSupported added in v1.4.0

type BackupRestoreNotSupported struct{}

BackupRestoreNotSupported to be used by drivers that don't support backup

func (*BackupRestoreNotSupported) CancelBackup added in v1.4.0

CancelBackup returns ErrNotSupported

func (*BackupRestoreNotSupported) CancelRestore added in v1.4.0

CancelRestore returns ErrNotSupported

func (*BackupRestoreNotSupported) DeleteBackup added in v1.4.0

DeleteBackup returns ErrNotSupported

func (*BackupRestoreNotSupported) GetBackupStatus added in v1.4.0

GetBackupStatus returns ErrNotSupported

func (*BackupRestoreNotSupported) GetPreRestoreResources added in v1.4.0

GetPreRestoreResources returns ErrNotSupported

func (*BackupRestoreNotSupported) GetRestoreStatus added in v1.4.0

GetRestoreStatus returns ErrNotSupported

func (*BackupRestoreNotSupported) StartBackup added in v1.4.0

StartBackup returns ErrNotSupported

func (*BackupRestoreNotSupported) StartRestore added in v1.4.0

StartRestore returns ErrNotSupported

type BackupRestorePluginInterface added in v1.4.0

type BackupRestorePluginInterface interface {
	// Start backup of volumes specified by the spec. Should only backup
	// volumes, not the specs associated with them
	StartBackup(*storkapi.ApplicationBackup, []v1.PersistentVolumeClaim) ([]*storkapi.ApplicationBackupVolumeInfo, error)
	// Get the status of backup of the volumes specified in the status
	// for the backup spec
	GetBackupStatus(*storkapi.ApplicationBackup) ([]*storkapi.ApplicationBackupVolumeInfo, error)
	// Cancel the backup of volumes specified in the status
	CancelBackup(*storkapi.ApplicationBackup) error
	// Delete the backups specified in the status
	DeleteBackup(*storkapi.ApplicationBackup) error
	// Get any resources that should be created before the restore is started
	GetPreRestoreResources(*storkapi.ApplicationBackup, []runtime.Unstructured) ([]runtime.Unstructured, error)
	// Start restore of volumes specified by the spec. Should only restore
	// volumes, not the specs associated with them
	StartRestore(*storkapi.ApplicationRestore, []*storkapi.ApplicationBackupVolumeInfo) ([]*storkapi.ApplicationRestoreVolumeInfo, error)
	// Get the status of restore of the volumes specified in the status
	// for the restore spec
	GetRestoreStatus(*storkapi.ApplicationRestore) ([]*storkapi.ApplicationRestoreVolumeInfo, error)
	// Cancel the restore of volumes specified in the status
	CancelRestore(*storkapi.ApplicationRestore) error
}

BackupRestorePluginInterface Interface to backup and restore volumes

type CloneNotSupported added in v1.4.0

type CloneNotSupported struct{}

CloneNotSupported to be used by drivers that don't support volume clone

func (*CloneNotSupported) CreateVolumeClones added in v1.4.0

func (c *CloneNotSupported) CreateVolumeClones(*storkapi.ApplicationClone) error

CreateVolumeClones returns ErrNotSupported

type ClonePluginInterface added in v1.4.0

type ClonePluginInterface interface {
	CreateVolumeClones(*storkapi.ApplicationClone) error
}

ClonePluginInterface Interface to clone volumes

type ClusterDomainsNotSupported added in v1.4.0

type ClusterDomainsNotSupported struct{}

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

func (*ClusterDomainsNotSupported) ActivateClusterDomain added in v1.4.0

func (c *ClusterDomainsNotSupported) ActivateClusterDomain(*storkapi.ClusterDomainUpdate) error

ActivateClusterDomain activates a cluster domain

func (*ClusterDomainsNotSupported) DeactivateClusterDomain added in v1.4.0

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

DeactivateClusterDomain deactivates a cluster domain

func (*ClusterDomainsNotSupported) GetClusterDomains added in v1.4.0

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

GetClusterDomains returns all the cluster domains and their status

type ClusterDomainsPluginInterface added in v1.4.0

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

ClusterDomainsPluginInterface Interface to manage cluster domains

type ClusterPairNotSupported added in v1.4.0

type ClusterPairNotSupported struct{}

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

func (*ClusterPairNotSupported) CreatePair added in v1.4.0

CreatePair Returns ErrNotSupported

func (*ClusterPairNotSupported) DeletePair added in v1.4.0

DeletePair Returns ErrNotSupported

type ClusterPairPluginInterface added in v1.4.0

type ClusterPairPluginInterface interface {
	// Create a pair with a remote cluster
	CreatePair(*storkapi.ClusterPair) (string, error)
	// Deletes a paring with a remote cluster
	DeletePair(*storkapi.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)

	// InspectNode using ID
	InspectNode(id string) (*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

	// OwnsPV returns true if the PV is owned by the driver
	OwnsPV(pvc *v1.PersistentVolume) 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
	// BackupRestorePluginInterface Interface to backup and restore volumes
	BackupRestorePluginInterface
	// ClonePluginInterface Interface to clone volumes
	ClonePluginInterface
	// SnapshotRestorePluginInterface Interface to do in-place restore of volumes
	SnapshotRestorePluginInterface
}

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 added in v1.4.0

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

GroupSnapshotCreateResponse is the response for the group snapshot operation

type GroupSnapshotNotSupported added in v1.4.0

type GroupSnapshotNotSupported struct{}

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

func (*GroupSnapshotNotSupported) CreateGroupSnapshot added in v1.4.0

CreateGroupSnapshot returns ErrNotSupported

func (*GroupSnapshotNotSupported) DeleteGroupSnapshot added in v1.4.0

DeleteGroupSnapshot returns ErrNotSupported

func (*GroupSnapshotNotSupported) GetGroupSnapshotStatus added in v1.4.0

GetGroupSnapshotStatus returns ErrNotSupported

type GroupSnapshotPluginInterface added in v1.4.0

type GroupSnapshotPluginInterface interface {
	// CreateGroupSnapshot creates a group snapshot with the given pvcs
	CreateGroupSnapshot(snap *storkapi.GroupVolumeSnapshot) (*GroupSnapshotCreateResponse, error)
	// GetGroupSnapshotStatus returns status of group snapshot
	GetGroupSnapshotStatus(snap *storkapi.GroupVolumeSnapshot) (*GroupSnapshotCreateResponse, error)
	// DeleteGroupSnapshot delete a group snapshot with the given spec
	DeleteGroupSnapshot(snap *storkapi.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 added in v1.4.0

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

MigratePluginInterface Interface to migrate data between clusters

type MigrationNotSupported added in v1.4.0

type MigrationNotSupported struct{}

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

func (*MigrationNotSupported) CancelMigration added in v1.4.0

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

CancelMigration returns ErrNotSupported

func (*MigrationNotSupported) GetMigrationStatus added in v1.4.0

GetMigrationStatus returns ErrNotSupported

func (*MigrationNotSupported) StartMigration added in v1.4.0

StartMigration returns ErrNotSupported

func (*MigrationNotSupported) UpdateMigratedPersistentVolumeSpec added in v1.4.0

func (m *MigrationNotSupported) UpdateMigratedPersistentVolumeSpec(
	*v1.PersistentVolume,
) (*v1.PersistentVolume, error)

UpdateMigratedPersistentVolumeSpec returns ErrNotSupported

type NodeInfo

type NodeInfo struct {
	// StorageID is a unique identifier for the storage node
	StorageID string
	// SchedulerID is a unique identifier for the scheduler node
	SchedulerID 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
	// RawStatus as returned by the driver
	RawStatus string
}

NodeInfo Information about a node

func RemoveDuplicateOfflineNodes added in v1.4.0

func RemoveDuplicateOfflineNodes(nodes []*NodeInfo) []*NodeInfo

RemoveDuplicateOfflineNodes Removes duplicate offline nodes from the list which have the same IP as an online 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"
)

type SnapshotRestoreNotSupported added in v1.4.0

type SnapshotRestoreNotSupported struct{}

SnapshotRestoreNotSupported to be used by drivers that don't support volume snapshot restore

func (*SnapshotRestoreNotSupported) CleanupSnapshotRestoreObjects added in v1.4.0

func (s *SnapshotRestoreNotSupported) CleanupSnapshotRestoreObjects(*storkapi.VolumeSnapshotRestore) error

CleanupSnapshotRestoreObjects deletes restore objects if any

func (*SnapshotRestoreNotSupported) CompleteVolumeSnapshotRestore added in v1.4.0

func (s *SnapshotRestoreNotSupported) CompleteVolumeSnapshotRestore(snap *storkapi.VolumeSnapshotRestore) error

CompleteVolumeSnapshotRestore returns ErrNotSupported

func (*SnapshotRestoreNotSupported) GetVolumeSnapshotRestoreStatus added in v1.4.0

func (s *SnapshotRestoreNotSupported) GetVolumeSnapshotRestoreStatus(*storkapi.VolumeSnapshotRestore) error

GetVolumeSnapshotRestoreStatus returns ErrNotSupported

func (*SnapshotRestoreNotSupported) StartVolumeSnapshotRestore added in v1.4.0

func (s *SnapshotRestoreNotSupported) StartVolumeSnapshotRestore(*storkapi.VolumeSnapshotRestore) error

StartVolumeSnapshotRestore returns ErrNotSupported

type SnapshotRestorePluginInterface added in v1.4.0

type SnapshotRestorePluginInterface interface {
	// StartVolumeSnapshotRestore will prepare volume for restore
	StartVolumeSnapshotRestore(*storkapi.VolumeSnapshotRestore) error

	// CompleteVolumeSnapshotRestore will perform in-place restore for given snapshot and associated pvc
	// Returns error if restore failed
	CompleteVolumeSnapshotRestore(*storkapi.VolumeSnapshotRestore) error

	// GetVolumeSnapshotRestore returns snapshot restore status
	GetVolumeSnapshotRestoreStatus(*storkapi.VolumeSnapshotRestore) error

	// CleanupSnapshotRestoreObjects deletes restore objects if any
	CleanupSnapshotRestoreObjects(*storkapi.VolumeSnapshotRestore) error
}

SnapshotRestorePluginInterface Interface to perform in place restore of volume

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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