def test_copy_file(self): scs = SCSBucket(self.bucket_name) try: scs.put_bucket('public-read-write') except: self.fail('create bucket:%s is failed'%self.bucket_name) scs.putFile(self.object_key, self.local_file_name) canned_acl = 'public-read' #快捷ACL metadata = {} #自定义文件属性信息 metadata['author'] = 'copied' metadata['home'] = 'beijing' metadata['age'] = '189' mimetype = 'text/plain' scs.copy(source='/'+self.bucket_name+'/'+self.object_key, key=self.object_key+'_copied', acl=canned_acl, metadata=metadata, mimetype=mimetype) copied_file_aclInfo = scs.acl_info(self.object_key+'_copied') self.assertTrue(ACL.ACL_GROUP_ANONYMOUSE in copied_file_aclInfo['ACL'], 'The acl dose not contains GRPS000000ANONYMOUSE group') self.assertTrue(ACL.ACL_READ in copied_file_aclInfo['ACL'][ACL.ACL_GROUP_ANONYMOUSE], 'The acl GRPS000000ANONYMOUSE group hasn\'t read right') copied_file_info = scs.info(self.object_key+'_copied') #assert metadata self.assertEqual(metadata['author'], copied_file_info['metadata']['author'], 'The response metadata[\'author\'] is not match') self.assertEqual(metadata['home'], copied_file_info['metadata']['home'], 'The response metadata[\'home\'] is not match') self.assertEqual(metadata['age'], copied_file_info['metadata']['age'], 'The response metadata[\'age\'] is not match') #assert content-type self.assertEqual(mimetype, copied_file_info['headers']['content-type'], 'The response content-type is not match')
def copy_file(): s = SCSBucket('asdasdasdasd') """ 注意: source 必须从bucket开始,如:'/cloud0/aaa.txt' """ s.copy('/asdasdasdasd/aaaa.txt', 'aaaa22111.txt')
def rename(self, com, time_out): old_cloud_name = "haoc/nodes/%s" % com.old_name new_cloud_name = "haoc/nodes/%s" % com.new_name bucket = SCSBucket(BUCKET_NAME, timeout=time_out) try: if new_cloud_name[-1] == '/': bucket.copy(source="/%s/%s" % (BUCKET_NAME, old_cloud_name), key=new_cloud_name) del bucket[old_cloud_name] else: shall_do = True if self.from_agenda: try: bucket["%s.nod" % new_cloud_name] except sinastorage.bucket.KeyNotFound: pass else: info = bucket.info("%s.nod" % new_cloud_name) ct = float(info.get('metadata').get('lmt')) if com.op_time < ct: shall_do = False if shall_do: bucket.copy(source="/%s/%s.nod" % (BUCKET_NAME, old_cloud_name), key="%s.nod" % new_cloud_name) del bucket["%s.nod" % old_cloud_name] bucket.copy(source="/%s/%s.hlp" % (BUCKET_NAME, old_cloud_name), key="%s.hlp" % new_cloud_name) del bucket["%s.hlp" % old_cloud_name] except sinastorage.bucket.KeyNotFound: pass