def test_update_file_meta(self):
        scs = SCSBucket(self.bucket_name)
        try:
            scs.put_bucket('public-read-write')
        except:
            self.fail('create bucket:%s is failed'%self.bucket_name)
        content = u'this is a file content text!!'
        scs.put(self.object_key, content)
          
        canned_acl = 'public-read-write'                #快捷ACL
        metadata = {}                                   #自定义文件属性信息
        metadata['author'] = 'dage'
        metadata['home'] = 'tianjin'
        metadata['age'] = '18'
        mimetype = 'text/plain'
        scs.update_meta(self.object_key, metadata=metadata, acl=canned_acl, mimetype=mimetype)
      
        file_info = scs.info(self.object_key)
        #assert metadata
        self.assertEqual(metadata['author'], file_info['metadata']['author'], 'The response metadata[\'author\'] is not match')
        self.assertEqual(metadata['home'], file_info['metadata']['home'], 'The response metadata[\'home\'] is not match')
        self.assertEqual(metadata['age'], file_info['metadata']['age'], 'The response metadata[\'age\'] is not match')
        #assert content-type
#         print file_info['headers']
#TODO:服务器问题         self.assertEqual(mimetype, file_info['headers']['content-type'], 'The response content-type is not match')
        #acl
        file_aclInfo = scs.acl_info(self.object_key)
        self.assertTrue(ACL.ACL_GROUP_ANONYMOUSE in file_aclInfo['ACL'], 'The acl dose not contains GRPS000000ANONYMOUSE group')
        self.assertTrue(ACL.ACL_READ in file_aclInfo['ACL'][ACL.ACL_GROUP_ANONYMOUSE], 'The acl GRPS000000ANONYMOUSE group hasn\'t read right')
        self.assertTrue(ACL.ACL_WRITE in file_aclInfo['ACL'][ACL.ACL_GROUP_ANONYMOUSE], 'The acl GRPS000000ANONYMOUSE group hasn\'t write right')
Exemplo n.º 2
0
    def create(self, com):
        if com.path[-1] != '/':
            self.new_item_start.emit(os.path.basename(com.path))
        cloud_path = "haoc/nodes/%s" % com.path
        bucket = SCSBucket(BUCKET_NAME)
        local_path = "%s/data/%s/nodes/%s" % (
            HaocUtils.get_root_path(), HaocUtils.Config.get_ak(), com.path)
        if cloud_path[-1] == '/':
            bucket.put(cloud_path, '')
        else:
            shall_upload = True
            if not os.path.exists("%s.nod" % local_path):
                print "File not found:%s" % local_path
                return
            lt = int(os.path.getmtime("%s.nod" % local_path))

            if self.from_agenda:
                try:
                    bucket["%s.nod" % cloud_path]
                except sinastorage.bucket.KeyNotFound:
                    pass
                else:
                    info = bucket.info("%s.nod" % cloud_path)
                    ct = int(info.get('metadata').get('lmt'))
                    if lt < ct:
                        shall_upload = False

            if shall_upload:
                bucket.putFile("%s.nod" % cloud_path, "%s.nod" % local_path,
                               self.call_back)
                bucket.update_meta("%s.nod" % cloud_path, {'lmt': str(lt)})
                bucket.update_meta("%s.nod" % cloud_path,
                                   {'hver': hou.applicationVersionString()})
                if os.path.exists("%s.hlp" % local_path):
                    bucket.putFile("%s.hlp" % cloud_path,
                                   "%s.hlp" % local_path)
            else:
                open("%s.nod" % local_path, 'w').close()
Exemplo n.º 3
0
def update_file_meta():
    s = SCSBucket('test11')
    s.update_meta('sss.txt', {'aaa':'bbbb','dage':'sbsb'})