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.
Types ¶
type BackupRepositoryKey ¶
type BackupRepositoryKey struct { VolumeNamespace string BackupLocation string RepositoryType string }
A BackupRepositoryKey uniquely identify a backup repository
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 *RepositoryEnsurer, 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 RepositoryEnsurer ¶
type RepositoryEnsurer struct {
// contains filtered or unexported fields
}
RepositoryEnsurer ensures that backup repositories are created and ready.
func NewRepositoryEnsurer ¶
func NewRepositoryEnsurer(repoClient client.Client, log logrus.FieldLogger, resourceTimeout time.Duration) *RepositoryEnsurer
func (*RepositoryEnsurer) EnsureRepo ¶
func (r *RepositoryEnsurer) EnsureRepo(ctx context.Context, namespace, volumeNamespace, backupLocation, repositoryType string) (*velerov1api.BackupRepository, error)
type SnapshotIdentifier ¶
type SnapshotIdentifier struct { // VolumeNamespace is the namespace of the pod/volume that // the snapshot is for. VolumeNamespace string // BackupStorageLocation is the backup's storage location // name. BackupStorageLocation string // SnapshotID is the short ID of the snapshot. SnapshotID string // RepositoryType is the type of the repository where the // snapshot is stored RepositoryType string }
SnapshotIdentifier uniquely identifies a snapshot taken by Velero.