retention

package
v0.10.1 Latest Latest
Warning

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

Go to latest
Published: Jan 10, 2024 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type RemovedBackups

type RemovedBackups []v1.Backup

RemovedBackups hold backups that are removed from the backup repository.

type RetainedBackups

type RetainedBackups []v1.Backup

RetainedBackups hold backups that continue to stay at the backup repository and are not removed.

type Strategy

type Strategy interface {
	// FilterForRemoval filters all backups which should or should not be removed by a RetentionManager.
	FilterForRemoval(allBackups []k8sv1.Backup) (RemovedBackups, RetainedBackups)

	// GetName returns a name of the Strategy implementation.
	// The name should roughly describe how the strategy works.
	// As the name may be used to be selected by the user,
	// the name must only consist of latin characters and ciphers.
	GetName() StrategyId
}

Strategy filters a set over all backups into sets of backups that should be removed by the RetentionManager as well as sets of backups that should be kept.

Implementation Note: While Backup processes have a fixed start date, the actual run time of that process may be varying. Because of this, time-measuring implementations (i.e., keep backups for the last seven days) should consider the start date for counting backups. This would allow avoiding timing-related edge-cases of backups whose backup process may swap over to the next day.

type StrategyGetter

type StrategyGetter struct{}

StrategyGetter is capable of returning a Strategy identified by its name.

func NewStrategyGetter

func NewStrategyGetter() *StrategyGetter

NewStrategyGetter creates something capable of returning a Strategy.

func (*StrategyGetter) Get

func (sg *StrategyGetter) Get(name StrategyId) (Strategy, error)

Get returns the Strategy implementation identified by the given name.

type StrategyId

type StrategyId string

StrategyId is an enum identifying a retention strategy.

const (
	// KeepAllStrategy retention policy:
	// The following table gives an overview of the behavior within this strategy:
	//
	// | retained backups | time period |
	// |------------------|-------------|
	// | ALL              | ∞           |
	//
	// The maximum of saved backups is ∞.
	KeepAllStrategy StrategyId = "keepAll"

	// RemoveAllButKeepLatestStrategy retention policy:
	// The following table gives an overview of the behavior within this strategy:
	//
	// | retained backups | time period |
	// |------------------|-------------|
	// | 1                | ∞           |
	//
	// The maximum of saved backups is 1.
	RemoveAllButKeepLatestStrategy StrategyId = "removeAllButKeepLatest"

	// KeepLastSevenDaysStrategy retention policy:
	// The following table gives an overview of the behavior within this strategy:
	//
	// | retained backups | time period |
	// |------------------|-------------|
	// | ALL              | 1-7 days    |
	//
	// The maximum of saved backups is 7 (without consideration of manual backups).
	KeepLastSevenDaysStrategy StrategyId = "keepLastSevenDays"

	// KeepLast7DaysOldestOf1Month1Quarter1HalfYear1YearStrategy retention policy:
	//
	// The following table gives an overview of the behaviour within this strategy:
	//
	// | retained backups |  time period    |
	// | ALL              |  0 - 7 days     |
	// | 1                |  8 - 30 days    |
	// | 1                |  31 - 90 days   |
	// | 1                |  91 - 180 days  |
	// | 1                |  181 - 360 days |
	//
	// The maximum of saved backups is 11 (without consideration of manual backups)
	// Between interval borders the oldest backup is moving.
	KeepLast7DaysOldestOf1Month1Quarter1HalfYear1YearStrategy StrategyId = "keep7Days1Month1Quarter1Year"
)

Jump to

Keyboard shortcuts

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