Documentation ¶
Index ¶
- Constants
- func DeleteOldMaintenanceJobs(cli client.Client, repo string, keep int) error
- func GenerateJobName(repo string) string
- func GetBackupRepository(ctx context.Context, cli client.Client, namespace string, ...) (*velerov1api.BackupRepository, error)
- func GetLatestMaintenanceJob(cli client.Client, ns string) (*batchv1.Job, error)
- func GetMaintenanceResultFromJob(cli client.Client, job *batchv1.Job) (string, error)
- func NewBackupRepository(namespace string, key BackupRepositoryKey) *velerov1api.BackupRepository
- func WaitForJobComplete(ctx context.Context, client client.Client, job *batchv1.Job) error
- type BackupRepositoryKey
- type Ensurer
- type JobConfigs
- type RepoLocker
Constants ¶
const ( RepositoryNameLabel = "velero.io/repo-name" GlobalKeyForRepoMaintenanceJobCM = "global" )
Variables ¶
This section is empty.
Functions ¶
func DeleteOldMaintenanceJobs ¶
DeleteOldMaintenanceJobs deletes old maintenance jobs and keeps the latest N jobs
func GenerateJobName ¶
func GetBackupRepository ¶
func GetBackupRepository(ctx context.Context, cli client.Client, namespace string, key BackupRepositoryKey, options ...bool) (*velerov1api.BackupRepository, error)
GetBackupRepository gets a backup repository through BackupRepositoryKey and ensure ready if required.
func GetLatestMaintenanceJob ¶
func NewBackupRepository ¶
func NewBackupRepository(namespace string, key BackupRepositoryKey) *velerov1api.BackupRepository
Types ¶
type BackupRepositoryKey ¶
type BackupRepositoryKey struct { VolumeNamespace string BackupLocation string RepositoryType string }
A BackupRepositoryKey uniquely identify a backup repository
type Ensurer ¶
type Ensurer struct {
// contains filtered or unexported fields
}
Ensurer ensures that backup repositories are created and ready.
func NewEnsurer ¶
func (*Ensurer) EnsureRepo ¶
func (r *Ensurer) EnsureRepo(ctx context.Context, namespace, volumeNamespace, backupLocation, repositoryType string) (*velerov1api.BackupRepository, error)
type JobConfigs ¶
type JobConfigs struct { // LoadAffinities is the config for repository maintenance job load affinity. LoadAffinities []*kube.LoadAffinity `json:"loadAffinity,omitempty"` // PodResources is the config for the CPU and memory resources setting. PodResources *kube.PodResources `json:"podResources,omitempty"` }
func GetMaintenanceJobConfig ¶
func GetMaintenanceJobConfig( ctx context.Context, client client.Client, logger logrus.FieldLogger, veleroNamespace string, repoMaintenanceJobConfig string, repo *velerov1api.BackupRepository, ) (*JobConfigs, error)
GetMaintenanceJobConfig is called to get the Maintenance Job Config for the BackupRepository specified by the repo parameter.
Params:
ctx: the Go context used for controller-runtime client. client: the controller-runtime client. logger: the logger. veleroNamespace: the Velero-installed namespace. It's used to retrieve the BackupRepository. repoMaintenanceJobConfig: the repository maintenance job ConfigMap name. repo: the BackupRepository needs to run the maintenance Job.
type RepoLocker ¶
type RepoLocker struct {
// contains filtered or unexported fields
}
RepoLocker manages exclusive/non-exclusive locks for operations against backup repositories. The semantics of exclusive/non-exclusive locks are the same as for a sync.RWMutex, where a non-exclusive lock is equivalent to a read lock, and an exclusive lock is equivalent to a write lock.
func NewRepoLocker ¶
func NewRepoLocker() *RepoLocker
func (*RepoLocker) Lock ¶
func (rl *RepoLocker) Lock(name string)
Lock acquires a non-exclusive lock for the specified repository. This function blocks until no exclusive locks exist for the repo.
func (*RepoLocker) LockExclusive ¶
func (rl *RepoLocker) LockExclusive(name string)
LockExclusive acquires an exclusive lock for the specified repository. This function blocks until no other locks exist for the repo.
func (*RepoLocker) Unlock ¶
func (rl *RepoLocker) Unlock(name string)
Unlock releases a non-exclusive lock for the repo.
func (*RepoLocker) UnlockExclusive ¶
func (rl *RepoLocker) UnlockExclusive(name string)
UnlockExclusive releases an exclusive lock for the repo.