Skip to content

Commit

Permalink
some code fix
Browse files Browse the repository at this point in the history
  • Loading branch information
wujinhu committed Nov 14, 2017
1 parent 7deda66 commit 7b4f64d
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 26 deletions.
12 changes: 8 additions & 4 deletions examples/bucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,16 @@
print('object count: ' + str(bucket_stat.object_count))
print('multi part upload count: ' + str(bucket_stat.multi_part_upload_count))

# set bucket lifecycle.
rule = oss2.models.LifecycleRule('a', '中文前缀/', status=oss2.models.LifecycleRule.DISABLED,
# set bucket lifecycle. Object's will expire after 357 days since its last modified time
rule = oss2.models.LifecycleRule('lc_for_chinese_prefix', '中文前缀/', status=oss2.models.LifecycleRule.ENABLED,
expiration=oss2.models.LifecycleExpiration(days=357))

# abort multipart upload after 356 days
rule.abort_multipart_upload = oss2.models.AbortMultipartUpload(days=356)
# transition to IA
rule.storage_transitions = [oss2.models.StorageTransition(days=356, storage_class=oss2.BUCKET_STORAGE_CLASS_IA)]
# transition to IA after 180 days since object's last modified time
rule.storage_transitions = [oss2.models.StorageTransition(days=180, storage_class=oss2.BUCKET_STORAGE_CLASS_IA)]
# transition to ARCHIVE after 356 days since object's last modified time
rule.storage_transitions.append(oss2.models.StorageTransition(days=356, storage_class=oss2.BUCKET_STORAGE_CLASS_ARCHIVE))

lifecycle = oss2.models.BucketLifecycle([rule])
bucket.put_bucket_lifecycle(lifecycle)
Expand Down
6 changes: 5 additions & 1 deletion oss2/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -595,7 +595,11 @@ def delete_object(self, key):

def restore_object(self, key):
"""restore an object
return 202 if first time invoke restore_object for this key
return 409 if restore still in progress
return 200 if restore process has finished and will extend one day for download(max 7 days)
return 404 if object does not exist
return 400 if not restore Archive object
:param str key: object name
:return: :class:`RequestResult <oss2.models.RequestResult>`
"""
Expand Down
5 changes: 5 additions & 0 deletions oss2/exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,11 @@ class MalformedXml(ServerError):
code = 'MalformedXML'


class InvalidRequest(ServerError):
status = 400
code = 'InvalidRequest'


class InvalidArgument(ServerError):
status = 400
code = 'InvalidArgument'
Expand Down
76 changes: 55 additions & 21 deletions tests/test_bucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ def test_lifecycle_days(self):

for prefix in ['中文前缀+/', '', u'中文前缀+/']:
rule = LifecycleRule(random_string(10), prefix,
status=LifecycleRule.DISABLED,
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(days=356))
lifecycle = BucketLifecycle([rule])

Expand All @@ -181,8 +181,8 @@ def test_lifecycle_date(self):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle

rule = LifecycleRule(random_string(10), '中文前缀/',
status=LifecycleRule.DISABLED,
expiration=LifecycleExpiration(date=datetime.date(2100, 12, 25)))
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(date=datetime.date(2016, 12, 25)))
lifecycle = BucketLifecycle([rule])

self.bucket.put_bucket_lifecycle(lifecycle)
Expand All @@ -194,8 +194,8 @@ def test_lifecycle_created_before_date(self):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle

rule = LifecycleRule(random_string(10), '中文前缀/',
status=LifecycleRule.DISABLED,
expiration=LifecycleExpiration(created_before_date=datetime.date(2100, 12, 25)))
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(created_before_date=datetime.date(2016, 12, 25)))
lifecycle = BucketLifecycle([rule])

self.bucket.put_bucket_lifecycle(lifecycle)
Expand All @@ -207,8 +207,8 @@ def test_lifecycle_abort_multipart_upload_days(self):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle, AbortMultipartUpload

rule = LifecycleRule(random_string(10), '中文前缀/',
status=LifecycleRule.DISABLED,
expiration=LifecycleExpiration(created_before_date=datetime.date(2100, 12, 25)))
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(created_before_date=datetime.date(2016, 12, 25)))

rule.abort_multipart_upload = AbortMultipartUpload(days=356)

Expand All @@ -227,25 +227,38 @@ def test_lifecycle_abort_multipart_upload_date(self):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle, AbortMultipartUpload

rule = LifecycleRule(random_string(10), '中文前缀/',
status=LifecycleRule.DISABLED,
expiration=LifecycleExpiration(created_before_date=datetime.date(2100, 12, 25)))
rule.abort_multipart_upload = AbortMultipartUpload(created_before_date=datetime.date(2100, 12, 20))
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(created_before_date=datetime.date(2016, 12, 25)))
rule.abort_multipart_upload = AbortMultipartUpload(created_before_date=datetime.date(2016, 12, 20))

lifecycle = BucketLifecycle([rule])

self.bucket.put_bucket_lifecycle(lifecycle)

