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')
Exemplo n.º 2
0
def copy_file():
    s = SCSBucket('asdasdasdasd')
    """
        注意:
        source    必须从bucket开始,如:'/cloud0/aaa.txt'
    """
    s.copy('/asdasdasdasd/aaaa.txt', 'aaaa22111.txt')
Exemplo n.º 3
0
 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