Documentation ¶
Index ¶
- Constants
- func Lcp(l []string) string
- func String(s string) *string
- type AbortIncompleteMultipartUpload
- type Action
- type And
- type DaysAfterInitiation
- type Expiration
- type ExpirationDate
- type ExpirationDays
- type Filter
- type Lifecycle
- func (lc Lifecycle) ComputeAction(objName string, objTags map[string]string, objStorageClass string, ...) (Action, string)
- func (lc Lifecycle) ComputeActionForAbortIncompleteMultipartUpload(objName string, objTags map[string]string, modTime time.Time, rules []Rule) Action
- func (lc Lifecycle) ComputeActionForNonCurrentVersion(objName string, objTags map[string]string, objStorageClass string, ...) (Action, string)
- func (lc Lifecycle) FilterRules() (ncvRules, cvRules, abortMultipartRules []Rule)
- func (lc Lifecycle) IsEmpty() bool
- func (lc Lifecycle) Validate() error
- type NoncurrentDays
- type NoncurrentVersionExpiration
- type NoncurrentVersionTransition
- type Rule
- type Status
- type Tag
- type Transition
- type TransitionDate
- type TransitionDays
Constants ¶
const ( DebugSpec = "@every 5s" // DebugTime for test: 1 day == 1 second DebugTime = time.Second )
const (
// Lifecycle config can't have more than 100 rules
RulesNumber = 100
)
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AbortIncompleteMultipartUpload ¶
type AbortIncompleteMultipartUpload struct { XMLName xml.Name `xml:"AbortIncompleteMultipartUpload,omitempty"` DaysAfterInitiation DaysAfterInitiation `xml:"DaysAfterInitiation,omitempty"` }
AbortIncompleteMultipartUpload - an action for lifecycle configuration rule.
func (AbortIncompleteMultipartUpload) IsDaysNull ¶
func (n AbortIncompleteMultipartUpload) IsDaysNull() bool
IsDaysNull returns true if days field is null
func (AbortIncompleteMultipartUpload) Validate ¶
func (n AbortIncompleteMultipartUpload) Validate() error
Validate - validates the "AbortIncompleteMultipartUpload" element
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 // For versioned buckets, this could be an added delete marker DeleteAction // DeleteVersionAction means the specific object version needs to be removed after evaluating lifecycle rules DeleteVersionAction //TransitionAction means the object storage class needs to be transitioned after evaluating lifecycle rules TransitionAction // AbortMultipartUploadAction means that abort incomplete multipart upload and delete all parts AbortMultipartUploadAction )
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 ¶
ContainsDuplicateTag - returns true if duplicate keys are present in And
type DaysAfterInitiation ¶
type DaysAfterInitiation int
DaysAfterInitiation is a type alias to unmarshal Days in AbortIncompleteMultipartUpload
func (*DaysAfterInitiation) MarshalXML ¶
func (aDays *DaysAfterInitiation) 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 (*DaysAfterInitiation) UnmarshalXML ¶
func (aDays *DaysAfterInitiation) UnmarshalXML(d *xml.Decoder, startElement xml.StartElement) error
UnmarshalXML parses number of days and validates if greater than zero
type Expiration ¶
type Expiration struct { XMLName xml.Name `xml:"Expiration"` Days ExpirationDays `xml:"Days,omitempty"` Date ExpirationDate `xml:"Date,omitempty"` ExpiredObjectDeleteMarker *bool `xml:"ExpiredObjectDeleteMarker,omitempty"` }
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) IsSetExpiredObjectDeleteMarker ¶
func (e Expiration) IsSetExpiredObjectDeleteMarker() bool
func (Expiration) Validate ¶
func (e Expiration) Validate() error
Validate - validates the "Expiration" element
type ExpirationDate ¶
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 Filter ¶
type Filter struct { XMLName xml.Name `xml:"Filter"` Prefix *string `xml:"Prefix,omitempty"` And *And `xml:"And,omitempty"` Tag *Tag `xml:"Tag,omitempty"` }
Filter - a filter for a lifecycle configuration Rule.
func (Filter) IsTagEmpty ¶
IsTagEmpty - return true if Filter tag is empty
type Lifecycle ¶
Lifecycle - Configuration for bucket lifecycle.
func ParseLifecycleConfig ¶
ParseLifecycleConfig - parses data in given reader to Lifecycle.
func (Lifecycle) ComputeAction ¶
func (lc Lifecycle) ComputeAction(objName string, objTags map[string]string, objStorageClass string, modTime time.Time, expiredObjectDeleteMarker bool, rules []Rule) (Action, string)
ComputeAction returns the action to perform by evaluating all lifecycle rules against the object name and its modification time.
The day LC run match match No
----> rule ----------->prefix X objectName -------->Tags X objTags -------> IS Expiration ? -------->Select Transition from Transitions
^ | not match | not match | Yes | save/replace storageClass |<------------------- | | | GLACIER replace STANDARD_IA |<--------------------------------------------------- | | | Delete object | |<--------------------------------------------------------------------------------------------------- FOR MANY LOOP RULES, IF NOT EXPIRATION, SHOULD BE TRANSITION(RETURN THE CHEAPEST CLASS)
func (Lifecycle) ComputeActionForAbortIncompleteMultipartUpload ¶
func (lc Lifecycle) ComputeActionForAbortIncompleteMultipartUpload(objName string, objTags map[string]string, modTime time.Time, rules []Rule) Action
ComputeAction for AbortIncompleteMultipartUpload
func (Lifecycle) ComputeActionForNonCurrentVersion ¶
func (lc Lifecycle) ComputeActionForNonCurrentVersion(objName string, objTags map[string]string, objStorageClass string, modTime time.Time, rules []Rule) (Action, string)
Just like ComputeAction
func (Lifecycle) FilterRules ¶
type NoncurrentDays ¶
type NoncurrentDays int
NoncurrentDays is a type alias to unmarshal Days in NoncurrentVersionExpiration or NoncurrentVersionTransition
func (*NoncurrentDays) MarshalXML ¶
func (nDays *NoncurrentDays) 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 (*NoncurrentDays) UnmarshalXML ¶
func (nDays *NoncurrentDays) UnmarshalXML(d *xml.Decoder, startElement xml.StartElement) error
UnmarshalXML parses number of days and validates if greater than zero
type NoncurrentVersionExpiration ¶
type NoncurrentVersionExpiration struct { XMLName xml.Name `xml:"NoncurrentVersionExpiration,omitempty"` NoncurrentDays NoncurrentDays `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) Validate ¶
func (n NoncurrentVersionExpiration) Validate() error
Validate - validates the "NoncurrentVersionExpiration" element
type NoncurrentVersionTransition ¶
type NoncurrentVersionTransition struct { XMLName xml.Name `xml:"NoncurrentVersionTransition,omitempty"` NoncurrentDays NoncurrentDays `xml:"NoncurrentDays,omitempty"` StorageClass string `xml:"StorageClass,omitempty"` }
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) IsStorageClassNull ¶
func (n NoncurrentVersionTransition) IsStorageClassNull() bool
IsDaysNull returns true if days field is null
func (NoncurrentVersionTransition) Validate ¶
func (n NoncurrentVersionTransition) Validate() error
Validate - validates the "NoncurrentVersionTransition" element
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"` Transitions []Transition `xml:"Transition,omitempty"` NoncurrentVersionExpiration *NoncurrentVersionExpiration `xml:"NoncurrentVersionExpiration,omitempty"` NoncurrentVersionTransitions []NoncurrentVersionTransition `xml:"NoncurrentVersionTransition,omitempty"` AbortIncompleteMultipartUpload *AbortIncompleteMultipartUpload `xml:"AbortIncompleteMultipartUpload,omitempty"` }
Rule - a rule for lifecycle configuration.
type Tag ¶
type Tag struct { XMLName xml.Name `xml:"Tag"` Key string `xml:"Key,omitempty"` Value string `xml:"Value,omitempty"` }
Tag - single 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"` }
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) IsStorageClassNull ¶
func (t Transition) IsStorageClassNull() bool
IsStorageClassNull returns true if Storage field is null
func (Transition) Validate ¶
func (t Transition) Validate() error
Validate - validates the "Expiration" element
type TransitionDate ¶
TransitionDate is a embedded type containing time.Time to unmarshal Date in TransitionDate
func (*TransitionDate) MarshalXML ¶
func (tDate *TransitionDate) MarshalXML(e *xml.Encoder, startElement xml.StartElement) error
MarshalXML encodes transition 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 Expiration
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 greater than zero