result = self.bucket.get_bucket_lifecycle()
self.assertEqual(1, len(result.rules))
self.assertEqual(datetime.date(2100, 12, 20), result.rules[0].abort_multipart_upload.created_before_date)
self.assertEqual(datetime.date(2016, 12, 20), result.rules[0].abort_multipart_upload.created_before_date)

self.bucket.delete_bucket_lifecycle()

def test_lifecycle_storage_transitions_mixed(self):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle, StorageTransition

rule = LifecycleRule(random_string(10), '中文前缀/',
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(created_before_date=datetime.date(2016, 12, 25)))

rule.storage_transitions = [StorageTransition(days=356, storage_class=oss2.BUCKET_STORAGE_CLASS_IA)]

lifecycle = BucketLifecycle([rule])

self.assertRaises(oss2.exceptions.InvalidRequest, self.bucket.put_bucket_lifecycle, lifecycle)

def test_lifecycle_storage_transitions_days(self):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle, StorageTransition

rule = LifecycleRule(random_string(10), '中文前缀/',
status=LifecycleRule.DISABLED,
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(days=357))

rule.storage_transitions = [StorageTransition(days=356, storage_class=oss2.BUCKET_STORAGE_CLASS_IA)]
Expand All @@ -265,7 +278,7 @@ def test_lifecycle_storage_transitions_more_days(self):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle, StorageTransition

rule = LifecycleRule(random_string(10), '中文前缀/',
status=LifecycleRule.DISABLED,
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(days=357))

rule.storage_transitions = [StorageTransition(days=355, storage_class=oss2.BUCKET_STORAGE_CLASS_IA),
Expand All @@ -292,9 +305,9 @@ def test_lifecycle_storage_transitions_date(self):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle, StorageTransition

rule = LifecycleRule(random_string(10), '中文前缀/',
status=LifecycleRule.DISABLED,
expiration=LifecycleExpiration(created_before_date=datetime.date(2100, 12, 25)))
rule.storage_transitions = [StorageTransition(created_before_date=datetime.date(2100, 12, 20),
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(created_before_date=datetime.date(2016, 12, 25)))
rule.storage_transitions = [StorageTransition(created_before_date=datetime.date(2016, 12, 20),
storage_class=oss2.BUCKET_STORAGE_CLASS_IA)]

lifecycle = BucketLifecycle([rule])
Expand All @@ -304,25 +317,46 @@ def test_lifecycle_storage_transitions_date(self):
result = self.bucket.get_bucket_lifecycle()
self.assertEqual(1, len(result.rules))
self.assertEqual(1, len(result.rules[0].storage_transitions))
self.assertEqual(datetime.date(2100, 12, 20), result.rules[0].storage_transitions[0].created_before_date)
self.assertEqual(datetime.date(2016, 12, 20), result.rules[0].storage_transitions[0].created_before_date)

self.bucket.delete_bucket_lifecycle()

def test_lifecycle_all_without_object_expiration(self):
from oss2.models import LifecycleRule, BucketLifecycle, AbortMultipartUpload, StorageTransition

rule = LifecycleRule(random_string(10), '中文前缀/',
status=LifecycleRule.ENABLED)

rule.abort_multipart_upload = AbortMultipartUpload(days=356)
rule.storage_transitions = [StorageTransition(days=356, storage_class=oss2.BUCKET_STORAGE_CLASS_IA)]

lifecycle = BucketLifecycle([rule])

self.bucket.put_bucket_lifecycle(lifecycle)

result = self.bucket.get_bucket_lifecycle()
self.assertEqual(1, len(result.rules))
self.assertEqual(356, result.rules[0].abort_multipart_upload.days)
self.assertEqual(1, len(result.rules[0].storage_transitions))
self.assertEqual(356, result.rules[0].storage_transitions[0].days)

self.bucket.delete_bucket_lifecycle()

def test_lifecycle_all(self):
from oss2.models import LifecycleExpiration, LifecycleRule, BucketLifecycle, AbortMultipartUpload, StorageTransition

rule = LifecycleRule(random_string(10), '中文前缀/',
status=LifecycleRule.DISABLED,
status=LifecycleRule.ENABLED,
expiration=LifecycleExpiration(days=357))

self.assertRaises(oss2.exceptions.ClientError,
LifecycleExpiration, days=356, created_before_date=datetime.date(2100, 12, 25))
LifecycleExpiration, days=356, created_before_date=datetime.date(2016, 12, 25))

self.assertRaises(oss2.exceptions.ClientError,
AbortMultipartUpload, days=356, created_before_date=datetime.date(2100, 12, 25))
AbortMultipartUpload, days=356, created_before_date=datetime.date(2016, 12, 25))

self.assertRaises(oss2.exceptions.ClientError,
StorageTransition, days=356, created_before_date=datetime.date(2100, 12, 25))
StorageTransition, days=356, created_before_date=datetime.date(2016, 12, 25))

rule.abort_multipart_upload = AbortMultipartUpload(days=356)
rule.storage_transitions = [StorageTransition(days=356, storage_class=oss2.BUCKET_STORAGE_CLASS_IA)]
Expand Down

0 comments on commit 7b4f64d

Please sign in to comment.