lifecycle

package
v0.2.5 Latest Latest
Warning

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

Go to latest
Published: Nov 6, 2023 License: AGPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// TransitionComplete marks completed transition
	TransitionComplete = "complete"
	// TransitionPending - transition is yet to be attempted
	TransitionPending = "pending"
)

Variables

This section is empty.

Functions

func Errorf

func Errorf(format string, a ...interface{}) error

Errorf - formats according to a format specifier and returns the string as a value that satisfies error of type tagging.Error

func ExpectedExpiryTime

func ExpectedExpiryTime(modTime time.Time, days int) time.Time

ExpectedExpiryTime calculates the expiry, transition or restore date/time based on a object modtime. The expected transition or restore time is always a midnight time following the object modification time plus the number of transition/restore days.

e.g. If the object modtime is `Thu May 21 13:42:50 GMT 2020` and the object should
    transition in 1 day, then the expected transition time is `Fri, 23 May 2020 00:00:00 GMT`

Types

type Action

type Action int

Action represents a delete action or other transition actions that will be implemented later.

const (
	// NoneAction means no action required after evaluating lifecycle rules
	NoneAction Action = iota
	// DeleteAction means the object needs to be removed after evaluating lifecycle rules
	DeleteAction
	// DeleteVersionAction deletes a particular version
	DeleteVersionAction
	// TransitionAction transitions a particular object after evaluating lifecycle transition rules
	TransitionAction
	// TransitionVersionAction transitions a particular object version after evaluating lifecycle transition rules
	TransitionVersionAction
	// DeleteRestoredAction means the temporarily restored object needs to be removed after evaluating lifecycle rules
	DeleteRestoredAction
	// DeleteRestoredVersionAction deletes a particular version that was temporarily restored
	DeleteRestoredVersionAction
	// DeleteAllVersionsAction deletes all versions when an object expires
	DeleteAllVersionsAction

	// ActionCount must be the last action and shouldn't be used as a regular action.
	ActionCount
)

func (Action) Delete

func (a Action) Delete() bool

Delete - Returns true if action demands delete on all objects (including restored)

func (Action) DeleteAll

func (a Action) DeleteAll() bool

DeleteAll - Returns true if the action demands deleting all versions of an object

func (Action) DeleteRestored

func (a Action) DeleteRestored() bool

DeleteRestored - Returns true if action demands delete on restored objects

func (Action) DeleteVersioned

func (a Action) DeleteVersioned() bool

DeleteVersioned - Returns true if action demands delete on a versioned object

func (Action) String

func (i Action) String() string

type And

type And struct {
	XMLName xml.Name `xml:"And"`
	Prefix  Prefix   `xml:"Prefix,omitempty"`
	Tags    []Tag    `xml:"Tag,omitempty"`
}

And - a tag to combine a prefix and multiple tags for lifecycle configuration rule.

func (And) ContainsDuplicateTag

func (a And) ContainsDuplicateTag() bool

ContainsDuplicateTag - returns true if duplicate keys are present in And

func (And) Validate

func (a And) Validate() error

Validate - validates the And field

type Boolean

type Boolean struct {
	Unused struct{} // Needed for GOB compatibility
	// contains filtered or unexported fields
}

Boolean signifies a boolean XML struct with custom marshaling

func (Boolean) MarshalXML

func (b Boolean) MarshalXML(e *xml.Encoder, startElement xml.StartElement) error

MarshalXML encodes delete marker boolean into an XML form.

func (*Boolean) UnmarshalXML

func (b *Boolean) UnmarshalXML(d *xml.Decoder, startElement xml.StartElement) error

UnmarshalXML decodes delete marker boolean from the XML form.

type Error

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

Error is the generic type for any error happening during tag parsing.

func (Error) Error

func (e Error) Error() string

Error 'error' compatible method.

func (Error) Unwrap

func (e Error) Unwrap() error

Unwrap the internal error.

type Event

type Event struct {
	Action                  Action
	RuleID                  string
	Due                     time.Time
	NoncurrentDays          int
	NewerNoncurrentVersions int
	StorageClass            string
}

Event contains a lifecycle action with associated info

type Expiration

type Expiration struct {
	XMLName      xml.Name           `xml:"Expiration"`
	Days         ExpirationDays     `xml:"Days,omitempty"`
	Date         ExpirationDate     `xml:"Date,omitempty"`
	DeleteMarker ExpireDeleteMarker `xml:"ExpiredObjectDeleteMarker"`
	// Indicates whether MinIO will remove all versions. If set to true, all versions will be deleted;
	// if set to false the policy takes no action. This action uses the Days/Date to expire objects.
	// This check is verified for latest version of the object.
	DeleteAll Boolean `xml:"ExpiredObjectAllVersions"`
	// contains filtered or unexported fields
}

