lifecycle

package
v0.0.0-...-fb0f190 Latest Latest
Warning

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

Go to latest
Published: Oct 26, 2022 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

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

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 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
	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"`
	// 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 {
	// contains filtered or unexported fields
}

ExpireDeleteMarker represents value of ExpiredObjectDeleteMarker field in Expiration XML element.

func (ExpireDeleteMarker) MarshalXML

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

MarshalXML encodes delete marker boolean into an XML form.

func (*ExpireDeleteMarker) UnmarshalXML

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

UnmarshalXML decodes delete marker boolean from the XML form.

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) ComputeAction

func (lc Lifecycle) ComputeAction(obj ObjectOpts) Action

ComputeAction returns the action to perform by evaluating all lifecycle rules against the object name and its modification time.

func (Lifecycle) Eval

func (lc Lifecycle) Eval(obj ObjectOpts, now time.Time) Event

Eval returns the lifecycle event applicable at now. If now is the zero value of time.Time, it returns the upcoming lifecycle event.

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, recursive bool) bool

HasActiveRules - returns whether policy has active rules for. Optionally a prefix can be supplied. If recursive is specified the function will also return true if any level below the prefix has active rules. If no prefix is specified recursive is effectively true.

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) (string, int, int)

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 {
	// 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