update bucket lifecycle
This commit is contained in:
@@ -20,8 +20,9 @@ type BucketLifecycleFilter struct {
|
|||||||
|
|
||||||
// BucketLifecycleExpiration is the param of BucketLifecycleRule
|
// BucketLifecycleExpiration is the param of BucketLifecycleRule
|
||||||
type BucketLifecycleExpiration struct {
|
type BucketLifecycleExpiration struct {
|
||||||
Date string `xml:"Date,omitempty"`
|
Date string `xml:"Date,omitempty"`
|
||||||
Days int `xml:"Days,omitempty"`
|
Days int `xml:"Days,omitempty"`
|
||||||
|
ExpiredObjectDeleteMarker bool `xml:"ExpiredObjectDeleteMarker,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// BucketLifecycleTransition is the param of BucketLifecycleRule
|
// BucketLifecycleTransition is the param of BucketLifecycleRule
|
||||||
@@ -31,6 +32,11 @@ type BucketLifecycleTransition struct {
|
|||||||
StorageClass string
|
StorageClass string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type BucketLifecycleNoncurrentVersion struct {
|
||||||
|
NoncurrentDays int `xml:"NoncurrentDays,omitempty"`
|
||||||
|
StorageClass string `xml:"StorageClass,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
// BucketLifecycleAbortIncompleteMultipartUpload is the param of BucketLifecycleRule
|
// BucketLifecycleAbortIncompleteMultipartUpload is the param of BucketLifecycleRule
|
||||||
type BucketLifecycleAbortIncompleteMultipartUpload struct {
|
type BucketLifecycleAbortIncompleteMultipartUpload struct {
|
||||||
DaysAfterInitiation int `xml:"DaysAfterInitiation,omitempty"`
|
DaysAfterInitiation int `xml:"DaysAfterInitiation,omitempty"`
|
||||||
@@ -41,9 +47,11 @@ type BucketLifecycleRule struct {
|
|||||||
ID string `xml:"ID,omitempty"`
|
ID string `xml:"ID,omitempty"`
|
||||||
Status string
|
Status string
|
||||||
Filter *BucketLifecycleFilter `xml:"Filter,omitempty"`
|
Filter *BucketLifecycleFilter `xml:"Filter,omitempty"`
|
||||||
Transition *BucketLifecycleTransition `xml:"Transition,omitempty"`
|
Transition []BucketLifecycleTransition `xml:"Transition,omitempty"`
|
||||||
Expiration *BucketLifecycleExpiration `xml:"Expiration,omitempty"`
|
Expiration *BucketLifecycleExpiration `xml:"Expiration,omitempty"`
|
||||||
AbortIncompleteMultipartUpload *BucketLifecycleAbortIncompleteMultipartUpload `xml:"AbortIncompleteMultipartUpload,omitempty"`
|
AbortIncompleteMultipartUpload *BucketLifecycleAbortIncompleteMultipartUpload `xml:"AbortIncompleteMultipartUpload,omitempty"`
|
||||||
|
NoncurrentVersionTransition []BucketLifecycleNoncurrentVersion `xml:"NoncurrentVersionTransition,omitempty"`
|
||||||
|
NoncurrentVersionExpiration *BucketLifecycleNoncurrentVersion `xml:"NoncurrentVersionExpiration,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// BucketGetLifecycleResult is the result of BucketGetLifecycle
|
// BucketGetLifecycleResult is the result of BucketGetLifecycle
|
||||||
|
|||||||
@@ -36,6 +36,20 @@ func TestBucketService_GetLifecycle(t *testing.T) {
|
|||||||
<Days>10</Days>
|
<Days>10</Days>
|
||||||
<StorageClass>Standard</StorageClass>
|
<StorageClass>Standard</StorageClass>
|
||||||
</Transition>
|
</Transition>
|
||||||
|
<Expiration>
|
||||||
|
<Days>10</Days>
|
||||||
|
</Expiration>
|
||||||
|
<NoncurrentVersionTransition>
|
||||||
|
<NoncurrentDays>90</NoncurrentDays>
|
||||||
|
<StorageClass>ARCHIVE</StorageClass>
|
||||||
|
</NoncurrentVersionTransition>
|
||||||
|
<NoncurrentVersionTransition>
|
||||||
|
<NoncurrentDays>180</NoncurrentDays>
|
||||||
|
<StorageClass>DEEP_ARCHIVE</StorageClass>
|
||||||
|
</NoncurrentVersionTransition>
|
||||||
|
<NoncurrentVersionExpiration>
|
||||||
|
<NoncurrentDays>360</NoncurrentDays>
|
||||||
|
</NoncurrentVersionExpiration>
|
||||||
</Rule>
|
</Rule>
|
||||||
<Rule>
|
<Rule>
|
||||||
<ID>123422</ID>
|
<ID>123422</ID>
|
||||||
@@ -68,8 +82,24 @@ func TestBucketService_GetLifecycle(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Status: "Enabled",
|
Status: "Enabled",
|
||||||
Transition: &BucketLifecycleTransition{Days: 10, StorageClass: "Standard"},
|
Transition: []BucketLifecycleTransition{
|
||||||
|
{Days: 10, StorageClass: "Standard"},
|
||||||
|
},
|
||||||
|
Expiration: &BucketLifecycleExpiration{Days: 10},
|
||||||
|
NoncurrentVersionExpiration: &BucketLifecycleNoncurrentVersion{
|
||||||
|
NoncurrentDays: 360,
|
||||||
|
},
|
||||||
|
NoncurrentVersionTransition: []BucketLifecycleNoncurrentVersion{
|
||||||
|
{
|
||||||
|
NoncurrentDays: 90,
|
||||||
|
StorageClass: "ARCHIVE",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
NoncurrentDays: 180,
|
||||||
|
StorageClass: "DEEP_ARCHIVE",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ID: "123422",
|
ID: "123422",
|
||||||
@@ -92,10 +122,12 @@ func TestBucketService_PutLifecycle(t *testing.T) {
|
|||||||
opt := &BucketPutLifecycleOptions{
|
opt := &BucketPutLifecycleOptions{
|
||||||
Rules: []BucketLifecycleRule{
|
Rules: []BucketLifecycleRule{
|
||||||
{
|
{
|
||||||
ID: "1234",
|
ID: "1234",
|
||||||
Filter: &BucketLifecycleFilter{Prefix: "test"},
|
Filter: &BucketLifecycleFilter{Prefix: "test"},
|
||||||
Status: "Enabled",
|
Status: "Enabled",
|
||||||
Transition: &BucketLifecycleTransition{Days: 10, StorageClass: "Standard"},
|
Transition: []BucketLifecycleTransition{
|
||||||
|
{Days: 10, StorageClass: "Standard"},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ID: "123422",
|
ID: "123422",
|
||||||
|
|||||||
@@ -355,9 +355,11 @@ func (s *CosTestSuite) TestPutGetDeleteLifeCycle() {
|
|||||||
ID: "1234",
|
ID: "1234",
|
||||||
Filter: &cos.BucketLifecycleFilter{Prefix: "test"},
|
Filter: &cos.BucketLifecycleFilter{Prefix: "test"},
|
||||||
Status: "Enabled",
|
Status: "Enabled",
|
||||||
Transition: &cos.BucketLifecycleTransition{
|
Transition: []cos.BucketLifecycleTransition{
|
||||||
Days: 10,
|
{
|
||||||
StorageClass: "Standard",
|
Days: 10,
|
||||||
|
StorageClass: "Standard",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -53,7 +53,6 @@ func main() {
|
|||||||
|
|
||||||
opt := &cos.BucketPutAccelerateOptions{
|
opt := &cos.BucketPutAccelerateOptions{
|
||||||
Status: "Enabled",
|
Status: "Enabled",
|
||||||
Type: "COS",
|
|
||||||
}
|
}
|
||||||
_, err = c.Bucket.PutAccelerate(context.Background(), opt)
|
_, err = c.Bucket.PutAccelerate(context.Background(), opt)
|
||||||
log_status(err)
|
log_status(err)
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
u, _ := url.Parse("https://test-1253846586.cos.ap-guangzhou.myqcloud.com")
|
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com")
|
||||||
b := &cos.BaseURL{
|
b := &cos.BaseURL{
|
||||||
BucketURL: u,
|
BucketURL: u,
|
||||||
}
|
}
|
||||||
@@ -35,6 +35,13 @@ func main() {
|
|||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
for _, r := range v.Rules {
|
for _, r := range v.Rules {
|
||||||
fmt.Printf("%s, %s\n", r.Filter.Prefix, r.Status)
|
fmt.Printf("%+v\n", r.ID)
|
||||||
|
fmt.Printf("%+v\n", r.Filter)
|
||||||
|
fmt.Printf("%+v\n", r.Status)
|
||||||
|
fmt.Printf("%+v\n", r.Transition)
|
||||||
|
fmt.Printf("%+v\n", r.Expiration)
|
||||||
|
fmt.Printf("%+v\n", r.NoncurrentVersionExpiration)
|
||||||
|
fmt.Printf("%+v\n", r.NoncurrentVersionTransition)
|
||||||
|
fmt.Printf("%+v\n", r.AbortIncompleteMultipartUpload)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
u, _ := url.Parse("https://testhuanan-1253846586.cos.ap-guangzhou.myqcloud.com")
|
u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com")
|
||||||
b := &cos.BaseURL{
|
b := &cos.BaseURL{
|
||||||
BucketURL: u,
|
BucketURL: u,
|
||||||
}
|
}
|
||||||
@@ -35,18 +35,34 @@ func main() {
|
|||||||
ID: "1234",
|
ID: "1234",
|
||||||
Filter: &cos.BucketLifecycleFilter{Prefix: "test"},
|
Filter: &cos.BucketLifecycleFilter{Prefix: "test"},
|
||||||
Status: "Enabled",
|
Status: "Enabled",
|
||||||
Transition: &cos.BucketLifecycleTransition{
|
Transition: []cos.BucketLifecycleTransition{
|
||||||
Days: 10,
|
{
|
||||||
StorageClass: "Standard",
|
Days: 30,
|
||||||
|
StorageClass: "STANDARD_IA",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Days: 90,
|
||||||
|
StorageClass: "ARCHIVE",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
|
||||||
{
|
|
||||||
ID: "123422",
|
|
||||||
// If used for all objecs set Prefix:""
|
|
||||||
Filter: &cos.BucketLifecycleFilter{Prefix: "gg"},
|
|
||||||
Status: "Disabled",
|
|
||||||
Expiration: &cos.BucketLifecycleExpiration{
|
Expiration: &cos.BucketLifecycleExpiration{
|
||||||
Days: 10,
|
Days: 360,
|
||||||
|
},
|
||||||
|
NoncurrentVersionExpiration: &cos.BucketLifecycleNoncurrentVersion{
|
||||||
|
NoncurrentDays: 360,
|
||||||
|
},
|
||||||
|
NoncurrentVersionTransition: []cos.BucketLifecycleNoncurrentVersion{
|
||||||
|
{
|
||||||
|
NoncurrentDays: 90,
|
||||||
|
StorageClass: "ARCHIVE",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
NoncurrentDays: 180,
|
||||||
|
StorageClass: "DEEP_ARCHIVE",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
AbortIncompleteMultipartUpload: &cos.BucketLifecycleAbortIncompleteMultipartUpload{
|
||||||
|
DaysAfterInitiation: 90,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -401,7 +401,6 @@ func (osr *ObjectSelectResponse) fixedLengthRead(p []byte, read_timeout int64) (
|
|||||||
timeout := time.Duration(read_timeout)
|
timeout := time.Duration(read_timeout)
|
||||||
r := osr.Body
|
r := osr.Body
|
||||||
ch := make(chan chanReadIO, 1)
|
ch := make(chan chanReadIO, 1)
|
||||||
defer close(ch)
|
|
||||||
go func(p []byte) {
|
go func(p []byte) {
|
||||||
var needLen int
|
var needLen int
|
||||||
readChan := chanReadIO{}
|
readChan := chanReadIO{}
|
||||||
@@ -412,6 +411,7 @@ func (osr *ObjectSelectResponse) fixedLengthRead(p []byte, read_timeout int64) (
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
readChan.err = err
|
readChan.err = err
|
||||||
ch <- readChan
|
ch <- readChan
|
||||||
|
close(ch)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -420,11 +420,12 @@ func (osr *ObjectSelectResponse) fixedLengthRead(p []byte, read_timeout int64) (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
ch <- readChan
|
ch <- readChan
|
||||||
|
close(ch)
|
||||||
}(p)
|
}(p)
|
||||||
|
|
||||||
select {
|
select {
|
||||||
case <-time.After(time.Second * timeout):
|
case <-time.After(time.Second * timeout):
|
||||||
return 0, fmt.Errorf("requestId: %s, readLen timeout, timeout is %d(second),need read:%d", "sr.Headers.Get(HTTPHeaderOssRequestID)", timeout, len(p))
|
return 0, fmt.Errorf("requestId: %s, readLen timeout, timeout is %d(second),need read:%d", osr.Headers.Get("x-cos-request-id"), timeout, len(p))
|
||||||
case result := <-ch:
|
case result := <-ch:
|
||||||
return result.readLen, result.err
|
return result.readLen, result.err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user