Documentation ¶
Index ¶
- Constants
- Variables
- func AddAllLabels(obj Labelable, labels map[string]string) bool
- func AddLabel(obj Labelable, key string, value string) bool
- func AllLines(line string) *string
- func AppendEnvVarsForClusterWideProxy(envVars []corev1.EnvVar) []corev1.EnvVar
- func CleanupObjects(ctx context.Context, c client.Client, logger logr.Logger, owner client.Object, ...) error
- func CleanupSnapshotsWithLabelCheck(ctx context.Context, c client.Client, logger logr.Logger, owner client.Object, ...) error
- func CreateOrUpdateDeleteOnImmutableErr(ctx context.Context, k8sClient client.Client, obj client.Object, ...) (ctrlutil.OperationResult, error)
- func EnvFromSecret(secretName string, field string, optional bool) corev1.EnvVar
- func FilterLogs(reader io.Reader, lineFilter func(line string) *string) (string, error)
- func GetAndValidateSecret(ctx context.Context, cl client.Client, logger logr.Logger, ...) error
- func GetMoverLogMaxBytes() int
- func GetMoverLogTailLines() int64
- func GetNewestPodForJob(ctx context.Context, logger logr.Logger, jobName, jobNamespace string, ...) (*corev1.Pod, error)
- func GetPodsForJob(ctx context.Context, logger logr.Logger, jobName, jobNamespace string) (runningPods []corev1.Pod, successfulPods []corev1.Pod, failedPods []corev1.Pod, ...)
- func GetServiceAddress(svc *corev1.Service) string
- func HasLabel(obj Labelable, key string) bool
- func HasLabelWithValue(obj Labelable, key string, value string) bool
- func InitPodLogsClient(cfg *rest.Config) (*kubernetes.Clientset, error)
- func IsMarkedDoNotDelete(snapshot *snapv1.VolumeSnapshot) bool
- func IsMoverLogDebug() bool
- func IsOwnedByVolsync(obj Labelable) bool
- func KindAndName(scheme *runtime.Scheme, obj client.Object) string
- func MarkForCleanup(owner metav1.Object, obj metav1.Object) bool
- func MarkOldSnapshotForCleanup(ctx context.Context, c client.Client, logger logr.Logger, owner metav1.Object, ...) error
- func PrivilegedMoversOk(ctx context.Context, cl client.Client, logger logr.Logger, namespace string) (bool, error)
- func PvcIsReadOnly(pvc *corev1.PersistentVolumeClaim) bool
- func ReconcileBatch(l logr.Logger, reconcileFuncs ...ReconcileFunc) (bool, error)
- func RelinquishOwnedSnapshotsWithDoNotDeleteLabel(ctx context.Context, c client.Client, logger logr.Logger, owner client.Object) error
- func RemoveLabel(obj Labelable, key string) bool
- func RemoveOwnedByVolSync(obj Labelable) bool
- func RemoveSnapshotOwnershipIfRequestedAndUpdate(ctx context.Context, c client.Client, logger logr.Logger, owner client.Object, ...) (bool, error)
- func SecretHasFields(secret *corev1.Secret, fields ...string) error
- func SetOwnedByVolSync(obj Labelable) bool
- func TruncateString(s string, maxBytes int) string
- func UnMarkForCleanupAndRemoveOwnership(obj metav1.Object, owner client.Object) bool
- func UnmarkForCleanup(obj metav1.Object) bool
- func UpdateMoverStatusForFailedJob(ctx context.Context, logger logr.Logger, ...)
- func UpdateMoverStatusForSuccessfulJob(ctx context.Context, logger logr.Logger, ...)
- type AffinityInfo
- type Labelable
- type ReconcileFunc
- type SAHandler
- type SAHandlerUserSupplied
- type SAHandlerVolSync
Constants ¶
const ( DoNotDeleteLabelKey = volsyncLabelPrefix + "/do-not-delete" OwnedByLabelKey = "app.kubernetes.io/created-by" OwnedByLabelValue = "volsync" )
const ( // Env var - max bytes we will log into the status log MoverLogMaxBytesEnvVar = "MOVER_LOG_MAX_BYTES" DefaultMoverLogMaxBytes int = 1024 // Env var - max lines we will tail from a mover pod to process logs // Set to -1 to tail all lines since the mover pod start MoverLogTailLinesEnvVar = "MOVER_LOG_TAIL_LINES" DefaultMoverLogTailLines int64 = -1 // Env var - Set to "true" to log all lines (up to MOVER_LOG_MAX_LINES) of mover logs MoverLogDebugEnvVar = "MOVER_LOG_DEBUG" )
const DefaultSCCName = "volsync-privileged-mover"
DefaultSCCName is the default name of the volsync security context constraint
const (
ErrUnableToSetControllerRef = "unable to set controller reference"
)
Define the error messages to be returned by VolSync.
Variables ¶
var SCCName string
SCCName is the name of the SCC to use for the mover Jobs
Functions ¶
func AddAllLabels ¶ added in v0.5.0
Ensures that all labels in the provided map are present and returns True if an update was made
func AddLabel ¶ added in v0.5.0
Ensures that a given key/value label is present and returns True if an update was made
func AppendEnvVarsForClusterWideProxy ¶ added in v0.6.1
func CleanupObjects ¶
func CleanupObjects(ctx context.Context, c client.Client, logger logr.Logger, owner client.Object, types []client.Object) error
CleanupObjects deletes all objects that have been marked. The objects to be cleaned up must have been previously marked via MarkForCleanup() and associated with "owner". The "types" array should contain one object of each type to clean up.
func CleanupSnapshotsWithLabelCheck ¶ added in v0.5.0
func CreateOrUpdateDeleteOnImmutableErr ¶ added in v0.5.0
func CreateOrUpdateDeleteOnImmutableErr(ctx context.Context, k8sClient client.Client, obj client.Object, log logr.Logger, f ctrlutil.MutateFn) (ctrlutil.OperationResult, error)
If an update causes an immutable error, delete the object and return an error (or potentially an error from the delete if the delete fails). The caller should ensure (usually via a requeue) that createOrUpdate is called on the resource again in order for it to be recreated.
func EnvFromSecret ¶
func FilterLogs ¶ added in v0.7.0
Appies lineFilter to each line
func GetAndValidateSecret ¶
func GetMoverLogMaxBytes ¶ added in v0.7.0
func GetMoverLogMaxBytes() int
func GetMoverLogTailLines ¶ added in v0.7.0
func GetMoverLogTailLines() int64
func GetNewestPodForJob ¶ added in v0.7.0
func GetNewestPodForJob(ctx context.Context, logger logr.Logger, jobName, jobNamespace string, jobFailed bool) (*corev1.Pod, error)
Attempts to get the newest successful pod when jobFailed==false Attempts to get the newest failed pod (or newest running pod if no failed pods) if jobFailed==true
func GetPodsForJob ¶ added in v0.7.0
func GetServiceAddress ¶ added in v0.5.0
GetServiceAddress Returns the address of the given service as a string.
func HasLabelWithValue ¶ added in v0.5.0
func InitPodLogsClient ¶ added in v0.7.0
func InitPodLogsClient(cfg *rest.Config) (*kubernetes.Clientset, error)
func IsMarkedDoNotDelete ¶ added in v0.5.0
func IsMarkedDoNotDelete(snapshot *snapv1.VolumeSnapshot) bool
func IsMoverLogDebug ¶ added in v0.7.0
func IsMoverLogDebug() bool
func IsOwnedByVolsync ¶ added in v0.5.0
Returns True if the object contains a label indicating that it was created by VolSync
func KindAndName ¶ added in v0.5.0
func MarkForCleanup ¶
MarkForCleanup marks the provided "obj" to be deleted at the end of the synchronization iteration.
func MarkOldSnapshotForCleanup ¶ added in v0.4.0
func PrivilegedMoversOk ¶ added in v0.6.0
func PvcIsReadOnly ¶ added in v0.6.0
func PvcIsReadOnly(pvc *corev1.PersistentVolumeClaim) bool
func ReconcileBatch ¶
func ReconcileBatch(l logr.Logger, reconcileFuncs ...ReconcileFunc) (bool, error)
reconcileBatch steps through a list of reconcile functions until one returns false or an error.
func RelinquishOwnedSnapshotsWithDoNotDeleteLabel ¶ added in v0.5.0
func RemoveLabel ¶ added in v0.5.0
Removes the given key from the object's labels and returns True if an update was made
func RemoveOwnedByVolSync ¶ added in v0.5.0
Removes the "created by Volsync" label
func RemoveSnapshotOwnershipIfRequestedAndUpdate ¶ added in v0.5.0
func SecretHasFields ¶ added in v0.4.0
func SetOwnedByVolSync ¶ added in v0.5.0
Sets a label on the object to indicate it was created by VolSync
func TruncateString ¶ added in v0.7.0
func UnMarkForCleanupAndRemoveOwnership ¶ added in v0.5.0
func UnmarkForCleanup ¶ added in v0.5.0
UnmarkForCleanup removes any previously applied cleanup label
func UpdateMoverStatusForFailedJob ¶ added in v0.7.0
func UpdateMoverStatusForFailedJob(ctx context.Context, logger logr.Logger, moverStatus *volsyncv1alpha1.MoverStatus, jobName, jobNamespace string, logLineFilter func(string) *string)
func UpdateMoverStatusForSuccessfulJob ¶ added in v0.7.0
func UpdateMoverStatusForSuccessfulJob(ctx context.Context, logger logr.Logger, moverStatus *volsyncv1alpha1.MoverStatus, jobName, jobNamespace string, logLineFilter func(string) *string)
Types ¶
type AffinityInfo ¶ added in v0.5.0
type AffinityInfo struct { NodeSelector map[string]string Tolerations []corev1.Toleration }
func AffinityFromVolume ¶ added in v0.5.0
func AffinityFromVolume(ctx context.Context, c client.Client, logger logr.Logger, pvc *corev1.PersistentVolumeClaim) (*AffinityInfo, error)
Determine the proper affinity to apply based on the current users of a PVC
type ReconcileFunc ¶
reconcileFunc is a function that partially reconciles an object. It returns a bool indicating whether reconciling should continue and an error.
type SAHandler ¶
type SAHandlerUserSupplied ¶ added in v0.7.0
type SAHandlerUserSupplied struct { Client client.Client SA *corev1.ServiceAccount }
func (*SAHandlerUserSupplied) Reconcile ¶ added in v0.7.0
func (d *SAHandlerUserSupplied) Reconcile(ctx context.Context, l logr.Logger) (*corev1.ServiceAccount, error)
type SAHandlerVolSync ¶ added in v0.7.0
type SAHandlerVolSync struct { Context context.Context Client client.Client SA *corev1.ServiceAccount Owner metav1.Object Privileged bool // contains filtered or unexported fields }
func (*SAHandlerVolSync) Reconcile ¶ added in v0.7.0
func (d *SAHandlerVolSync) Reconcile(ctx context.Context, l logr.Logger) (*corev1.ServiceAccount, error)