Expiration - expiration actions for a rule in lifecycle configuration.

func (Expiration) IsDateNull

func (e Expiration) IsDateNull() bool

IsDateNull returns true if date field is null

func (Expiration) IsDaysNull

func (e Expiration) IsDaysNull() bool

IsDaysNull returns true if days field is null

func (Expiration) IsNull

func (e Expiration) IsNull() bool

IsNull returns true if both date and days fields are null

func (Expiration) MarshalXML

func (e Expiration) MarshalXML(enc *xml.Encoder, startElement xml.StartElement) error

MarshalXML encodes expiration field into an XML form.

func (*Expiration) UnmarshalXML

func (e *Expiration) UnmarshalXML(d *xml.Decoder, startElement xml.StartElement) error

UnmarshalXML decodes expiration field from the XML form.

func (Expiration) Validate

func (e Expiration) Validate() error

Validate - validates the "Expiration" element

type ExpirationDate

type ExpirationDate struct {
	time.Time
}

ExpirationDate is a embedded type containing time.Time to unmarshal Date in Expiration

func (ExpirationDate) MarshalXML

func (eDate ExpirationDate) MarshalXML(e *xml.Encoder, startElement xml.StartElement) error

MarshalXML encodes expiration date if it is non-zero and encodes empty string otherwise

func (*ExpirationDate) UnmarshalXML

func (eDate *ExpirationDate) UnmarshalXML(d *xml.Decoder, startElement xml.StartElement) error

UnmarshalXML parses date from Expiration and validates date format

type ExpirationDays

type ExpirationDays int

ExpirationDays is a type alias to unmarshal Days in Expiration

func (ExpirationDays) MarshalXML

func (eDays ExpirationDays) MarshalXML(e *xml.Encoder, startElement xml.StartElement) error

MarshalXML encodes number of days to expire if it is non-zero and encodes empty string otherwise

func (*ExpirationDays) UnmarshalXML

func (eDays *ExpirationDays) UnmarshalXML(d *xml.Decoder, startElement xml.StartElement) error

UnmarshalXML parses number of days from Expiration and validates if greater than zero

type ExpireDeleteMarker

type ExpireDeleteMarker struct {
	Boolean
}

ExpireDeleteMarker represents value of ExpiredObjectDeleteMarker field in Expiration XML element.

type Filter

type Filter struct {
	XMLName xml.Name `xml:"Filter"`

	Prefix Prefix

	And And

	Tag Tag
	// contains filtered or unexported fields
}

Filter - a filter for a lifecycle configuration Rule.

func (Filter) IsEmpty

func (f Filter) IsEmpty() bool

IsEmpty returns true if Filter is not specified in the XML

func (Filter) MarshalXML

func (f Filter) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML - produces the xml representation of the Filter struct only one of Prefix, And and Tag should be present in the output.

func (Filter) TestTags

func (f Filter) TestTags(userTags string) bool

TestTags tests if the object tags satisfy the Filter tags requirement, it returns true if there is no tags in the underlying Filter.

func (*Filter) UnmarshalXML

func (f *Filter) UnmarshalXML(d *xml.Decoder, start xml.StartElement) (err error)

UnmarshalXML - decodes XML data.

func (Filter) Validate

func (f Filter) Validate() error

Validate - validates the filter element

type Lifecycle

type Lifecycle struct {
	XMLName xml.Name `xml:"LifecycleConfiguration"`
	Rules   []Rule   `xml:"Rule"`
}

Lifecycle - Configuration for bucket lifecycle.

func ParseLifecycleConfig

func ParseLifecycleConfig(reader io.Reader) (*Lifecycle, error)

ParseLifecycleConfig - parses data in given reader to Lifecycle.

func ParseLifecycleConfigWithID

func ParseLifecycleConfigWithID(r io.Reader) (*Lifecycle, error)

ParseLifecycleConfigWithID - parses for a Lifecycle config and assigns unique id to rules with empty ID.

func (Lifecycle) Eval

func (lc Lifecycle) Eval(obj ObjectOpts) Event

Eval returns the lifecycle event applicable now.

func (Lifecycle) FilterRules

func (lc Lifecycle) FilterRules(obj ObjectOpts) []Rule

FilterRules returns the rules filtered by the status, prefix and tags

func (Lifecycle) HasActiveRules

func (lc Lifecycle) HasActiveRules(prefix string) bool

HasActiveRules - returns whether lc has active rules at any level below or at prefix.

func (Lifecycle) HasTransition

func (lc Lifecycle) HasTransition() bool

HasTransition returns 'true' if lifecycle document has Transition enabled.

func (Lifecycle) NoncurrentVersionsExpirationLimit

func (lc Lifecycle) NoncurrentVersionsExpirationLimit(obj ObjectOpts) Event

