repository

package
v1.13.0-rc.1 Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2024 License: Apache-2.0 Imports: 16 Imported by: 6

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

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 NewBackupRepository added in v1.12.0

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 added in v1.12.0

type Ensurer struct {
	// contains filtered or unexported fields
}

Ensurer ensures that backup repositories are created and ready.

func NewEnsurer added in v1.12.0

func NewEnsurer(repoClient client.Client, log logrus.FieldLogger, resourceTimeout time.Duration) *Ensurer

func (*Ensurer) EnsureRepo added in v1.12.0

func (r *Ensurer) EnsureRepo(ctx context.Context, namespace, volumeNamespace, backupLocation, repositoryType string) (*velerov1api.BackupRepository, error)

type Manager

type Manager interface {
	// InitRepo initializes a repo with the specified name and identifier.
	InitRepo(repo *velerov1api.BackupRepository) error

	// ConnectToRepo tries to connect to the specified repo, and returns an error if it fails.
	// This is intended to be used to ensure that the repo exists/can be authenticated to.
	ConnectToRepo(repo *velerov1api.BackupRepository) error

	// PrepareRepo tries to connect to the specific repo first, if it fails because of the
	// repo is not initialized, it turns to initialize the repo
	PrepareRepo(repo *velerov1api.BackupRepository) error

	// PruneRepo deletes unused data from a repo.
	PruneRepo(repo *velerov1api.BackupRepository) error

	// UnlockRepo removes stale locks from a repo.
	UnlockRepo(repo *velerov1api.BackupRepository) error

	// Forget removes a snapshot from the list of
	// available snapshots in a repo.
	Forget(context.Context, SnapshotIdentifier) error
	// DefaultMaintenanceFrequency returns the default maintenance frequency from the specific repo
	DefaultMaintenanceFrequency(repo *velerov1api.BackupRepository) (time.Duration, error)
}

Manager manages backup repositories.

func NewManager

func NewManager(
	namespace string,
	client client.Client,
	repoLocker *RepoLocker,
	repoEnsurer *Ensurer,
	credentialFileStore credentials.FileStore,
	credentialSecretStore credentials.SecretStore,
	log logrus.FieldLogger,
) Manager

NewManager create a new repository manager.

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.

type SnapshotIdentifier

type SnapshotIdentifier struct {
	// VolumeNamespace is the namespace of the pod/volume that
	// the snapshot is for.
	VolumeNamespace string `json:"volumeNamespace"`

	// BackupStorageLocation is the backup's storage location
	// name.
	BackupStorageLocation string `json:"backupStorageLocation"`

	// SnapshotID is the short ID of the snapshot.
	SnapshotID string `json:"snapshotID"`

	// RepositoryType is the type of the repository where the
	// snapshot is stored
	RepositoryType string `json:"repositoryType"`
}

SnapshotIdentifier uniquely identifies a snapshot taken by Velero.

Jump to

Keyboard shortcuts

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