Documentation
¶
Index ¶
- Constants
- func ExtractPodVolumeHostPath(ctx context.Context, path string, kubeClient kubernetes.Interface, ...) (string, error)
- func GetPodVolumeHostPath(ctx context.Context, pod *corev1api.Pod, volumeName string, ...) (datapath.AccessPoint, error)
- type CSISnapshotExposeParam
- type CSISnapshotExposeWaitParam
- type CacheConfigs
- type ExposeByPod
- type ExposeResult
- type GenericRestoreExposeParam
- type GenericRestoreExposer
- type PodVolumeExposeParam
- type PodVolumeExposer
- type SnapshotExposer
- type VgdpCounter
Constants ¶
const ( PodVolumeExposeTypeBackup = "pod-volume-backup" PodVolumeExposeTypeRestore = "pod-volume-restore" )
const ( AccessModeFileSystem = "by-file-system" AccessModeBlock = "by-block-device" ExposeOnGoingLabel = "velero.io/expose-on-going" )
Variables ¶
This section is empty.
Functions ¶
func ExtractPodVolumeHostPath ¶ added in v1.17.0
func GetPodVolumeHostPath ¶
func GetPodVolumeHostPath(ctx context.Context, pod *corev1api.Pod, volumeName string, kubeClient kubernetes.Interface, fs filesystem.Interface, log logrus.FieldLogger) (datapath.AccessPoint, error)
GetPodVolumeHostPath returns a path that can be accessed from the host for a given volume of a pod
Types ¶
type CSISnapshotExposeParam ¶
type CSISnapshotExposeParam struct {
// SnapshotName is the original volume snapshot name
SnapshotName string
// SourceNamespace is the original namespace of the volume that the snapshot is taken for
SourceNamespace string
// SourcePVCName is the original name of the PVC that the snapshot is taken for
SourcePVCName string
// SourcePVName is the name of PV for SourcePVC
SourcePVName string
// AccessMode defines the mode to access the snapshot
AccessMode string
// StorageClass is the storage class of the volume that the snapshot is taken for
StorageClass string
// HostingPodLabels is the labels that are going to apply to the hosting pod
HostingPodLabels map[string]string
// HostingPodAnnotations is the annotations that are going to apply to the hosting pod
HostingPodAnnotations map[string]string
// HostingPodTolerations is the tolerations that are going to apply to the hosting pod
HostingPodTolerations []corev1api.Toleration
// OperationTimeout specifies the time wait for resources operations in Expose
OperationTimeout time.Duration
// ExposeTimeout specifies the timeout for the entire expose process
ExposeTimeout time.Duration
// VolumeSize specifies the size of the source volume
VolumeSize resource.Quantity
// Affinity specifies the node affinity of the backup pod
Affinity []*kube.LoadAffinity
// BackupPVCConfig is the config for backupPVC (intermediate PVC) of snapshot data movement
BackupPVCConfig map[string]velerotypes.BackupPVC
// Resources defines the resource requirements of the hosting pod
Resources corev1api.ResourceRequirements
// NodeOS specifies the OS of node that the source volume is attaching
NodeOS string
// PriorityClassName is the priority class name for the data mover pod
PriorityClassName string
}
CSISnapshotExposeParam define the input param for Expose of CSI snapshots
type CSISnapshotExposeWaitParam ¶
type CSISnapshotExposeWaitParam struct {
// NodeClient is the client that is used to find the hosting pod
NodeClient client.Client
NodeName string
}
CSISnapshotExposeWaitParam define the input param for WaitExposed of CSI snapshots
type CacheConfigs ¶ added in v1.18.0
type ExposeByPod ¶
type ExposeByPod struct {
HostingPod *corev1api.Pod
HostingContainer string
VolumeName string
NodeOS *string
}
ExposeByPod defines the result for the expose method that a hosting pod is created
type ExposeResult ¶
type ExposeResult struct {
ByPod ExposeByPod
}
ExposeResult defines the result of expose. Varying from the type of the expose, the result may be different.
type GenericRestoreExposeParam ¶ added in v1.16.0
type GenericRestoreExposeParam struct {
// TargetPVCName is the target volume name to be restored
TargetPVCName string
// TargetNamespace is the namespace of the volume to be restored
TargetNamespace string
// HostingPodLabels is the labels that are going to apply to the hosting pod
HostingPodLabels map[string]string
// HostingPodAnnotations is the annotations that are going to apply to the hosting pod
HostingPodAnnotations map[string]string
// HostingPodTolerations is the tolerations that are going to apply to the hosting pod
HostingPodTolerations []corev1api.Toleration
// Resources defines the resource requirements of the hosting pod
Resources corev1api.ResourceRequirements
// ExposeTimeout specifies the timeout for the entire expose process
ExposeTimeout time.Duration
// OperationTimeout specifies the time wait for resources operations in Expose
OperationTimeout time.Duration
// NodeOS specifies the OS of node that the volume should be attached
NodeOS string
// RestorePVCConfig is the config for restorePVC (intermediate PVC) of generic restore
RestorePVCConfig velerotypes.RestorePVC
// LoadAffinity specifies the node affinity of the backup pod
LoadAffinity []*kube.LoadAffinity
// PriorityClassName is the priority class name for the data mover pod
PriorityClassName string
// RestoreSize specifies the data size for the volume to be restored
RestoreSize int64
// CacheVolume specifies the info for cache volumes
CacheVolume *CacheConfigs
}
GenericRestoreExposeParam define the input param for Generic Restore Expose
type GenericRestoreExposer ¶
type GenericRestoreExposer interface {
// Expose starts the process to a restore expose, the expose process may take long time
Expose(context.Context, corev1api.ObjectReference, GenericRestoreExposeParam) error
// GetExposed polls the status of the expose.
// If the expose is accessible by the current caller, it waits the expose ready and returns the expose result.
// Otherwise, it returns nil as the expose result without an error.
GetExposed(context.Context, corev1api.ObjectReference, client.Client, string, time.Duration) (*ExposeResult, error)
// PeekExposed tests the status of the expose.
// If the expose is incomplete but not recoverable, it returns an error.
// Otherwise, it returns nil immediately.
PeekExposed(context.Context, corev1api.ObjectReference) error
// DiagnoseExpose generate the diagnostic info when the expose is not finished for a long time.
// If it finds any problem, it returns an string about the problem.
DiagnoseExpose(context.Context, corev1api.ObjectReference) string
// RebindVolume unexposes the restored PV and rebind it to the target PVC
RebindVolume(context.Context, corev1api.ObjectReference, string, string, time.Duration) error
// CleanUp cleans up any objects generated during the restore expose
CleanUp(context.Context, corev1api.ObjectReference)
}
GenericRestoreExposer is the interfaces for a generic restore exposer
func NewGenericRestoreExposer ¶
func NewGenericRestoreExposer(kubeClient kubernetes.Interface, log logrus.FieldLogger) GenericRestoreExposer
NewGenericRestoreExposer creates a new instance of generic restore exposer
type PodVolumeExposeParam ¶ added in v1.17.0
type PodVolumeExposeParam struct {
// ClientPodName is the name of pod to be backed up or restored
ClientPodName string
// ClientNamespace is the namespace to be backed up or restored
ClientNamespace string
// ClientNamespace is the pod volume for the client PVC
ClientPodVolume string
// HostingPodLabels is the labels that are going to apply to the hosting pod
HostingPodLabels map[string]string
// HostingPodAnnotations is the annotations that are going to apply to the hosting pod
HostingPodAnnotations map[string]string
// HostingPodTolerations is the tolerations that are going to apply to the hosting pod
HostingPodTolerations []corev1api.Toleration
// Resources defines the resource requirements of the hosting pod
Resources corev1api.ResourceRequirements
// OperationTimeout specifies the time wait for resources operations in Expose
OperationTimeout time.Duration
// Type specifies the type of the expose, either backup or erstore
Type string
// PriorityClassName is the priority class name for the data mover pod
PriorityClassName string
// Privileged indicates whether to create the pod with a privileged container
Privileged bool
// RestoreSize specifies the data size for the volume to be restored, for restore only
RestoreSize int64
// CacheVolume specifies the info for cache volumes, for restore only
CacheVolume *CacheConfigs
}
PodVolumeExposeParam define the input param for pod volume Expose
type PodVolumeExposer ¶ added in v1.17.0
type PodVolumeExposer interface {
// Expose starts the process to a pod volume expose, the expose process may take long time
Expose(context.Context, corev1api.ObjectReference, PodVolumeExposeParam) error
// GetExposed polls the status of the expose.
// If the expose is accessible by the current caller, it waits the expose ready and returns the expose result.
// Otherwise, it returns nil as the expose result without an error.
GetExposed(context.Context, corev1api.ObjectReference, client.Client, string, time.Duration) (*ExposeResult, error)
// PeekExposed tests the status of the expose.
// If the expose is incomplete but not recoverable, it returns an error.
// Otherwise, it returns nil immediately.
PeekExposed(context.Context, corev1api.ObjectReference) error
// DiagnoseExpose generate the diagnostic info when the expose is not finished for a long time.
// If it finds any problem, it returns an string about the problem.
DiagnoseExpose(context.Context, corev1api.ObjectReference) string
// CleanUp cleans up any objects generated during the restore expose
CleanUp(context.Context, corev1api.ObjectReference)
}
PodVolumeExposer is the interfaces for a pod volume exposer
func NewPodVolumeExposer ¶ added in v1.17.0
func NewPodVolumeExposer(kubeClient kubernetes.Interface, log logrus.FieldLogger) PodVolumeExposer
NewPodVolumeExposer creates a new instance of pod volume exposer
type SnapshotExposer ¶
type SnapshotExposer interface {
// Expose starts the process to expose a snapshot, the expose process may take long time
Expose(context.Context, corev1api.ObjectReference, any) error
// GetExposed polls the status of the expose.
// If the expose is accessible by the current caller, it waits the expose ready and returns the expose result.
// Otherwise, it returns nil as the expose result without an error.
GetExposed(context.Context, corev1api.ObjectReference, time.Duration, any) (*ExposeResult, error)
// PeekExposed tests the status of the expose.
// If the expose is incomplete but not recoverable, it returns an error.
// Otherwise, it returns nil immediately.
PeekExposed(context.Context, corev1api.ObjectReference) error
// DiagnoseExpose generate the diagnostic info when the expose is not finished for a long time.
// If it finds any problem, it returns an string about the problem.
DiagnoseExpose(context.Context, corev1api.ObjectReference) string
// CleanUp cleans up any objects generated during the snapshot expose
CleanUp(context.Context, corev1api.ObjectReference, string, string)
}
SnapshotExposer is the interfaces for a snapshot exposer
func NewCSISnapshotExposer ¶
func NewCSISnapshotExposer(kubeClient kubernetes.Interface, csiSnapshotClient snapshotter.SnapshotV1Interface, log logrus.FieldLogger) SnapshotExposer
NewCSISnapshotExposer create a new instance of CSI snapshot exposer
type VgdpCounter ¶ added in v1.17.0
type VgdpCounter struct {
// contains filtered or unexported fields
}
func StartVgdpCounter ¶ added in v1.17.0
func (*VgdpCounter) IsConstrained ¶ added in v1.17.0
func (w *VgdpCounter) IsConstrained(ctx context.Context, log logrus.FieldLogger) bool