예제 #1
0
class HWOBS:
    def __init__(self):
        self.obsclient = ObsClient(access_key_id=current_app.config.HW_ACCESS_KEY_ID,
                                   secret_access_key=current_app.config.HW_SECRET_ACCESS_KEY,
                                   server=current_app.config.HW_SERVER)

    def mv(self, srcbucketname, src_obj_key, destbucketname, dest_obj_key):
        """移动对象"""
        resp = self.obsclient.copyObject(srcbucketname, src_obj_key, destbucketname, dest_obj_key)
        if resp.status >= 300:
            raise Exception("OBS MV 复制对象出错 errorMessage:", resp.errorMessage, "errorCode:", resp.errorCode)
        else:
            res = self.obsclient.deleteObject(srcbucketname, src_obj_key)
            if res.status >= 300:
                raise Exception("OBS MV 删除源对象时出错 errorMessage:", res.errorMessage, "errorCode:", res.errorCode)
예제 #2
0
# Create bucket
print('Create a new bucket for demo\n')
obsClient.createBucket(bucketName)

# Setting object mime type
headers = PutObjectHeader(contentType='text/plain')

# Setting self-defined metadata
metadata = {'meta1': 'value1', 'meta2': 'value2'}

resp = obsClient.putContent(bucketName,
                            objectKey,
                            'Hello OBS',
                            metadata=metadata,
                            headers=headers)
if resp.status < 300:
    print('Create object ' + objectKey + ' successfully!\n')
else:
    print('common msg:status:', resp.status, ',errorCode:', resp.errorCode,
          ',errorMessage:', resp.errorMessage)

# Get object metadata
resp = obsClient.getObjectMetadata(bucketName, objectKey)
header = dict(resp.header)
print('\tContentType:' + header.get('content-type'))
print('\tmeta1:' + header.get('meta1'))
print('\tmeta2:' + header.get('meta2'))

obsClient.deleteObject(bucketName, objectKey)
예제 #3
0
class bucket():
    def __init__(self,
                 access_key_id=None,
                 secret_access_key=None,
                 server=None,
                 bucketName=None):
        # 创建ObsClient实例
        self.base_folder = "/"
        if access_key_id == None or secret_access_key == None or server == None:
            print(
                "# ----- Error invalid OBS server config please check parameter of obs server"
            )
            exit(0)
        else:
            self.obsClient = ObsClient(access_key_id=access_key_id,
                                       secret_access_key=secret_access_key,
                                       server=server)

        if bucketName != None:
            self.bucketName = bucketName
            self.bucketClient = self.obsClient.bucketClient(bucketName)

        print(
            "# ---------------------------------------------------------------------------- #"
        )
        print(
            "#                                Bucket ToolKit                                #"
        )
        print(
            "# ---------------------------------------------------------------------------- #"
        )
        print("# ----access key (AK) : ", access_key_id)
        print("# ----secret key (SK): ", secret_access_key)
        print("# ----server : ", server)
        print("# ----bucket name : ", bucketName)
        print("# ----root : ", self.base_folder)
        print(
            "# ---------------------------------------------------------------------------- #"
        )

    def getBucketMetadata(self):
        print('Getting bucket metadata\n')
        #resp = obsClient.getBucketMetadata(bucketName, origin='http://www.b.com', requestHeaders='Authorization1')
        resp = self.bucketClient.getBucketMetadata(
            origin='http://www.b.com', requestHeaders='Authorization1')
        print('storageClass:', resp.body.storageClass)
        print('accessContorlAllowOrigin:', resp.body.accessContorlAllowOrigin)
        print('accessContorlMaxAge:', resp.body.accessContorlMaxAge)
        print('accessContorlExposeHeaders:',
              resp.body.accessContorlExposeHeaders)
        print('accessContorlAllowMethods:',
              resp.body.accessContorlAllowMethods)
        print('accessContorlAllowHeaders:',
              resp.body.accessContorlAllowHeaders)
        print('Deleting bucket CORS\n')
        resp = self.bucketClient.deleteBucketCors()
        print('status' + str(resp.status))
        return resp

    def upload(self, remote_path, local_path):
        self.obsClient.putFile(self.bucketName, remote_path, local_path)
        # print("# ===== Uploading ",local_path," ===to : ",remote_path)

    def download(self, key, download):
        # print("# ===== Downloading ",key," === to :",download)
        self.obsClient.getObject(self.bucketName, key, downloadPath=download)

    def cd(self, folder_key):
        self.base_folder = folder_key
        print("# ===== Base Folder", self.base_folder)

    def delete(self, key):
        print('# ===== Deleting object ' + key + '\n')
        self.obsClient.deleteObject(self.bucketName, key)

    def check(self, key):
        """
        The Sync will overwrite by default. We need check
        """
        assert not self.obsClient.getObject(
            self.bucketName, key
        )["status"] < 300, "\n# ===== ERROR : \n# ===== bucket : ({bucketname})\n# ===== key : ({key}) & local upload flow try to overwrite same key".format(
            bucketname=self.bucketName, key=key)

    # def mkdir(self,dir):
    #     pass

    def ls(self, show_item_count=10):
        print("# ===== list ({path}): ".format(path=self.base_folder))
        # resp = self.obsClient.listObjects(self.bucketName)

        if self.base_folder == "/":
            resp = self.obsClient.listObjects(self.bucketName)

        else:
            resp = self.obsClient.listObjects(self.bucketName,
                                              self.base_folder)
        keylist = []
        print("# ===== object count : ", len(resp.body.contents))
        for content in resp.body.contents[:show_item_count]:
            keylist.append(content.key)
            print('   |--- : ' + content.key + ' etag[' + content.etag + ']')
        return keylist
예제 #4
0
# 引入模块
from obs import ObsClient

# 创建ObsClient实例
obsClient = ObsClient(access_key_id='******',
                      secret_access_key='******',
                      server='https://obs.cn-north-4.myhuaweicloud.com')
# 使用访问OBS
# resp = obsClient.getBucketMetadata('dli-cn-north-4-aae035c879b649ac93c1b3738fb7d56d')
# print(resp)

resp = obsClient.getObjectMetadata(
    'dli-cn-north-4-aae035c879b649ac93c1b3738fb7d56d', 'cat/3.png')
print(resp)

resp = obsClient.deleteObject(
    'dli-cn-north-4-aae035c879b649ac93c1b3738fb7d56d', 'cat1/a/')
print(resp)

resp = obsClient.getObjectMetadata(
    'dli-cn-north-4-aae035c879b649ac93c1b3738fb7d56d', 'cat1')
print(resp)

# 关闭obsClient
obsClient.close()