Skip to content

Commit 65c35ab

Browse files
authored
Merge pull request #156 from jayzhenghan/feature_intelligenttiering
Feature intelligenttiering
2 parents 082fe70 + a9d7015 commit 65c35ab

File tree

4 files changed

+104
-7
lines changed

4 files changed

+104
-7
lines changed

demo/demo.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717

1818
# 设置用户属性, 包括secret_id, secret_key, region
1919
# appid已在配置中移除,请在参数Bucket中带上appid。Bucket由bucketname-appid组成
20-
secret_id = 'AKID15IsskiBQACGbAo6WhgcQbVls7HmuG00' # 替换为用户的secret_id
21-
secret_key = 'csivKvxxrMvSvQpMWHuIz12pThQQlWRW' # 替换为用户的secret_key
20+
secret_id = 'secret_id' # 替换为用户的secret_id
21+
secret_key = 'secret_key' # 替换为用户的secret_key
2222
region = 'ap-beijing' # 替换为用户的region
2323
token = None # 使用临时密钥需要传入Token,默认为空,可不填
2424
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象

qcloud_cos/cos_client.py

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2861,6 +2861,7 @@ def delete_bucket_referer(self, Bucket, **kwargs):
28612861
Bucket='bucket'
28622862
)
28632863
"""
2864+
28642865
xml_config = ''
28652866
headers = mapped(kwargs)
28662867
headers['Content-MD5'] = get_md5(xml_config)
@@ -2877,6 +2878,78 @@ def delete_bucket_referer(self, Bucket, **kwargs):
28772878
params=params)
28782879
return None
28792880

2881+
def put_bucket_intelligenttiering(self, Bucket, IntelligentTieringConfiguration=None, **kwargs):
2882+
"""设置存储桶智能分层配置
2883+
2884+
:param Bucket(string): 存储桶名称.
2885+
:param IntelligentTieringConfiguration(dict): 只能分层配置
2886+
:param kwargs(dict): 设置请求headers.
2887+
:return: None.
2888+
2889+
.. code-block:: python
2890+
2891+
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
2892+
client = CosS3Client(config)
2893+
2894+
intelligent_tiering_conf = {
2895+
'Status': 'Enable',
2896+
'Transition': {
2897+
'Days': '30|60|90',
2898+
'RequestFrequent': '1'
2899+
}
2900+
}
2901+
client.put_bucket_intelligenttiering(Bucket="bucket", IntelligentTieringConfiguration=intelligent_tiering_conf)
2902+
"""
2903+
2904+
if IntelligentTieringConfiguration is None:
2905+
IntelligentTieringConfiguration = {}
2906+
xml_config = format_xml(data=IntelligentTieringConfiguration, root='IntelligentTieringConfiguration')
2907+
headers = mapped(kwargs)
2908+
headers['Content-Type'] = 'application/xml'
2909+
params = {'intelligenttiering': ''}
2910+
url = self._conf.uri(bucket=Bucket)
2911+
logger.info("put bucket intelligenttiering, url=:{url} ,headers=:{headers}".format(
2912+
url=url,
2913+
headers=headers))
2914+
rt = self.send_request(
2915+
method='PUT',
2916+
url=url,
2917+
bucket=Bucket,
2918+
data=xml_config,
2919+
auth=CosS3Auth(self._conf, params=params),
2920+
headers=headers,
2921+
params=params)
2922+
return None
2923+
2924+
def get_bucket_intelligenttiering(self, Bucket, **kwargs):
2925+
"""获取存储桶智能分层配置
2926+
:param Bucket(string): 存储桶名称.
2927+
:param IntelligentTieringConfiguration(dict): 只能分层配置
2928+
:param kwargs(dict): 设置请求headers.
2929+
:return(dict): 智能分层配置.
2930+
2931+
.. code-block:: python
2932+
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
2933+
client = CosS3Client(config)
2934+
client.get_bucket_intelligenttiering(Bucket='bucket')
2935+
"""
2936+
2937+
headers = mapped(kwargs)
2938+
params = {'intelligenttiering': ''}
2939+
url = self._conf.uri(bucket=Bucket)
2940+
logger.info("get bucket intelligenttiering, url=:{url} ,headers=:{headers}".format(
2941+
url=url,
2942+
headers=headers))
2943+
rt = self.send_request(
2944+
method='GET',
2945+
url=url,
2946+
bucket=Bucket,
2947+
auth=CosS3Auth(self._conf, params=params),
2948+
headers=headers,
2949+
params=params)
2950+
data = xml_to_dict(rt.content)
2951+
return data
2952+
28802953
# service interface begin
28812954
def list_buckets(self, **kwargs):
28822955
"""列出所有bucket

