lifecycle

package
v0.0.0-...-1ed3a2a Latest Latest
Warning

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

Go to latest
Published: Dec 4, 2020 License: Apache-2.0 Imports: 9 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 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 evaluting 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
)

func (Action) String

func (i Action) String() string

type And

type And struct {
	XMLName xml.Name `xml:"And"`
	Prefix  string   `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 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  string
	And     And
	Tag     Tag
	// contains filtered or unexported fields
}

Filter - a filter for a lifecycle configuration Rule.

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(tags []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) 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 (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) FilterActionableRules

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

FilterActionableRules returns the rules actions that need to be executed after evaluating prefix/tag filtering

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

func (lc Lifecycle) PredictExpiryTime(obj ObjectOpts) (string, time.Time)

PredictExpiryTime returns the expiry date/time of a given object after evaluting the current lifecycle document.

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"`
}

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

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

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

type NoncurrentVersionTransition

type NoncurrentVersionTransition struct {
	NoncurrentDays ExpirationDays `xml:"NoncurrentDays"`
	StorageClass   string         `xml:"StorageClass"`
}

NoncurrentVersionTransition - an action for lifecycle configuration rule.

func (NoncurrentVersionTransition) IsDaysNull

func (n NoncurrentVersionTransition) IsDaysNull() bool

IsDaysNull returns true if days field is null

func (NoncurrentVersionTransition) MarshalXML

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

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

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.

type Rule

type Rule struct {
	XMLName    xml.Name   `xml:"Rule"`
	ID         string     `xml:"ID,omitempty"`
	Status     Status     `xml:"Status"`
	Filter     Filter     `xml:"Filter,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) Prefix

func (r Rule) Prefix() string

Prefix - a rule can either have prefix under <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) IsDaysNull

func (t Transition) IsDaysNull() bool

IsDaysNull returns true if days field is null

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) 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 "Expiration" 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