v1alpha1

package
v0.11.0 Latest Latest
Warning

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

Go to latest
Published: Oct 8, 2024 License: AGPL-3.0 Imports: 7 Imported by: 4

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the volsync v1alpha1 API group +kubebuilder:object:generate=true +groupName=volsync.backube

+kubebuilder:validation:Required

+kubebuilder:validation:Required

+kubebuilder:validation:Required

Index

Constants

View Source
const (
	ConditionSynchronizing     string = "Synchronizing"
	SynchronizingReasonSync    string = "SyncInProgress"
	SynchronizingReasonSched   string = "WaitingForSchedule"
	SynchronizingReasonManual  string = "WaitingForManual"
	SynchronizingReasonCleanup string = "CleaningUp"
	SynchronizingReasonError   string = "Error"
)
View Source
const (
	// Annotation optionally set on src pvc by user.  When set, a volsync source replication
	// that is using CopyMode: Snapshot or Clone will wait for the user to set a unique copy-trigger
	// before proceeding to take the src snapshot/clone.
	UseCopyTriggerAnnotation = "volsync.backube/use-copy-trigger"
	CopyTriggerAnnotation    = "volsync.backube/copy-trigger"

	// Annotations for status set by VolSync on a src pvc if UseCopyTriggerAnnotation is set to "true"
	LatestCopyTriggerAnnotation             = "volsync.backube/latest-copy-trigger"
	LatestCopyStatusAnnotation              = "volsync.backube/latest-copy-status"
	LatestCopyTriggerWaitingSinceAnnotation = "volsync.backube/latest-copy-trigger-waiting-since"

	// VolSync latest-copy-status annotation values
	LatestCopyStatusValueWaitingForTrigger = "WaitingForTrigger"
	LatestCopyStatusValueInProgress        = "InProgress"
	LatestCopyStatusValueCompleted         = "Completed"

	// Timeout before we start updating the latestMoverStatus with an error
	// (After timeout we still continue to sync and wait for the copy-trigger to be
	//  set/updated)
	CopyTriggerWaitTimeout time.Duration = 10 * time.Minute
)
View Source
const (
	EvRDaemonConnected                     = "DaemonConnected"
	EvRTransferStarted                     = "TransferStarted"
	EvRTransferFailed                      = "TransferFailed" // Warning
	EvRSnapCreated                         = "VolumeSnapshotCreated"
	EvRSnapNotBound                        = "VolumeSnapshotNotBound" // Warning
	EvRPVCCreated                          = "PersistentVolumeClaimCreated"
	EvRPVCNotBound                         = "PersistentVolumeClaimNotBound" // Warning
	EvRSvcAddress                          = "ServiceAddressAssigned"
	EvRSvcNoAddress                        = "NoServiceAddressAssigned" // Warning
	EvRSrcPVCWaitingForCopyTrigger         = "SrcPVCWaitingForCopyTrigger"
	EvRSrcPVCTimeoutWaitingForCopyTrigger  = "SrcPVCTimeoutWaitingForCopyTrigger" // Warning
	EvRSrcPVCCopyTriggerReceived           = "SrcPVCCopyTriggerReceived"
	EvRSrcPVCCopyUsingCopyTriggerCompleted = "SrcPVCCopyUsingCopyTriggerCompleted"
)

ReplicationSource/ReplicationDestination Event "reason" strings: Why are we sending an event?

View Source
const (
	EvANone                          = "" // No action
	EvACreateMover                   = "CreateMover"
	EvADeleteMover                   = "DeleteMover"
	EvACreatePVC                     = "CreatePersistentVolumeClaim"
	EvACreateSnap                    = "CreateVolumeSnapshot"
	EvACreateSrcCopyUsingCopyTrigger = "CreateSrcCopyUsingCopyTrigger"
)

ReplicationSource/ReplicationDestination Event "action" strings: Things the controller "does"

View Source
const (
	EvRVolPopPVCPopulatorFinished            = "VolSyncPopulatorFinished" // #nosec G101 - gosec thinks this is a cred
	EvRVolPopPVCPopulatorError               = "VolSyncPopulatorError"
	EvVolPopPVCReplicationDestMissing        = "VolSyncPopulatorReplicationDestinationMissing"
	EvRVolPopPVCReplicationDestNoLatestImage = "VolSyncPopulatorReplicationDestinationNoLatestImage"
	EvRVolPopPVCCreationSuccess              = "VolSyncPopulatorPVCCreated"
	EvRVolPopPVCCreationError                = "VolSyncPopulatorPVCCreationError"
)

Volume Populator Event "reason" strings

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "volsync.backube", Version: "v1alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

This section is empty.

Types

type CopyMethodType

type CopyMethodType string

CopyMethodType defines the methods for creating point-in-time copies of volumes. +kubebuilder:validation:Enum=Direct;None;Clone;Snapshot

const (
	// CopyMethodDirect indicates a copy should not be performed. Data will be copied directly to/from the PVC.
	CopyMethodDirect CopyMethodType = "Direct"
	// CopyMethodNone indicates a copy should not be performed. Deprecated (replaced by CopyMethodDirect).
	CopyMethodNone CopyMethodType = "None"
	// CopyMethodClone indicates a copy should be created using volume cloning.
	CopyMethodClone CopyMethodType = "Clone"
	// CopyMethodSnapshot indicates a copy should be created using a volume
	// snapshot.
	CopyMethodSnapshot CopyMethodType = "Snapshot"

	// Namespace annotation to indicate that elevated permissions are ok for movers
	PrivilegedMoversNamespaceAnnotation = "volsync.backube/privileged-movers"

	// Annotation on ReplicationSource or ReplicationDestination to enable running the mover job in debug mode
	EnableDebugMoverAnnotation = "volsync.backube/enable-debug-mover"
)

type CustomCASpec added in v0.8.0

type CustomCASpec struct {
	// The name of a Secret that contains the custom CA certificate
	// If SecretName is used then ConfigMapName should not be set
	SecretName string `json:"secretName,omitempty"`

	// The name of a ConfigMap that contains the custom CA certificate
	// If ConfigMapName is used then SecretName should not be set
	ConfigMapName string `json:"configMapName,omitempty"`

	// The key within the Secret or ConfigMap containing the CA certificate
	Key string `json:"key,omitempty"`
}

