Exemplo n.º 1
0
from __future__ import print_function
from obs import ObsClient, LogConf, CreateBucketHeader, Grantee, Grant, StorageClass, Owner, Group, Permission, ACL
from obs import Versions, Expiration, DateTime, NoncurrentVersionExpiration, Rule, Lifecycle, RedirectAllRequestTo
from obs import IndexDocument, ErrorDocument, Condition, Redirect, RoutingRule, WebsiteConfiguration, Logging, TagInfo
from obs import CorsRule, FilterRule, TopicConfiguration, EventType, Notification, ListMultipartUploadsRequest, Object
from obs import DeleteObjectsRequest, CompletePart, CompleteMultipartUploadRequest, PutObjectHeader, AppendObjectHeader
from obs import AppendObjectContent, GetObjectRequest, GetObjectHeader, RestoreTier, CopyObjectHeader

AK = '*** Provide your Access Key ***'
SK = '*** Provide your Secret Key ***'
server = 'https://your-endpoint'
bucketName = 'my-obs-bucket-demo'

# create ObsClient instance
obsClient = ObsClient(access_key_id=AK, secret_access_key=SK, server=server)
bucketClient = obsClient.bucketClient(bucketName)


# init log
def initLog():
    obsClient.initLog(LogConf('../log.conf'), 'obsclient')


# create bucket
def CreateBucket():
    headers = CreateBucketHeader(aclControl='public-read',
                                 storageClass=StorageClass.WARM)
    resp = bucketClient.createBucket(header=headers)
    print('common msg:status:', resp.status, ',errorCode:', resp.errorCode,
          ',errorMessage:', resp.errorMessage, ',resHeader:', resp.header)
Exemplo n.º 2
0
        if project["name"] == "ae-ad-1":
            project_id = project["id"]

    # get token for project
    token = get_token(domain_name, project_id, user=user, password=password)

    # get ak/sk credentials
    credentials = create_temporary_ak_sk(token)
    AK = credentials["access"]
    SK = credentials["secret"]

    # Constructs a obs client instance with your account for accessing OBS
    obs_client = ObsClient(access_key_id=AK,
                           secret_access_key=SK,
                           server=server)
    bucket_client = obs_client.bucketClient(bucket_name)

    # TODO create OBS folders (not working)
    base_folder = f"{uid}/"
    obs_client.putContent(bucket_name, base_folder)

    resp = obs_client.getObjectMetadata(bucket_name, base_folder)
    print('Size of the empty folder ' + base_folder + ' is ' +
          str(dict(resp.header).get('content-length')))

    code_folder = f"{base_folder}code/"
    obs_client.putContent(bucket_name, code_folder)
    data_folder = f"{base_folder}data/"
    obs_client.putContent(bucket_name, data_folder)
    model_folder = f"{base_folder}model/"
    obs_client.putContent(bucket_name, model_folder)
Exemplo n.º 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