qcloud_cos/demo.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717

1818
# 设置用户属性, 包括secret_id, secret_key, region
1919
# appid已在配置中移除,请在参数Bucket中带上appid。Bucket由bucketname-appid组成
20-
secret_id = 'AKID15IsskiBQACGbAo6WhgcQbVls7HmuG00' # 替换为用户的secret_id
21-
secret_key = 'csivKvxxrMvSvQpMWHuIz12pThQQlWRW' # 替换为用户的secret_key
20+
secret_id = "secret_id" # 替换为用户的secret_id
21+
secret_key = "secret_key" # 替换为用户的secret_key
2222
region = 'ap-beijing-1' # 替换为用户的region
2323
token = None # 使用临时密钥需要传入Token,默认为空,可不填
2424
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象

ut/test.py

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1217,6 +1217,7 @@ def _test_get_object_sensitive_content_recognition():
12171217
print(response)
12181218
assert response
12191219

1220+
12201221
def test_download_file():
12211222
"""测试断点续传下载接口"""
12221223
#测试普通下载
@@ -1265,6 +1266,26 @@ def test_download_file():
12651266
if os.path.exists(file_name):
12661267
os.remove(file_name)
12671268

1269+
1270+
def test_put_get_bucket_intelligenttiering():
1271+
"""测试设置获取智能分层"""
1272+
intelligent_tiering_conf = {
1273+
'Status': 'Enable',
1274+
'Transition': {
1275+
'Days': '30',
1276+
'RequestFrequent': '1'
1277+
}
1278+
}
1279+
response = client.put_bucket_intelligenttiering(
1280+
Bucket=test_bucket,
1281+
IntelligentTieringConfiguration=intelligent_tiering_conf
1282+
)
1283+
time.sleep(2)
1284+
response = client.get_bucket_intelligenttiering(
1285+
Bucket=test_bucket,
1286+
)
1287+
1288+
12681289
def test_bucket_encryption():
12691290
"""测试存储桶默认加密配置"""
12701291
# 测试设置存储桶的默认加密配置
@@ -1287,6 +1308,7 @@ def test_bucket_encryption():
12871308
# 删除存储桶默认加密配置
12881309
client.delete_bucket_encryption(test_bucket)
12891310

1311+
12901312
def test_aes_client():
12911313
"""测试aes加密客户端的上传下载操作"""
12921314
content = '123456' * 1024 + '1'
@@ -1333,7 +1355,7 @@ def test_aes_client():
13331355
assert local_file_md5 and content_md5 and local_file_md5 == content_md5
13341356
if os.path.exists('test_multi_upload_local'):
13351357
os.remove('test_multi_upload_local')
1336-
1358+
13371359
client_for_rsa.delete_object(test_bucket, 'test_multi_upload')
13381360

13391361
def test_rsa_client():
@@ -1362,7 +1384,7 @@ def test_rsa_client():
13621384
assert local_file_md5 and content_md5 and local_file_md5 == content_md5
13631385
if os.path.exists('test_for_rsa_local'):
13641386
os.remove('test_for_rsa_local')
1365-
1387+
13661388
client_for_rsa.delete_object(test_bucket, 'test_for_rsa')
13671389

13681390
content = '1' * 1024 * 1024
@@ -1382,7 +1404,7 @@ def test_rsa_client():
13821404
assert local_file_md5 and content_md5 and local_file_md5 == content_md5
13831405
if os.path.exists('test_multi_upload_local'):
13841406
os.remove('test_multi_upload_local')
1385-
1407+
13861408
client_for_rsa.delete_object(test_bucket, 'test_multi_upload')
13871409

13881410

@@ -1511,6 +1533,7 @@ def test_live_channel():
15111533
response = client.delete_live_channel(Bucket=test_bucket, ChannelName=channel_name)
15121534
assert (response)
15131535

1536+
15141537
if __name__ == "__main__":
15151538
setUp()
15161539
"""
@@ -1539,6 +1562,7 @@ def test_live_channel():
15391562
_test_get_object_sensitive_content_recognition()
15401563
test_live_channel()
15411564
test_download_file()
1565+
test_put_get_bucket_intelligenttiering()
15421566
test_aes_client()
15431567
test_rsa_client()
15441568
"""

0 commit comments

Comments
 (0)