Documentation ¶
Overview ¶
Package policy implements management of snapshot policies.
Index ¶
- Variables
- func ApplyRetentionPolicy(ctx context.Context, rep repo.Repository, sourceInfo snapshot.SourceInfo, ...) ([]*snapshot.Manifest, error)
- func GetEffectivePolicy(ctx context.Context, rep repo.Repository, si snapshot.SourceInfo) (effective *Policy, sources []*Policy, e error)
- func RemovePolicy(ctx context.Context, rep repo.Repository, si snapshot.SourceInfo) error
- func SetPolicy(ctx context.Context, rep repo.Repository, si snapshot.SourceInfo, pol *Policy) error
- type CompressionPolicy
- type ErrorHandlingPolicy
- type FilesPolicy
- type Policy
- func GetDefinedPolicy(ctx context.Context, rep repo.Repository, si snapshot.SourceInfo) (*Policy, error)
- func GetPolicyByID(ctx context.Context, rep repo.Repository, id manifest.ID) (*Policy, error)
- func ListPolicies(ctx context.Context, rep repo.Repository) ([]*Policy, error)
- func MergePolicies(policies []*Policy) *Policy
- type RetentionPolicy
- type SchedulingPolicy
- type SubdirectoryPolicyMap
- type TimeOfDay
- type Tree
Constants ¶
This section is empty.
Variables ¶
var DefaultPolicy = &Policy{
FilesPolicy: defaultFilesPolicy,
RetentionPolicy: defaultRetentionPolicy,
CompressionPolicy: defaultCompressionPolicy,
ErrorHandlingPolicy: defaultErrorHandlingPolicy,
SchedulingPolicy: defaultSchedulingPolicy,
}
DefaultPolicy is a default policy returned by policy tree in absence of other policies.
var ErrPolicyNotFound = errors.New("policy not found")
ErrPolicyNotFound is returned when the policy is not found.
var GlobalPolicySourceInfo = snapshot.SourceInfo{}
GlobalPolicySourceInfo is a source where global policy is attached.
Functions ¶
func ApplyRetentionPolicy ¶
func ApplyRetentionPolicy(ctx context.Context, rep repo.Repository, sourceInfo snapshot.SourceInfo, reallyDelete bool) ([]*snapshot.Manifest, error)
ApplyRetentionPolicy applies retention policy to a given source by deleting expired snapshots.
func GetEffectivePolicy ¶
func GetEffectivePolicy(ctx context.Context, rep repo.Repository, si snapshot.SourceInfo) (effective *Policy, sources []*Policy, e error)
GetEffectivePolicy calculates effective snapshot policy for a given source by combining the source-specifc policy (if any) with parent policies. The source must contain a path. Returns the effective policies and all source policies that contributed to that (most specific first).
func RemovePolicy ¶
func RemovePolicy(ctx context.Context, rep repo.Repository, si snapshot.SourceInfo) error
RemovePolicy removes the policy for a given source.
func SetPolicy ¶
func SetPolicy(ctx context.Context, rep repo.Repository, si snapshot.SourceInfo, pol *Policy) error
SetPolicy sets the policy on a given source.
Types ¶
type CompressionPolicy ¶ added in v0.4.0
type CompressionPolicy struct { CompressorName compression.Name `json:"compressorName,omitempty"` OnlyCompress []string `json:"onlyCompress,omitempty"` NeverCompress []string `json:"neverCompress,omitempty"` MinSize int64 `json:"minSize,omitempty"` MaxSize int64 `json:"maxSize,omitempty"` }
CompressionPolicy specifies compression policy.
func (*CompressionPolicy) CompressorForFile ¶ added in v0.4.0
func (p *CompressionPolicy) CompressorForFile(e fs.File) compression.Name
CompressorForFile returns compression name to be used for compressing a given file according to policy, using attributes such as name or size.
func (*CompressionPolicy) Merge ¶ added in v0.4.0
func (p *CompressionPolicy) Merge(src CompressionPolicy)
Merge applies default values from the provided policy. nolint:gocritic
type ErrorHandlingPolicy ¶ added in v0.5.2
type ErrorHandlingPolicy struct { // IgnoreFileErrors controls whether or not snapshot operation should terminate when a file throws an error on being read IgnoreFileErrors *bool `json:"ignoreFileErrors,omitempty"` // IgnoreDirectoryErrors controls whether or not snapshot operation should terminate when a directory throws an error on being read or opened IgnoreDirectoryErrors *bool `json:"ignoreDirectoryErrors,omitempty"` }
ErrorHandlingPolicy controls error hadnling behavior when taking snapshots.
func (*ErrorHandlingPolicy) IgnoreDirectoryErrorsOrDefault ¶ added in v0.5.2
func (p *ErrorHandlingPolicy) IgnoreDirectoryErrorsOrDefault(def bool) bool
IgnoreDirectoryErrorsOrDefault returns the ignore-directory-error setting if it is set, and returns the passed default if not
func (*ErrorHandlingPolicy) IgnoreFileErrorsOrDefault ¶ added in v0.5.2
func (p *ErrorHandlingPolicy) IgnoreFileErrorsOrDefault(def bool) bool
IgnoreFileErrorsOrDefault returns the ignore-file-error setting if it is set, and returns the passed default if not
func (*ErrorHandlingPolicy) Merge ¶ added in v0.5.2
func (p *ErrorHandlingPolicy) Merge(src ErrorHandlingPolicy)
Merge applies default values from the provided policy.
type FilesPolicy ¶ added in v0.4.0
type FilesPolicy struct { IgnoreRules []string `json:"ignore,omitempty"` NoParentIgnoreRules bool `json:"noParentIgnore,omitempty"` DotIgnoreFiles []string `json:"ignoreDotFiles,omitempty"` NoParentDotIgnoreFiles bool `json:"noParentDotFiles,omitempty"` MaxFileSize int64 `json:"maxFileSize,omitempty"` }
FilesPolicy describes files to be ignored when taking snapshots.
func (*FilesPolicy) Merge ¶ added in v0.4.0
func (p *FilesPolicy) Merge(src FilesPolicy)
Merge applies default values from the provided policy.
type Policy ¶
type Policy struct { Labels map[string]string `json:"-"` RetentionPolicy RetentionPolicy `json:"retention,omitempty"` FilesPolicy FilesPolicy `json:"files,omitempty"` ErrorHandlingPolicy ErrorHandlingPolicy `json:"errorHandling,omitempty"` SchedulingPolicy SchedulingPolicy `json:"scheduling,omitempty"` CompressionPolicy CompressionPolicy `json:"compression,omitempty"` NoParent bool `json:"noParent,omitempty"` }
Policy describes snapshot policy for a single source.
func GetDefinedPolicy ¶
func GetDefinedPolicy(ctx context.Context, rep repo.Repository, si snapshot.SourceInfo) (*Policy, error)
GetDefinedPolicy returns the policy defined on the provided snapshot.SourceInfo or ErrPolicyNotFound if not present.
func GetPolicyByID ¶
GetPolicyByID gets the policy for a given unique ID or ErrPolicyNotFound if not found.
func ListPolicies ¶
ListPolicies returns a list of all policies.
func MergePolicies ¶
MergePolicies computes the policy by applying the specified list of policies in order.
func (*Policy) Target ¶
func (p *Policy) Target() snapshot.SourceInfo
Target returns the snapshot.SourceInfo describing username, host and path targeted by the policy.
type RetentionPolicy ¶
type RetentionPolicy struct { KeepLatest *int `json:"keepLatest,omitempty"` KeepHourly *int `json:"keepHourly,omitempty"` KeepDaily *int `json:"keepDaily,omitempty"` KeepWeekly *int `json:"keepWeekly,omitempty"` KeepMonthly *int `json:"keepMonthly,omitempty"` KeepAnnual *int `json:"keepAnnual,omitempty"` }
RetentionPolicy describes snapshot retention policy.
func (*RetentionPolicy) ComputeRetentionReasons ¶
func (r *RetentionPolicy) ComputeRetentionReasons(manifests []*snapshot.Manifest)
ComputeRetentionReasons computes the reasons why each snapshot is retained, based on the settings in retention policy and stores them in RetentionReason field.
func (*RetentionPolicy) Merge ¶
func (r *RetentionPolicy) Merge(src RetentionPolicy)
Merge applies default values from the provided policy.
type SchedulingPolicy ¶
type SchedulingPolicy struct { IntervalSeconds int64 `json:"intervalSeconds,omitempty"` TimesOfDay []TimeOfDay `json:"timeOfDay,omitempty"` }
SchedulingPolicy describes policy for scheduling snapshots.
func (*SchedulingPolicy) Interval ¶
func (p *SchedulingPolicy) Interval() time.Duration
Interval returns the snapshot interval or zero if not specified.
func (*SchedulingPolicy) Merge ¶
func (p *SchedulingPolicy) Merge(src SchedulingPolicy)
Merge applies default values from the provided policy.
func (*SchedulingPolicy) SetInterval ¶
func (p *SchedulingPolicy) SetInterval(d time.Duration)
SetInterval sets the snapshot interval (zero disables).
type SubdirectoryPolicyMap ¶ added in v0.4.0
SubdirectoryPolicyMap implements Getter for a static mapping of relative paths to Policy for subdirectories
func (SubdirectoryPolicyMap) GetPolicyForPath ¶ added in v0.4.0
func (m SubdirectoryPolicyMap) GetPolicyForPath(relativePath string) (*Policy, error)
GetPolicyForPath returns Policy defined in the map or nil.
type TimeOfDay ¶
TimeOfDay represents the time of day (hh:mm) using 24-hour time format.
func SortAndDedupeTimesOfDay ¶
SortAndDedupeTimesOfDay sorts the slice of times of day and removes duplicates.
type Tree ¶ added in v0.4.0
type Tree struct {
// contains filtered or unexported fields
}
Tree represents a node in the policy tree, where a policy can be defined. A nil tree is a valid tree with default policy.
func BuildTree ¶ added in v0.4.0
BuildTree builds a policy tree from the given map of paths to policies. Each path must be relative and start with "." and be separated by slashes.
func TreeForSource ¶ added in v0.4.0
func TreeForSource(ctx context.Context, rep repo.Repository, si snapshot.SourceInfo) (*Tree, error)
TreeForSource returns policy Tree for a given source.
func (*Tree) DefinedPolicy ¶ added in v0.4.0
DefinedPolicy returns policy that's been explicitly defined for tree node or nil if no policy was defined.
func (*Tree) EffectivePolicy ¶ added in v0.4.0
EffectivePolicy returns policy that's been defined for this tree node or inherited from its parent.
func (*Tree) IsInherited ¶ added in v0.4.0
IsInherited returns true if the policy inherited to the given tree hode has been inherited from its parent.