NoncurrentVersionsExpirationLimit returns the number of noncurrent versions to be retained from the first applicable rule per S3 behavior.

func (Lifecycle) SetPredictionHeaders

func (lc Lifecycle) SetPredictionHeaders(w http.ResponseWriter, obj ObjectOpts)

SetPredictionHeaders sets time to expiry and transition headers on w for a given obj.

func (*Lifecycle) UnmarshalXML

func (lc *Lifecycle) UnmarshalXML(d *xml.Decoder, start xml.StartElement) (err error)

UnmarshalXML - decodes XML data.

func (Lifecycle) Validate

func (lc Lifecycle) Validate() error

Validate - validates the lifecycle configuration

type NoncurrentVersionExpiration

type NoncurrentVersionExpiration struct {
	XMLName                 xml.Name       `xml:"NoncurrentVersionExpiration"`
	NoncurrentDays          ExpirationDays `xml:"NoncurrentDays,omitempty"`
	NewerNoncurrentVersions int            `xml:"NewerNoncurrentVersions,omitempty"`
	// contains filtered or unexported fields
}

NoncurrentVersionExpiration - an action for lifecycle configuration rule.

func (NoncurrentVersionExpiration) IsDaysNull

func (n NoncurrentVersionExpiration) IsDaysNull() bool

IsDaysNull returns true if days field is null

func (NoncurrentVersionExpiration) IsNull

func (n NoncurrentVersionExpiration) IsNull() bool

IsNull returns if both NoncurrentDays and NoncurrentVersions are empty

func (NoncurrentVersionExpiration) MarshalXML

func (n NoncurrentVersionExpiration) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML if non-current days not set to non zero value

func (*NoncurrentVersionExpiration) UnmarshalXML

func (n *NoncurrentVersionExpiration) UnmarshalXML(d *xml.Decoder, startElement xml.StartElement) error

UnmarshalXML decodes NoncurrentVersionExpiration

func (NoncurrentVersionExpiration) Validate

func (n NoncurrentVersionExpiration) Validate() error

Validate returns an error with wrong value

type NoncurrentVersionTransition

type NoncurrentVersionTransition struct {
	NoncurrentDays TransitionDays `xml:"NoncurrentDays"`
	StorageClass   string         `xml:"StorageClass"`
	// contains filtered or unexported fields
}

NoncurrentVersionTransition - an action for lifecycle configuration rule.

func (NoncurrentVersionTransition) IsNull

func (n NoncurrentVersionTransition) IsNull() bool

IsNull returns true if NoncurrentTransition doesn't refer to any storage-class. Note: It supports immediate transition, i.e zero noncurrent days.

func (NoncurrentVersionTransition) MarshalXML

func (n NoncurrentVersionTransition) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML is extended to leave out <NoncurrentVersionTransition></NoncurrentVersionTransition> tags

func (NoncurrentVersionTransition) NextDue

NextDue returns upcoming NoncurrentVersionTransition date for obj if applicable, returns false otherwise.

func (*NoncurrentVersionTransition) UnmarshalXML

func (n *NoncurrentVersionTransition) UnmarshalXML(d *xml.Decoder, startElement xml.StartElement) error

UnmarshalXML decodes NoncurrentVersionExpiration

func (NoncurrentVersionTransition) Validate

func (n NoncurrentVersionTransition) Validate() error

Validate returns an error with wrong value

type ObjectOpts

type ObjectOpts struct {
	Name             string
	UserTags         string
	ModTime          time.Time
	VersionID        string
	IsLatest         bool
	DeleteMarker     bool
	NumVersions      int
	SuccessorModTime time.Time
	TransitionStatus string
	RestoreOngoing   bool
	RestoreExpires   time.Time
}

ObjectOpts provides information to deduce the lifecycle actions which can be triggered on the resultant object.

func (ObjectOpts) ExpiredObjectDeleteMarker

func (o ObjectOpts) ExpiredObjectDeleteMarker() bool

ExpiredObjectDeleteMarker returns true if an object version referred to by o is the only version remaining and is a delete marker. It returns false otherwise.

type Prefix

type Prefix struct {
	Unused struct{} // Needed for GOB compatibility
	// contains filtered or unexported fields
}

Prefix holds the prefix xml tag in <Rule> and <Filter>

func (Prefix) MarshalXML

func (p Prefix) MarshalXML(e *xml.Encoder, startElement xml.StartElement) error

MarshalXML - decodes XML data.

func (Prefix) String

func (p Prefix) String() string

String returns the prefix string

func (*Prefix) UnmarshalXML

func (p *Prefix) UnmarshalXML(d *xml.Decoder, start xml.StartElement) (err error)

UnmarshalXML - decodes XML data.

type Rule

