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
- Variables
- type CopyMethodType
- type CustomCASpec
- type MoverConfig
- type MoverResult
- type MoverStatus
- type ReplicationDestination
- type ReplicationDestinationExternalSpec
- type ReplicationDestinationList
- type ReplicationDestinationRcloneSpec
- type ReplicationDestinationResticCA
- type ReplicationDestinationResticSpec
- type ReplicationDestinationRsyncSpec
- type ReplicationDestinationRsyncStatus
- type ReplicationDestinationRsyncTLSSpec
- type ReplicationDestinationRsyncTLSStatus
- type ReplicationDestinationSpec
- type ReplicationDestinationStatus
- type ReplicationDestinationTriggerSpec
- type ReplicationDestinationVolumeOptions
- type ReplicationSource
- type ReplicationSourceExternalSpec
- type ReplicationSourceList
- type ReplicationSourceRcloneSpec
- type ReplicationSourceResticCA
- type ReplicationSourceResticSpec
- type ReplicationSourceResticStatus
- type ReplicationSourceRsyncSpec
- type ReplicationSourceRsyncStatus
- type ReplicationSourceRsyncTLSSpec
- type ReplicationSourceRsyncTLSStatus
- type ReplicationSourceSpec
- type ReplicationSourceStatus
- type ReplicationSourceSyncthingSpec
- type ReplicationSourceSyncthingStatus
- type ReplicationSourceTriggerSpec
- type ReplicationSourceVolumeOptions
- type ResticRetainPolicy
- type SyncthingPeer
- type SyncthingPeerStatus
Constants ¶
const ( ConditionSynchronizing string = "Synchronizing" SynchronizingReasonSync string = "SyncInProgress" SynchronizingReasonSched string = "WaitingForSchedule" SynchronizingReasonManual string = "WaitingForManual" SynchronizingReasonCleanup string = "CleaningUp" SynchronizingReasonError string = "Error" )
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 )
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?
const ( EvANone = "" // No action EvACreateMover = "CreateMover" EvADeleteMover = "DeleteMover" EvACreatePVC = "CreatePersistentVolumeClaim" EvACreateSnap = "CreateVolumeSnapshot" EvACreateSrcCopyUsingCopyTrigger = "CreateSrcCopyUsingCopyTrigger" )
ReplicationSource/ReplicationDestination Event "action" strings: Things the controller "does"
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 ¶
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 ¶
func (in *ReplicationDestination) DeepCopy() *ReplicationDestination
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 ¶
func (in *ReplicationDestinationExternalSpec) DeepCopy() *ReplicationDestinationExternalSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationExternalSpec.
func (*ReplicationDestinationExternalSpec) DeepCopyInto ¶
func (in *ReplicationDestinationExternalSpec) DeepCopyInto(out *ReplicationDestinationExternalSpec)
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 ¶
func (in *ReplicationDestinationList) DeepCopy() *ReplicationDestinationList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationList.
func (*ReplicationDestinationList) DeepCopyInto ¶
func (in *ReplicationDestinationList) DeepCopyInto(out *ReplicationDestinationList)
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 ¶
func (in *ReplicationDestinationRcloneSpec) DeepCopy() *ReplicationDestinationRcloneSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationRcloneSpec.
func (*ReplicationDestinationRcloneSpec) DeepCopyInto ¶
func (in *ReplicationDestinationRcloneSpec) DeepCopyInto(out *ReplicationDestinationRcloneSpec)
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
func (in *ReplicationDestinationResticCA) DeepCopy() *ReplicationDestinationResticCA
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationResticCA.
func (*ReplicationDestinationResticCA) DeepCopyInto ¶ added in v0.6.0
func (in *ReplicationDestinationResticCA) DeepCopyInto(out *ReplicationDestinationResticCA)
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 ¶
func (in *ReplicationDestinationResticSpec) DeepCopy() *ReplicationDestinationResticSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationResticSpec.
func (*ReplicationDestinationResticSpec) DeepCopyInto ¶
func (in *ReplicationDestinationResticSpec) DeepCopyInto(out *ReplicationDestinationResticSpec)
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 ¶
func (in *ReplicationDestinationRsyncSpec) DeepCopy() *ReplicationDestinationRsyncSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationRsyncSpec.
func (*ReplicationDestinationRsyncSpec) DeepCopyInto ¶
func (in *ReplicationDestinationRsyncSpec) DeepCopyInto(out *ReplicationDestinationRsyncSpec)
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 ¶
func (in *ReplicationDestinationRsyncStatus) DeepCopy() *ReplicationDestinationRsyncStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationRsyncStatus.
func (*ReplicationDestinationRsyncStatus) DeepCopyInto ¶
func (in *ReplicationDestinationRsyncStatus) DeepCopyInto(out *ReplicationDestinationRsyncStatus)
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
func (in *ReplicationDestinationRsyncTLSSpec) DeepCopy() *ReplicationDestinationRsyncTLSSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationRsyncTLSSpec.
func (*ReplicationDestinationRsyncTLSSpec) DeepCopyInto ¶ added in v0.7.0
func (in *ReplicationDestinationRsyncTLSSpec) DeepCopyInto(out *ReplicationDestinationRsyncTLSSpec)
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
func (in *ReplicationDestinationRsyncTLSStatus) DeepCopy() *ReplicationDestinationRsyncTLSStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationRsyncTLSStatus.
func (*ReplicationDestinationRsyncTLSStatus) DeepCopyInto ¶ added in v0.7.0
func (in *ReplicationDestinationRsyncTLSStatus) DeepCopyInto(out *ReplicationDestinationRsyncTLSStatus)
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 ¶
func (in *ReplicationDestinationSpec) DeepCopy() *ReplicationDestinationSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationSpec.
func (*ReplicationDestinationSpec) DeepCopyInto ¶
func (in *ReplicationDestinationSpec) DeepCopyInto(out *ReplicationDestinationSpec)
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 ¶
func (in *ReplicationDestinationStatus) DeepCopy() *ReplicationDestinationStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationStatus.
func (*ReplicationDestinationStatus) DeepCopyInto ¶
func (in *ReplicationDestinationStatus) DeepCopyInto(out *ReplicationDestinationStatus)
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 ¶
func (in *ReplicationDestinationTriggerSpec) DeepCopy() *ReplicationDestinationTriggerSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationTriggerSpec.
func (*ReplicationDestinationTriggerSpec) DeepCopyInto ¶
func (in *ReplicationDestinationTriggerSpec) DeepCopyInto(out *ReplicationDestinationTriggerSpec)
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 ¶
func (in *ReplicationDestinationVolumeOptions) DeepCopy() *ReplicationDestinationVolumeOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationDestinationVolumeOptions.
func (*ReplicationDestinationVolumeOptions) DeepCopyInto ¶
func (in *ReplicationDestinationVolumeOptions) DeepCopyInto(out *ReplicationDestinationVolumeOptions)
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 ¶
func (in *ReplicationSourceExternalSpec) DeepCopy() *ReplicationSourceExternalSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceExternalSpec.
func (*ReplicationSourceExternalSpec) DeepCopyInto ¶
func (in *ReplicationSourceExternalSpec) DeepCopyInto(out *ReplicationSourceExternalSpec)
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 ¶
func (in *ReplicationSourceList) DeepCopy() *ReplicationSourceList
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 ¶
func (in *ReplicationSourceRcloneSpec) DeepCopy() *ReplicationSourceRcloneSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceRcloneSpec.
func (*ReplicationSourceRcloneSpec) DeepCopyInto ¶
func (in *ReplicationSourceRcloneSpec) DeepCopyInto(out *ReplicationSourceRcloneSpec)
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
func (in *ReplicationSourceResticCA) DeepCopy() *ReplicationSourceResticCA
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceResticCA.
func (*ReplicationSourceResticCA) DeepCopyInto ¶ added in v0.6.0
func (in *ReplicationSourceResticCA) DeepCopyInto(out *ReplicationSourceResticCA)
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 ¶
func (in *ReplicationSourceResticSpec) DeepCopy() *ReplicationSourceResticSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceResticSpec.
func (*ReplicationSourceResticSpec) DeepCopyInto ¶
func (in *ReplicationSourceResticSpec) DeepCopyInto(out *ReplicationSourceResticSpec)
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 ¶
func (in *ReplicationSourceResticStatus) DeepCopy() *ReplicationSourceResticStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceResticStatus.
func (*ReplicationSourceResticStatus) DeepCopyInto ¶
func (in *ReplicationSourceResticStatus) DeepCopyInto(out *ReplicationSourceResticStatus)
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 ¶
func (in *ReplicationSourceRsyncSpec) DeepCopy() *ReplicationSourceRsyncSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceRsyncSpec.
func (*ReplicationSourceRsyncSpec) DeepCopyInto ¶
func (in *ReplicationSourceRsyncSpec) DeepCopyInto(out *ReplicationSourceRsyncSpec)
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 ¶
func (in *ReplicationSourceRsyncStatus) DeepCopy() *ReplicationSourceRsyncStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceRsyncStatus.
func (*ReplicationSourceRsyncStatus) DeepCopyInto ¶
func (in *ReplicationSourceRsyncStatus) DeepCopyInto(out *ReplicationSourceRsyncStatus)
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
func (in *ReplicationSourceRsyncTLSSpec) DeepCopy() *ReplicationSourceRsyncTLSSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceRsyncTLSSpec.
func (*ReplicationSourceRsyncTLSSpec) DeepCopyInto ¶ added in v0.7.0
func (in *ReplicationSourceRsyncTLSSpec) DeepCopyInto(out *ReplicationSourceRsyncTLSSpec)
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
func (in *ReplicationSourceRsyncTLSStatus) DeepCopy() *ReplicationSourceRsyncTLSStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceRsyncTLSStatus.
func (*ReplicationSourceRsyncTLSStatus) DeepCopyInto ¶ added in v0.7.0
func (in *ReplicationSourceRsyncTLSStatus) DeepCopyInto(out *ReplicationSourceRsyncTLSStatus)
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 ¶
func (in *ReplicationSourceSpec) DeepCopy() *ReplicationSourceSpec
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 ¶
func (in *ReplicationSourceStatus) DeepCopy() *ReplicationSourceStatus
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
func (in *ReplicationSourceSyncthingSpec) DeepCopy() *ReplicationSourceSyncthingSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceSyncthingSpec.
func (*ReplicationSourceSyncthingSpec) DeepCopyInto ¶ added in v0.4.0
func (in *ReplicationSourceSyncthingSpec) DeepCopyInto(out *ReplicationSourceSyncthingSpec)
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
func (in *ReplicationSourceSyncthingStatus) DeepCopy() *ReplicationSourceSyncthingStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceSyncthingStatus.
func (*ReplicationSourceSyncthingStatus) DeepCopyInto ¶ added in v0.4.0
func (in *ReplicationSourceSyncthingStatus) DeepCopyInto(out *ReplicationSourceSyncthingStatus)
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 ¶
func (in *ReplicationSourceTriggerSpec) DeepCopy() *ReplicationSourceTriggerSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceTriggerSpec.
func (*ReplicationSourceTriggerSpec) DeepCopyInto ¶
func (in *ReplicationSourceTriggerSpec) DeepCopyInto(out *ReplicationSourceTriggerSpec)
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 ¶
func (in *ReplicationSourceVolumeOptions) DeepCopy() *ReplicationSourceVolumeOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReplicationSourceVolumeOptions.
func (*ReplicationSourceVolumeOptions) DeepCopyInto ¶
func (in *ReplicationSourceVolumeOptions) DeepCopyInto(out *ReplicationSourceVolumeOptions)
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.