func (*CustomCASpec) DeepCopy added in v0.8.0

func (in *CustomCASpec) DeepCopy() *CustomCASpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomCASpec.

func (*CustomCASpec) DeepCopyInto added in v0.8.0

func (in *CustomCASpec) DeepCopyInto(out *CustomCASpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MoverConfig added in v0.9.0

type MoverConfig struct {
	// MoverSecurityContext allows specifying the PodSecurityContext that will
	// be used by the data mover
	MoverSecurityContext *corev1.PodSecurityContext `json:"moverSecurityContext,omitempty"`
	// MoverServiceAccount allows specifying the name of the service account
	// that will be used by the data mover. This should only be used by advanced
	// users who want to override the service account normally used by the mover.
	// The service account needs to exist in the same namespace as this CR.
	//+optional
	MoverServiceAccount *string `json:"moverServiceAccount,omitempty"`
	// Labels that should be added to data mover pods
	// These will be in addition to any labels that VolSync may add
	// +optional
	MoverPodLabels map[string]string `json:"moverPodLabels,omitempty"`
	// Resources represents compute resources required by the data mover container.
	// Immutable.
	// More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
	// This should only be used by advanced users as this can result in a mover
	// pod being unschedulable or crashing due to limited resources.
	// +optional
	MoverResources *corev1.ResourceRequirements `json:"moverResources,omitempty"`
	// MoverAffinity allows specifying the PodAffinity that will be used by the data mover
	MoverAffinity *corev1.Affinity `json:"moverAffinity,omitempty"`
}

func (*MoverConfig) DeepCopy added in v0.9.0

func (in *MoverConfig) DeepCopy() *MoverConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MoverConfig.

func (*MoverConfig) DeepCopyInto added in v0.9.0

func (in *MoverConfig) DeepCopyInto(out *MoverConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MoverResult added in v0.7.0

type MoverResult string
const (
	MoverResultSuccessful MoverResult = "Successful"
	MoverResultFailed     MoverResult = "Failed"
)

type MoverStatus added in v0.7.0

type MoverStatus struct {
	Result MoverResult `json:"result,omitempty"`
	Logs   string      `json:"logs,omitempty"`
}

func (*MoverStatus) DeepCopy added in v0.7.0

func (in *MoverStatus) DeepCopy() *MoverStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MoverStatus.

func (*MoverStatus) DeepCopyInto added in v0.7.0

func (in *MoverStatus) DeepCopyInto(out *MoverStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationDestination

type ReplicationDestination struct {
	metav1.TypeMeta `json:",inline"`
	//+optional
	metav1.ObjectMeta `json:"metadata,omitempty"`
	// spec is the desired state of the ReplicationDestination, including the
	// replication method to use and its configuration.
	Spec ReplicationDestinationSpec `json:"spec,omitempty"`
	// status is the observed state of the ReplicationDestination as determined
	// by the controller.
	//+optional
	Status *ReplicationDestinationStatus `json:"status,omitempty"`
}

A ReplicationDestination is a VolSync resource that you can use to define the destination of a VolSync replication or synchronization. +kubebuilder:object:root=true +kubebuilder:resource:scope=Namespaced +kubebuilder:subresource:status +kubebuilder:printcolumn:name="Last sync",type="string",format="date-time",JSONPath=`.status.lastSyncTime` +kubebuilder:printcolumn:name="Duration",type="string",JSONPath=`.status.lastSyncDuration` +kubebuilder:printcolumn:name="Next sync",type="string",format="date-time",JSONPath=`.status.nextSyncTime`

func (*ReplicationDestination) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestination.

func (*ReplicationDestination) DeepCopyInto

func (in *ReplicationDestination) DeepCopyInto(out *ReplicationDestination)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ReplicationDestination) DeepCopyObject

func (in *ReplicationDestination) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ReplicationDestinationExternalSpec

type ReplicationDestinationExternalSpec struct {
	// provider is the name of the external replication provider. The name
	// should be of the form: domain.com/provider.
	Provider string `json:"provider,omitempty"`
	// parameters are provider-specific key/value configuration parameters. For
	// more information, please see the documentation of the specific
	// replication provider being used.
	Parameters map[string]string `json:"parameters,omitempty"`
}

ReplicationDestinationExternalSpec defines the configuration when using an external replication provider.

func (*ReplicationDestinationExternalSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationExternalSpec.

func (*ReplicationDestinationExternalSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationDestinationList

type ReplicationDestinationList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []ReplicationDestination `json:"items"`
}

ReplicationDestinationList contains a list of ReplicationDestination +kubebuilder:object:root=true

func (*ReplicationDestinationList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationList.

func (*ReplicationDestinationList) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ReplicationDestinationList) DeepCopyObject

func (in *ReplicationDestinationList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ReplicationDestinationRcloneSpec

type ReplicationDestinationRcloneSpec struct {
	ReplicationDestinationVolumeOptions `json:",inline"`
	//RcloneConfigSection is the section in rclone_config file to use for the current job.
	RcloneConfigSection *string `json:"rcloneConfigSection,omitempty"`
	// RcloneDestPath is the remote path to sync to.
	RcloneDestPath *string `json:"rcloneDestPath,omitempty"`
	// RcloneConfig is the rclone secret name
	RcloneConfig *string `json:"rcloneConfig,omitempty"`
	// customCA is a custom CA that will be used to verify the remote
	CustomCA CustomCASpec `json:"customCA,omitempty"`

	MoverConfig `json:",inline"`
}

ReplicationDestinationRcloneSpec defines the field for rclone in replicationDestination.

func (*ReplicationDestinationRcloneSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationRcloneSpec.

func (*ReplicationDestinationRcloneSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationDestinationResticCA added in v0.6.0

type ReplicationDestinationResticCA CustomCASpec

func (*ReplicationDestinationResticCA) DeepCopy added in v0.6.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationResticCA.

func (*ReplicationDestinationResticCA) DeepCopyInto added in v0.6.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationDestinationResticSpec

type ReplicationDestinationResticSpec struct {
	ReplicationDestinationVolumeOptions `json:",inline"`
	// Repository is the secret name containing repository info
	Repository string `json:"repository,omitempty"`
	// customCA is a custom CA that will be used to verify the remote
	CustomCA ReplicationDestinationResticCA `json:"customCA,omitempty"`
	// cacheCapacity can be used to set the size of the restic metadata cache volume
	//+optional
	CacheCapacity *resource.Quantity `json:"cacheCapacity,omitempty"`
	// cacheStorageClassName can be used to set the StorageClass of the restic
	// metadata cache volume
	//+optional
	CacheStorageClassName *string `json:"cacheStorageClassName,omitempty"`
	// accessModes can be used to set the accessModes of restic metadata cache volume
	//+optional
	CacheAccessModes []corev1.PersistentVolumeAccessMode `json:"cacheAccessModes,omitempty"`
	// Set this to true to delete the restic cache PVC (dynamically provisioned
	// by VolSync) at the end of each successful ReplicationDestination sync iteration.
	// Cache PVCs will always be deleted if the owning ReplicationDestination is
	// removed, even if this setting is false.
	// The default is false.
	//+optional
	CleanupCachePVC bool `json:"cleanupCachePVC,omitempty"`
	// Previous specifies the number of image to skip before selecting one to restore from
	//+optional
	Previous *int32 `json:"previous,omitempty"`
	// RestoreAsOf refers to the backup that is most recent as of that time.
	// +kubebuilder:validation:Format="date-time"
	//+optional
	RestoreAsOf *string `json:"restoreAsOf,omitempty"`
	// enableFileDeletion will pass the --delete flag to the restic restore command.
	// This will remove files and directories in the pvc that do not exist in the snapshot being restored.
	// Defaults to false.
	//+optional
	EnableFileDeletion bool `json:"enableFileDeletion,omitempty"`

	MoverConfig `json:",inline"`
}

ReplicationDestinationResticSpec defines the field for restic in replicationDestination.

func (*ReplicationDestinationResticSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationResticSpec.

func (*ReplicationDestinationResticSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationDestinationRsyncSpec

type ReplicationDestinationRsyncSpec struct {
	ReplicationDestinationVolumeOptions `json:",inline"`
	// Will be used for the dynamic destination PVC created by VolSync.
	// Defaults to "Filesystem"
	//+optional
	VolumeMode *corev1.PersistentVolumeMode `json:"volumeMode,omitempty"`
	// sshKeys is the name of a Secret that contains the SSH keys to be used for
	// authentication. If not provided, the keys will be generated.
	//+optional
	SSHKeys *string `json:"sshKeys,omitempty"`
	// serviceType determines the Service type that will be created for incoming
	// SSH connections.
	//+optional
	ServiceType *corev1.ServiceType `json:"serviceType,omitempty"`
	// serviceAnnotations defines annotations that will be added to the
	// service created for incoming SSH connections.  If set, these annotations
	// will be used instead of any VolSync default values.
	//+optional
	ServiceAnnotations *map[string]string `json:"serviceAnnotations,omitempty"`
	// address is the remote address to connect to for replication.
	//+optional
	Address *string `json:"address,omitempty"`
	// port is the SSH port to connect to for replication. Defaults to 22.
	//+kubebuilder:validation:Minimum=0
	//+kubebuilder:validation:Maximum=65535
	//+optional
	Port *int32 `json:"port,omitempty"`
	// path is the remote path to rsync from. Defaults to "/"
	//+optional
	Path *string `json:"path,omitempty"`
	// sshUser is the username for outgoing SSH connections. Defaults to "root".
	//+optional
	SSHUser *string `json:"sshUser,omitempty"`
	// MoverServiceAccount allows specifying the name of the service account
	// that will be used by the data mover. This should only be used by advanced
	// users who want to override the service account normally used by the mover.
	// The service account needs to exist in the same namespace as the ReplicationDestination.
	//+optional
	MoverServiceAccount *string `json:"moverServiceAccount,omitempty"`
	// Labels that should be added to data mover pods
	// These will be in addition to any labels that VolSync may add
	// +optional
	MoverPodLabels map[string]string `json:"moverPodLabels,omitempty"`
	// Resources represents compute resources required by the data mover container.
	// Immutable.
	// More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
	// This should only be used by advanced users as this can result in a mover
	// pod being unschedulable or crashing due to limited resources.
	// +optional
	MoverResources *corev1.ResourceRequirements `json:"moverResources,omitempty"`
}

func (*ReplicationDestinationRsyncSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationRsyncSpec.

func (*ReplicationDestinationRsyncSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationDestinationRsyncStatus

type ReplicationDestinationRsyncStatus struct {
	// sshKeys is the name of a Secret that contains the SSH keys to be used for
	// authentication. If not provided in .spec.rsync.sshKeys, SSH keys will be
	// generated and the appropriate keys for the remote side will be placed
	// here.
	//+optional
	SSHKeys *string `json:"sshKeys,omitempty"`
	// address is the address to connect to for incoming SSH replication
	// connections.
	//+optional
	Address *string `json:"address,omitempty"`
	// port is the SSH port to connect to for incoming SSH replication
	// connections.
	//+optional
	Port *int32 `json:"port,omitempty"`
}

func (*ReplicationDestinationRsyncStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationRsyncStatus.

func (*ReplicationDestinationRsyncStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationDestinationRsyncTLSSpec added in v0.7.0

type ReplicationDestinationRsyncTLSSpec struct {
	ReplicationDestinationVolumeOptions `json:",inline"`
	// Will be used for the dynamic destination PVC created by VolSync.
	// Defaults to "Filesystem"
	//+optional
	VolumeMode *corev1.PersistentVolumeMode `json:"volumeMode,omitempty"`
	// keySecret is the name of a Secret that contains the TLS pre-shared key to
	// be used for authentication. If not provided, the key will be generated.
	//+optional
	KeySecret *string `json:"keySecret,omitempty"`
	// serviceType determines the Service type that will be created for incoming
	// TLS connections.
	//+optional
	ServiceType *corev1.ServiceType `json:"serviceType,omitempty"`
	// serviceAnnotations defines annotations that will be added to the
	// service created for incoming SSH connections.  If set, these annotations
	// will be used instead of any VolSync default values.
	//+optional
	ServiceAnnotations *map[string]string `json:"serviceAnnotations,omitempty"`

	MoverConfig `json:",inline"`
}

func (*ReplicationDestinationRsyncTLSSpec) DeepCopy added in v0.7.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationRsyncTLSSpec.

func (*ReplicationDestinationRsyncTLSSpec) DeepCopyInto added in v0.7.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationDestinationRsyncTLSStatus added in v0.7.0

type ReplicationDestinationRsyncTLSStatus struct {
	// keySecret is the name of a Secret that contains the TLS pre-shared key to
	// be used for authentication. If not provided in .spec.rsyncTLS.keySecret,
	// the key Secret will be generated and named here.
	//+optional
	KeySecret *string `json:"keySecret,omitempty"`
	// address is the address to connect to for incoming TLS connections.
	//+optional
	Address *string `json:"address,omitempty"`
	// port is the port to connect to for incoming replication connections.
	//+optional
	Port *int32 `json:"port,omitempty"`
}

func (*ReplicationDestinationRsyncTLSStatus) DeepCopy added in v0.7.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationRsyncTLSStatus.

func (*ReplicationDestinationRsyncTLSStatus) DeepCopyInto added in v0.7.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationDestinationSpec

type ReplicationDestinationSpec struct {
	// trigger determines if/when the destination should attempt to synchronize
	// data with the source.
	//+optional
	Trigger *ReplicationDestinationTriggerSpec `json:"trigger,omitempty"`
	// rsync defines the configuration when using Rsync-based replication.
	//+optional
	Rsync *ReplicationDestinationRsyncSpec `json:"rsync,omitempty"`
	// rsyncTLS defines the configuration when using Rsync-based replication over TLS.
	//+optional
	RsyncTLS *ReplicationDestinationRsyncTLSSpec `json:"rsyncTLS,omitempty"`
	// rclone defines the configuration when using Rclone-based replication.
	//+optional
	Rclone *ReplicationDestinationRcloneSpec `json:"rclone,omitempty"`
	// restic defines the configuration when using Restic-based replication.
	//+optional
	Restic *ReplicationDestinationResticSpec `json:"restic,omitempty"`
	// external defines the configuration when using an external replication
	// provider.
	//+optional
	External *ReplicationDestinationExternalSpec `json:"external,omitempty"`
	// paused can be used to temporarily stop replication. Defaults to "false".
	//+optional
	Paused bool `json:"paused,omitempty"`
}

ReplicationDestinationSpec defines the desired state of ReplicationDestination

func (*ReplicationDestinationSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationSpec.

func (*ReplicationDestinationSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationDestinationStatus

type ReplicationDestinationStatus struct {
	// lastSyncTime is the time of the most recent successful synchronization.
	//+optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
	// lastSyncStartTime is the time the most recent synchronization started.
	//+optional
	LastSyncStartTime *metav1.Time `json:"lastSyncStartTime,omitempty"`
	// lastSyncDuration is the amount of time required to send the most recent
	// update.
	//+optional
	LastSyncDuration *metav1.Duration `json:"lastSyncDuration,omitempty"`
	// nextSyncTime is the time when the next volume synchronization is
	// scheduled to start (for schedule-based synchronization).
	//+optional
	NextSyncTime *metav1.Time `json:"nextSyncTime,omitempty"`
	// lastManualSync is set to the last spec.trigger.manual when the manual sync is done.
	//+optional
	LastManualSync string `json:"lastManualSync,omitempty"`
	// latestImage in the object holding the most recent consistent replicated
	// image.
	//+optional
	LatestImage *corev1.TypedLocalObjectReference `json:"latestImage,omitempty"`
	// Logs/Summary from latest mover job
	//+optional
	LatestMoverStatus *MoverStatus `json:"latestMoverStatus,omitempty"`
	// rsync contains status information for Rsync-based replication.
	Rsync *ReplicationDestinationRsyncStatus `json:"rsync,omitempty"`
	// rsyncTLS contains status information for Rsync-based replication over TLS.
	RsyncTLS *ReplicationDestinationRsyncTLSStatus `json:"rsyncTLS,omitempty"`
	// external contains provider-specific status information. For more details,
	// please see the documentation of the specific replication provider being
	// used.
	//+optional
	External map[string]string `json:"external,omitempty"`
	// conditions represent the latest available observations of the
	// destination's state.
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

ReplicationDestinationStatus defines the observed state of ReplicationDestination

func (*ReplicationDestinationStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationStatus.

func (*ReplicationDestinationStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationDestinationTriggerSpec

type ReplicationDestinationTriggerSpec struct {
	// schedule is a cronspec (https://en.wikipedia.org/wiki/Cron#Overview) that
	// can be used to schedule replication to occur at regular, time-based
	// intervals.
	// nolint:lll
	//+kubebuilder:validation:Pattern=`^(@(annually|yearly|monthly|weekly|daily|hourly))|((((\d+,)*\d+|(\d+(\/|-)\d+)|\*(\/\d+)?)\s?){5})$`
	//+optional
	Schedule *string `json:"schedule,omitempty"`
	// manual is a string value that schedules a manual trigger.
	// Once a sync completes then status.lastManualSync is set to the same string value.
	// A consumer of a manual trigger should set spec.trigger.manual to a known value
	// and then wait for lastManualSync to be updated by the operator to the same value,
	// which means that the manual trigger will then pause and wait for further
	// updates to the trigger.
	//+optional
	Manual string `json:"manual,omitempty"`
}

ReplicationDestinationTriggerSpec defines when a volume will be synchronized with the source.

func (*ReplicationDestinationTriggerSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationTriggerSpec.

func (*ReplicationDestinationTriggerSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationDestinationVolumeOptions

type ReplicationDestinationVolumeOptions struct {
	// copyMethod describes how a point-in-time (PiT) image of the destination
	// volume should be created.
	CopyMethod CopyMethodType `json:"copyMethod,omitempty"`
	// capacity is the size of the destination volume to create.
	//+optional
	Capacity *resource.Quantity `json:"capacity,omitempty"`
	// storageClassName can be used to specify the StorageClass of the
	// destination volume. If not set, the default StorageClass will be used.
	//+optional
	StorageClassName *string `json:"storageClassName,omitempty"`
	// accessModes specifies the access modes for the destination volume.
	//+kubebuilder:validation:MinItems=1
	//+optional
	AccessModes []corev1.PersistentVolumeAccessMode `json:"accessModes,omitempty"`
	// volumeSnapshotClassName can be used to specify the VSC to be used if
	// copyMethod is Snapshot. If not set, the default VSC is used.
	//+optional
	VolumeSnapshotClassName *string `json:"volumeSnapshotClassName,omitempty"`
	// destinationPVC is a PVC to use as the transfer destination instead of
	// automatically provisioning one. Either this field or both capacity and
	// accessModes must be specified.
	//+optional
	DestinationPVC *string `json:"destinationPVC,omitempty"`
	// Set this to true to delete the temp destination PVC (dynamically provisioned
	// by VolSync) at the end of each successful ReplicationDestination sync iteration.
	// If destinationPVC is set, this will have no effect, VolSync will only
	// cleanup temp PVCs that it deployed.
	// Note that if this is set to true, every sync this ReplicationDestination
	// makes will re-provision a new temp destination PVC and all data
	// will need to be sent again during the sync.
	// Dynamically provisioned destination PVCs will always be deleted if the
	// owning ReplicationDestination is removed, even if this setting is false.
	// The default is false.
	//+optional
	CleanupTempPVC bool `json:"cleanupTempPVC,omitempty"`
}

func (*ReplicationDestinationVolumeOptions) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationVolumeOptions.

func (*ReplicationDestinationVolumeOptions) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSource

type ReplicationSource struct {
	metav1.TypeMeta `json:",inline"`
	//+optional
	metav1.ObjectMeta `json:"metadata,omitempty"`
	// spec is the desired state of the ReplicationSource, including the
	// replication method to use and its configuration.
	Spec ReplicationSourceSpec `json:"spec,omitempty"`
	// status is the observed state of the ReplicationSource as determined by
	// the controller.
	//+optional
	Status *ReplicationSourceStatus `json:"status,omitempty"`
}

A ReplicationSource is a VolSync resource that you can use to define the source PVC and replication mover type, enabling you to replicate or synchronize PVC data to a remote location. +kubebuilder:object:root=true +kubebuilder:resource:scope=Namespaced +kubebuilder:subresource:status +kubebuilder:printcolumn:name="Source",type="string",JSONPath=`.spec.sourcePVC` +kubebuilder:printcolumn:name="Last sync",type="string",format="date-time",JSONPath=`.status.lastSyncTime` +kubebuilder:printcolumn:name="Duration",type="string",JSONPath=`.status.lastSyncDuration` +kubebuilder:printcolumn:name="Next sync",type="string",format="date-time",JSONPath=`.status.nextSyncTime`

func (*ReplicationSource) DeepCopy

func (in *ReplicationSource) DeepCopy() *ReplicationSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSource.

func (*ReplicationSource) DeepCopyInto

func (in *ReplicationSource) DeepCopyInto(out *ReplicationSource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ReplicationSource) DeepCopyObject

func (in *ReplicationSource) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ReplicationSourceExternalSpec

type ReplicationSourceExternalSpec struct {
	// provider is the name of the external replication provider. The name
	// should be of the form: domain.com/provider.
	Provider string `json:"provider,omitempty"`
	// parameters are provider-specific key/value configuration parameters. For
	// more information, please see the documentation of the specific
	// replication provider being used.
	Parameters map[string]string `json:"parameters,omitempty"`
}

ReplicationSourceExternalSpec defines the configuration when using an external replication provider.

func (*ReplicationSourceExternalSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceExternalSpec.

func (*ReplicationSourceExternalSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceList

type ReplicationSourceList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []ReplicationSource `json:"items"`
}

ReplicationSourceList contains a list of Source +kubebuilder:object:root=true

func (*ReplicationSourceList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceList.

func (*ReplicationSourceList) DeepCopyInto

func (in *ReplicationSourceList) DeepCopyInto(out *ReplicationSourceList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ReplicationSourceList) DeepCopyObject

func (in *ReplicationSourceList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ReplicationSourceRcloneSpec

type ReplicationSourceRcloneSpec struct {
	ReplicationSourceVolumeOptions `json:",inline"`
	//RcloneConfigSection is the section in rclone_config file to use for the current job.
	RcloneConfigSection *string `json:"rcloneConfigSection,omitempty"`
	// RcloneDestPath is the remote path to sync to.
	RcloneDestPath *string `json:"rcloneDestPath,omitempty"`
	// RcloneConfig is the rclone secret name
	RcloneConfig *string `json:"rcloneConfig,omitempty"`
	// customCA is a custom CA that will be used to verify the remote
	CustomCA CustomCASpec `json:"customCA,omitempty"`

	MoverConfig `json:",inline"`
}

ReplicationSourceRcloneSpec defines the field for rclone in replicationSource.

func (*ReplicationSourceRcloneSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceRcloneSpec.

func (*ReplicationSourceRcloneSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceResticCA added in v0.6.0

type ReplicationSourceResticCA CustomCASpec

func (*ReplicationSourceResticCA) DeepCopy added in v0.6.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceResticCA.

func (*ReplicationSourceResticCA) DeepCopyInto added in v0.6.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceResticSpec

type ReplicationSourceResticSpec struct {
	ReplicationSourceVolumeOptions `json:",inline"`
	// PruneIntervalDays define how often to prune the repository
	PruneIntervalDays *int32 `json:"pruneIntervalDays,omitempty"`
	// Repository is the secret name containing repository info
	Repository string `json:"repository,omitempty"`
	// customCA is a custom CA that will be used to verify the remote
	CustomCA ReplicationSourceResticCA `json:"customCA,omitempty"`
	// ResticRetainPolicy define the retain policy
	//+optional
	Retain *ResticRetainPolicy `json:"retain,omitempty"`
	// cacheCapacity can be used to set the size of the restic metadata cache volume
	//+optional
	CacheCapacity *resource.Quantity `json:"cacheCapacity,omitempty"`
	// cacheStorageClassName can be used to set the StorageClass of the restic
	// metadata cache volume
	//+optional
	CacheStorageClassName *string `json:"cacheStorageClassName,omitempty"`
	// CacheAccessModes can be used to set the accessModes of restic metadata cache volume
	//+optional
	CacheAccessModes []corev1.PersistentVolumeAccessMode `json:"cacheAccessModes,omitempty"`
	// unlock is a string value that schedules an unlock on the restic repository during
	// the next sync operation.
	// Once a sync completes then status.restic.lastUnlocked is set to the same string value.
	// To unlock a repository, set spec.restic.unlock to a known value and then wait for
	// lastUnlocked to be updated by the operator to the same value,
	// which means that the sync unlocked the repository by running a restic unlock command and
	// then ran a backup.
	// Unlock will not be run again unless spec.restic.unlock is set to a different value.
	Unlock string `json:"unlock,omitempty"`

	MoverConfig `json:",inline"`
}

ReplicationSourceResticSpec defines the field for restic in replicationSource.

func (*ReplicationSourceResticSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceResticSpec.

func (*ReplicationSourceResticSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceResticStatus

type ReplicationSourceResticStatus struct {
	// lastPruned in the object holding the time of last pruned
	//+optional
	LastPruned *metav1.Time `json:"lastPruned,omitempty"`
	// lastUnlocked is set to the last spec.restic.unlock when a sync is done that unlocks the
	// restic repository.
	//+optional
	LastUnlocked string `json:"lastUnlocked,omitempty"`
}

ReplicationSourceResticStatus defines the field for ReplicationSourceStatus in ReplicationSourceStatus

func (*ReplicationSourceResticStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceResticStatus.

func (*ReplicationSourceResticStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceRsyncSpec

type ReplicationSourceRsyncSpec struct {
	ReplicationSourceVolumeOptions `json:",inline"`
	// sshKeys is the name of a Secret that contains the SSH keys to be used for
	// authentication. If not provided, the keys will be generated.
	//+optional
	SSHKeys *string `json:"sshKeys,omitempty"`
	// serviceType determines the Service type that will be created for incoming
	// SSH connections.
	//+optional
	ServiceType *corev1.ServiceType `json:"serviceType,omitempty"`
	// address is the remote address to connect to for replication.
	//+optional
	Address *string `json:"address,omitempty"`
	// port is the SSH port to connect to for replication. Defaults to 22.
	//+kubebuilder:validation:Minimum=0
	//+kubebuilder:validation:Maximum=65535
	//+optional
	Port *int32 `json:"port,omitempty"`
	// path is the remote path to rsync to. Defaults to "/"
	//+optional
	Path *string `json:"path,omitempty"`
	// sshUser is the username for outgoing SSH connections. Defaults to "root".
	//+optional
	SSHUser *string `json:"sshUser,omitempty"`
	// MoverServiceAccount allows specifying the name of the service account
	// that will be used by the data mover. This should only be used by advanced
	// users who want to override the service account normally used by the mover.
	// The service account needs to exist in the same namespace as the ReplicationSource.
	//+optional
	MoverServiceAccount *string `json:"moverServiceAccount,omitempty"`
	// Labels that should be added to data mover pods
	// These will be in addition to any labels that VolSync may add
	// +optional
	MoverPodLabels map[string]string `json:"moverPodLabels,omitempty"`
	// Resources represents compute resources required by the data mover container.
	// Immutable.
	// More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/
	// This should only be used by advanced users as this can result in a mover
	// pod being unschedulable or crashing due to limited resources.
	// +optional
	MoverResources *corev1.ResourceRequirements `json:"moverResources,omitempty"`
}

func (*ReplicationSourceRsyncSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceRsyncSpec.

func (*ReplicationSourceRsyncSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceRsyncStatus

type ReplicationSourceRsyncStatus struct {
	// sshKeys is the name of a Secret that contains the SSH keys to be used for
	// authentication. If not provided in .spec.rsync.sshKeys, SSH keys will be
	// generated and the appropriate keys for the remote side will be placed
	// here.
	//+optional
	SSHKeys *string `json:"sshKeys,omitempty"`
	// address is the address to connect to for incoming SSH replication
	// connections.
	//+optional
	Address *string `json:"address,omitempty"`
	// port is the SSH port to connect to for incoming SSH replication
	// connections.
	//+optional
	Port *int32 `json:"port,omitempty"`
}

func (*ReplicationSourceRsyncStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceRsyncStatus.

func (*ReplicationSourceRsyncStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceRsyncTLSSpec added in v0.7.0

type ReplicationSourceRsyncTLSSpec struct {
	ReplicationSourceVolumeOptions `json:",inline"`
	// keySecret is the name of a Secret that contains the TLS pre-shared key to
	// be used for authentication. If not provided, the key will be generated.
	//+optional
	KeySecret *string `json:"keySecret,omitempty"`
	// address is the remote address to connect to for replication.
	//+optional
	Address *string `json:"address,omitempty"`
	// port is the port to connect to for replication. Defaults to 8000.
	//+kubebuilder:validation:Minimum=0
	//+kubebuilder:validation:Maximum=65535
	//+optional
	Port *int32 `json:"port,omitempty"`

	MoverConfig `json:",inline"`
}

func (*ReplicationSourceRsyncTLSSpec) DeepCopy added in v0.7.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceRsyncTLSSpec.

func (*ReplicationSourceRsyncTLSSpec) DeepCopyInto added in v0.7.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceRsyncTLSStatus added in v0.7.0

type ReplicationSourceRsyncTLSStatus struct {
	// keySecret is the name of a Secret that contains the TLS pre-shared key to
	// be used for authentication. If not provided in .spec.rsyncTLS.keySecret,
	// the key Secret will be generated and named here.
	//+optional
	KeySecret *string `json:"keySecret,omitempty"`
}

func (*ReplicationSourceRsyncTLSStatus) DeepCopy added in v0.7.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceRsyncTLSStatus.

func (*ReplicationSourceRsyncTLSStatus) DeepCopyInto added in v0.7.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceSpec

type ReplicationSourceSpec struct {
	// sourcePVC is the name of the PersistentVolumeClaim (PVC) to replicate.
	SourcePVC string `json:"sourcePVC,omitempty"`
	// trigger determines when the latest state of the volume will be captured
	// (and potentially replicated to the destination).
	//+optional
	Trigger *ReplicationSourceTriggerSpec `json:"trigger,omitempty"`
	// rsync defines the configuration when using Rsync-based replication.
	//+optional
	Rsync *ReplicationSourceRsyncSpec `json:"rsync,omitempty"`
	// rsyncTLS defines the configuration when using Rsync-based replication over TLS.
	//+optional
	RsyncTLS *ReplicationSourceRsyncTLSSpec `json:"rsyncTLS,omitempty"`
	// rclone defines the configuration when using Rclone-based replication.
	//+optional
	Rclone *ReplicationSourceRcloneSpec `json:"rclone,omitempty"`
	// restic defines the configuration when using Restic-based replication.
	//+optional
	Restic *ReplicationSourceResticSpec `json:"restic,omitempty"`
	// syncthing defines the configuration when using Syncthing-based replication.
	//+optional
	Syncthing *ReplicationSourceSyncthingSpec `json:"syncthing,omitempty"`
	// external defines the configuration when using an external replication
	// provider.
	//+optional
	External *ReplicationSourceExternalSpec `json:"external,omitempty"`
	// paused can be used to temporarily stop replication. Defaults to "false".
	//+optional
	Paused bool `json:"paused,omitempty"`
}

ReplicationSourceSpec defines the desired state of ReplicationSource

func (*ReplicationSourceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceSpec.

func (*ReplicationSourceSpec) DeepCopyInto

func (in *ReplicationSourceSpec) DeepCopyInto(out *ReplicationSourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceStatus

type ReplicationSourceStatus struct {
	// lastSyncTime is the time of the most recent successful synchronization.
	//+optional
	LastSyncTime *metav1.Time `json:"lastSyncTime,omitempty"`
	// lastSyncStartTime is the time the most recent synchronization started.
	//+optional
	LastSyncStartTime *metav1.Time `json:"lastSyncStartTime,omitempty"`
	// lastSyncDuration is the amount of time required to send the most recent
	// update.
	//+optional
	LastSyncDuration *metav1.Duration `json:"lastSyncDuration,omitempty"`
	// nextSyncTime is the time when the next volume synchronization is
	// scheduled to start (for schedule-based synchronization).
	//+optional
	NextSyncTime *metav1.Time `json:"nextSyncTime,omitempty"`
	// lastManualSync is set to the last spec.trigger.manual when the manual sync is done.
	//+optional
	LastManualSync string `json:"lastManualSync,omitempty"`
	// Logs/Summary from latest mover job
	//+optional
	LatestMoverStatus *MoverStatus `json:"latestMoverStatus,omitempty"`
	// rsync contains status information for Rsync-based replication.
	Rsync *ReplicationSourceRsyncStatus `json:"rsync,omitempty"`
	// rsyncTLS contains status information for Rsync-based replication over TLS.
	RsyncTLS *ReplicationSourceRsyncTLSStatus `json:"rsyncTLS,omitempty"`
	// external contains provider-specific status information. For more details,
	// please see the documentation of the specific replication provider being
	// used.
	//+optional
	External map[string]string `json:"external,omitempty"`
	// conditions represent the latest available observations of the
	// source's state.
	Conditions []metav1.Condition `json:"conditions,omitempty"`
	// restic contains status information for Restic-based replication.
	Restic *ReplicationSourceResticStatus `json:"restic,omitempty"`
	// contains status information when Syncthing-based replication is used.
	//+optional
	Syncthing *ReplicationSourceSyncthingStatus `json:"syncthing,omitempty"`
}

ReplicationSourceStatus defines the observed state of ReplicationSource

func (*ReplicationSourceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceStatus.

func (*ReplicationSourceStatus) DeepCopyInto

func (in *ReplicationSourceStatus) DeepCopyInto(out *ReplicationSourceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceSyncthingSpec added in v0.4.0

type ReplicationSourceSyncthingSpec struct {
	// List of Syncthing peers to be connected for syncing
	Peers []SyncthingPeer `json:"peers,omitempty"`
	// Type of service to be used when exposing the Syncthing peer
	//+optional
	ServiceType *corev1.ServiceType `json:"serviceType,omitempty"`
	// Used to set the size of the Syncthing config volume.
	//+optional
	ConfigCapacity *resource.Quantity `json:"configCapacity,omitempty"`
	// Used to set the StorageClass of the Syncthing config volume.
	//+optional
	ConfigStorageClassName *string `json:"configStorageClassName,omitempty"`
	// Used to set the accessModes of Syncthing config volume.
	//+optional
	ConfigAccessModes []corev1.PersistentVolumeAccessMode `json:"configAccessModes,omitempty"`

	MoverConfig `json:",inline"`
}

define the Syncthing field

func (*ReplicationSourceSyncthingSpec) DeepCopy added in v0.4.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceSyncthingSpec.

func (*ReplicationSourceSyncthingSpec) DeepCopyInto added in v0.4.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceSyncthingStatus added in v0.4.0

type ReplicationSourceSyncthingStatus struct {
	// List of the Syncthing nodes we are currently connected to.
	Peers []SyncthingPeerStatus `json:"peers,omitempty"`
	// Device ID of the current syncthing device
	ID string `json:"ID,omitempty"`
	// Service address where Syncthing is exposed to the rest of the world
	Address string `json:"address,omitempty"`
}

func (*ReplicationSourceSyncthingStatus) DeepCopy added in v0.4.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceSyncthingStatus.

func (*ReplicationSourceSyncthingStatus) DeepCopyInto added in v0.4.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceTriggerSpec

type ReplicationSourceTriggerSpec struct {
	// schedule is a cronspec (https://en.wikipedia.org/wiki/Cron#Overview) that
	// can be used to schedule replication to occur at regular, time-based
	// intervals.
	// nolint:lll
	//+kubebuilder:validation:Pattern=`^(@(annually|yearly|monthly|weekly|daily|hourly))|((((\d+,)*\d+|(\d+(\/|-)\d+)|\*(\/\d+)?)\s?){5})$`
	//+optional
	Schedule *string `json:"schedule,omitempty"`
	// manual is a string value that schedules a manual trigger.
	// Once a sync completes then status.lastManualSync is set to the same string value.
	// A consumer of a manual trigger should set spec.trigger.manual to a known value
	// and then wait for lastManualSync to be updated by the operator to the same value,
	// which means that the manual trigger will then pause and wait for further
	// updates to the trigger.
	//+optional
	Manual string `json:"manual,omitempty"`
}

ReplicationSourceTriggerSpec defines when a volume will be synchronized with the destination.

func (*ReplicationSourceTriggerSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceTriggerSpec.

func (*ReplicationSourceTriggerSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ReplicationSourceVolumeOptions

type ReplicationSourceVolumeOptions struct {
	// copyMethod describes how a point-in-time (PiT) image of the source volume
	// should be created.
	CopyMethod CopyMethodType `json:"copyMethod,omitempty"`
	// capacity can be used to override the capacity of the PiT image.
	//+optional
	Capacity *resource.Quantity `json:"capacity,omitempty"`
	// storageClassName can be used to override the StorageClass of the PiT
	// image.
	//+optional
	StorageClassName *string `json:"storageClassName,omitempty"`
	// accessModes can be used to override the accessModes of the PiT image.
	//+kubebuilder:validation:MinItems=1
	//+optional
	AccessModes []corev1.PersistentVolumeAccessMode `json:"accessModes,omitempty"`
	// volumeSnapshotClassName can be used to specify the VSC to be used if
	// copyMethod is Snapshot. If not set, the default VSC is used.
	//+optional
	VolumeSnapshotClassName *string `json:"volumeSnapshotClassName,omitempty"`
}

func (*ReplicationSourceVolumeOptions) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceVolumeOptions.

func (*ReplicationSourceVolumeOptions) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResticRetainPolicy

type ResticRetainPolicy struct {
	// Hourly defines the number of snapshots to be kept hourly
	//+optional
	Hourly *int32 `json:"hourly,omitempty"`
	// Daily defines the number of snapshots to be kept daily
	//+optional
	Daily *int32 `json:"daily,omitempty"`
	// Weekly defines the number of snapshots to be kept weekly
	//+optional
	Weekly *int32 `json:"weekly,omitempty"`
	// Monthly defines the number of snapshots to be kept monthly
	//+optional
	Monthly *int32 `json:"monthly,omitempty"`
	// Yearly defines the number of snapshots to be kept yearly
	//+optional
	Yearly *int32 `json:"yearly,omitempty"`
	// Within defines the number of snapshots to be kept Within the given time period
	//+optional
	Within *string `json:"within,omitempty"`
	// Last defines the number of snapshots to be kept
	//+optional
	Last *string `json:"last,omitempty"`
}

ResticRetainPolicy defines the feilds for Restic backup

func (*ResticRetainPolicy) DeepCopy

func (in *ResticRetainPolicy) DeepCopy() *ResticRetainPolicy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResticRetainPolicy.

func (*ResticRetainPolicy) DeepCopyInto

func (in *ResticRetainPolicy) DeepCopyInto(out *ResticRetainPolicy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SyncthingPeer added in v0.4.0

type SyncthingPeer struct {
	// The peer's address that our Syncthing node will connect to.
	Address string `json:"address"`
	// The peer's Syncthing ID.
	ID string `json:"ID"`
	// A flag that determines whether this peer should
	// introduce us to other peers sharing this volume.
	// It is HIGHLY recommended that two Syncthing peers do NOT
	// set each other as introducers as you will have a difficult time
	// disconnecting the two.
	Introducer bool `json:"introducer"`
}

SyncthingPeer Defines the necessary information needed by VolSync to configure a given peer with the running Syncthing instance.

func (*SyncthingPeer) DeepCopy added in v0.4.0

func (in *SyncthingPeer) DeepCopy() *SyncthingPeer

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncthingPeer.

func (*SyncthingPeer) DeepCopyInto added in v0.4.0

func (in *SyncthingPeer) DeepCopyInto(out *SyncthingPeer)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SyncthingPeerStatus added in v0.4.0

type SyncthingPeerStatus struct {
	// The address of the Syncthing peer.
	Address string `json:"address"`
	// ID Is the peer's Syncthing ID.
	ID string `json:"ID"`
	// Flag indicating whether peer is currently connected.
	Connected bool `json:"connected"`
	// The ID of the Syncthing peer that this one was introduced by.
	IntroducedBy string `json:"introducedBy,omitempty"`
	// A friendly name to associate the given device.
	Name string `json:"name,omitempty"`
}

SyncthingPeerStatus Is a struct that contains information pertaining to the status of a given Syncthing peer.

func (*SyncthingPeerStatus) DeepCopy added in v0.4.0

func (in *SyncthingPeerStatus) DeepCopy() *SyncthingPeerStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SyncthingPeerStatus.

func (*SyncthingPeerStatus) DeepCopyInto added in v0.4.0

func (in *SyncthingPeerStatus) DeepCopyInto(out *SyncthingPeerStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

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