type Rule struct {
	XMLName    xml.Name   `xml:"Rule"`
	ID         string     `xml:"ID,omitempty"`
	Status     Status     `xml:"Status"`
	Filter     Filter     `xml:"Filter,omitempty"`
	Prefix     Prefix     `xml:"Prefix,omitempty"`
	Expiration Expiration `xml:"Expiration,omitempty"`
	Transition Transition `xml:"Transition,omitempty"`
	// FIXME: add a type to catch unsupported AbortIncompleteMultipartUpload AbortIncompleteMultipartUpload `xml:"AbortIncompleteMultipartUpload,omitempty"`
	NoncurrentVersionExpiration NoncurrentVersionExpiration `xml:"NoncurrentVersionExpiration,omitempty"`
	NoncurrentVersionTransition NoncurrentVersionTransition `xml:"NoncurrentVersionTransition,omitempty"`
}

Rule - a rule for lifecycle configuration.

func (Rule) GetPrefix

func (r Rule) GetPrefix() string

GetPrefix - a rule can either have prefix under <rule></rule>, <filter></filter> or under <filter><and></and></filter>. This method returns the prefix from the location where it is available.

func (Rule) Tags

func (r Rule) Tags() string

Tags - a rule can either have tag under <filter></filter> or under <filter><and></and></filter>. This method returns all the tags from the rule in the format tag1=value1&tag2=value2

func (Rule) Validate

func (r Rule) Validate() error

Validate - validates the rule element

type Status

type Status string

Status represents lifecycle configuration status

const (
	Enabled  Status = "Enabled"
	Disabled Status = "Disabled"
)

Supported status types

type Tag

type Tag struct {
	XMLName xml.Name `xml:"Tag"`
	Key     string   `xml:"Key,omitempty"`
	Value   string   `xml:"Value,omitempty"`
}

Tag - a tag for a lifecycle configuration Rule filter.

func (Tag) IsEmpty

func (tag Tag) IsEmpty() bool

IsEmpty returns whether this tag is empty or not.

func (Tag) String

func (tag Tag) String() string

func (*Tag) UnmarshalXML

func (tag *Tag) UnmarshalXML(d *xml.Decoder, start xml.StartElement) (err error)

UnmarshalXML - decodes XML data.

func (Tag) Validate

func (tag Tag) Validate() error

Validate checks this tag.

type Transition

type Transition struct {
	XMLName      xml.Name       `xml:"Transition"`
	Days         TransitionDays `xml:"Days,omitempty"`
	Date         TransitionDate `xml:"Date,omitempty"`
	StorageClass string         `xml:"StorageClass,omitempty"`
	// contains filtered or unexported fields
}

Transition - transition actions for a rule in lifecycle configuration.

func (Transition) IsDateNull

func (t Transition) IsDateNull() bool

IsDateNull returns true if date field is null

func (Transition) IsEnabled

func (t Transition) IsEnabled() bool

IsEnabled returns if transition is enabled.

func (Transition) IsNull

func (t Transition) IsNull() bool

IsNull returns true if both date and days fields are null

func (Transition) MarshalXML

func (t Transition) MarshalXML(enc *xml.Encoder, start xml.StartElement) error

MarshalXML encodes transition field into an XML form.

func (Transition) NextDue

func (t Transition) NextDue(obj ObjectOpts) (time.Time, bool)

NextDue returns upcoming transition date for obj and true if applicable, returns false otherwise.

func (*Transition) UnmarshalXML

func (t *Transition) UnmarshalXML(d *xml.Decoder, startElement xml.StartElement) error

UnmarshalXML decodes transition field from the XML form.

func (Transition) Validate

func (t Transition) Validate() error

Validate - validates the "Transition" element

type TransitionDate

type TransitionDate struct {
	time.Time
}

TransitionDate is a embedded type containing time.Time to unmarshal Date in Transition

func (TransitionDate) MarshalXML

func (tDate TransitionDate) MarshalXML(e *xml.Encoder, startElement xml.StartElement) error

MarshalXML encodes expiration date if it is non-zero and encodes empty string otherwise

func (*TransitionDate) UnmarshalXML

func (tDate *TransitionDate) UnmarshalXML(d *xml.Decoder, startElement xml.StartElement) error

UnmarshalXML parses date from Transition and validates date format

type TransitionDays

type TransitionDays int

TransitionDays is a type alias to unmarshal Days in Transition

func (TransitionDays) MarshalXML

func (tDays TransitionDays) MarshalXML(e *xml.Encoder, startElement xml.StartElement) error

MarshalXML encodes number of days to expire if it is non-zero and encodes empty string otherwise

func (*TransitionDays) UnmarshalXML

func (tDays *TransitionDays) UnmarshalXML(d *xml.Decoder, startElement xml.StartElement) error

UnmarshalXML parses number of days from Transition and validates if >= 0

Jump to

Keyboard shortcuts

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