def create_bucket(self, bucket_name): """Create a new bucket. For example: .. code-block:: python >>> bucket = client.create_bucket('my-bucket') >>> print(bucket) <Bucket: my-bucket> This implements "storage.buckets.insert". If the bucket already exists, will raise :class:`google.cloud.exceptions.Conflict`. :type bucket_name: str :param bucket_name: The bucket name to create. :rtype: :class:`google.cloud.storage.bucket.Bucket` :returns: The newly created bucket. """ bucket = Bucket(self, name=bucket_name) bucket.create(client=self) return bucket
def create_bucket(self, bucket_name, requester_pays=None, project=None): """Create a new bucket. For example: .. literalinclude:: snippets.py :start-after: [START create_bucket] :end-before: [END create_bucket] This implements "storage.buckets.insert". If the bucket already exists, will raise :class:`google.cloud.exceptions.Conflict`. :type bucket_name: str :param bucket_name: The bucket name to create. :type requester_pays: bool :param requester_pays: (Optional) Whether requester pays for API requests for this bucket and its blobs. :type project: str :param project: (Optional) the project under which the bucket is to be created. If not passed, uses the project set on the client. :rtype: :class:`google.cloud.storage.bucket.Bucket` :returns: The newly created bucket. """ bucket = Bucket(self, name=bucket_name) if requester_pays is not None: bucket.requester_pays = requester_pays bucket.create(client=self, project=project) return bucket
def create_bucket(self, bucket_or_name, requester_pays=None, project=None): """API call: create a new bucket via a POST request. See https://cloud.google.com/storage/docs/json_api/v1/buckets/insert Args: bucket_or_name (Union[ \ :class:`~google.cloud.storage.bucket.Bucket`, \ str, \ ]): The bucket resource to pass or name to create. requester_pays (bool): Optional. Whether requester pays for API requests for this bucket and its blobs. project (str): Optional. the project under which the bucket is to be created. If not passed, uses the project set on the client. Returns: google.cloud.storage.bucket.Bucket The newly created bucket. Raises: google.cloud.exceptions.Conflict If the bucket already exists. Examples: Create a bucket using a string. .. literalinclude:: snippets.py :start-after: [START create_bucket] :end-before: [END create_bucket] Create a bucket using a resource. >>> from google.cloud import storage >>> client = storage.Client() >>> # Set properties on a plain resource object. >>> bucket = storage.Bucket("my-bucket-name") >>> bucket.location = "europe-west6" >>> bucket.storage_class = "COLDLINE" >>> # Pass that resource object to the client. >>> bucket = client.create_bucket(bucket) # API request. """ bucket = None if isinstance(bucket_or_name, Bucket): bucket = bucket_or_name else: bucket = Bucket(self, name=bucket_or_name) if requester_pays is not None: bucket.requester_pays = requester_pays bucket.create(client=self, project=project) return bucket
def create_bucket(self, bucket_name, requester_pays=None, project=None): """Create a new bucket. For example: .. literalinclude:: snippets.py :start-after: [START create_bucket] :end-before: [END create_bucket] This implements "storage.buckets.insert". If the bucket already exists, will raise :class:`google.cloud.exceptions.Conflict`. To set additional properties when creating a bucket, such as the bucket location, use :meth:`~.Bucket.create`. :type bucket_name: str :param bucket_name: The bucket name to create. :type requester_pays: bool :param requester_pays: (Optional) Whether requester pays for API requests for this bucket and its blobs. :type project: str :param project: (Optional) the project under which the bucket is to be created. If not passed, uses the project set on the client. :rtype: :class:`google.cloud.storage.bucket.Bucket` :returns: The newly created bucket. """ bucket = Bucket(self, name=bucket_name) if requester_pays is not None: bucket.requester_pays = requester_pays bucket.create(client=self, project=project) return bucket
def create_bucket(self, bucket_name): """Create a new bucket. For example: .. literalinclude:: storage_snippets.py :start-after: [START create_bucket] :end-before: [END create_bucket] This implements "storage.buckets.insert". If the bucket already exists, will raise :class:`google.cloud.exceptions.Conflict`. :type bucket_name: str :param bucket_name: The bucket name to create. :rtype: :class:`google.cloud.storage.bucket.Bucket` :returns: The newly created bucket. """ bucket = Bucket(self, name=bucket_name) bucket.create(client=self) return bucket
def create_bucket(self, bucket_name): """Create a new bucket. For example:: >>> bucket = client.create_bucket('my-bucket') >>> print(bucket) <Bucket: my-bucket> This implements "storage.buckets.insert". If the bucket already exists, will raise :class:`google.cloud.exceptions.Conflict`. :type bucket_name: str :param bucket_name: The bucket name to create. :rtype: :class:`google.cloud.storage.bucket.Bucket` :returns: The newly created bucket. """ bucket = Bucket(self, name=bucket_name) bucket.create(client=self) return bucket
class StorageUtil: """ Auxiliary class for Google Cloud Storage Example: buckets = '' for bucket in Storage.buckets(): buckets += f'{bucket}\n' project_def = ProjectDefinition('project_id', 'location') strge = StorageUtil('bucket-name', 'all_buckets.txt', project=project_def).new_content(buckets) print(f'File content [{strge.file_name}]: {strge.get_content()}') """ client = storage.Client() def __init__(self, bucket_name, file_name=None, project=None, project_id=None, location=None): self.project = project if project else ProjectReference( project_id, location) self._bucket_name = bucket_name self._bucket = None self._blob = None self._file_name = file_name if file_name: self.set_blob(file_name) @property def bucket(self): if not self._bucket: try: self._bucket = self.client.get_bucket(self._bucket_name) except NotFound: self._bucket = Bucket(client=self.client, name=self._bucket_name) self._bucket.create(client=self.client, location=self.project.location) logging.info('Bucket {} not found and was created.'.format( self._bucket.name)) return self._bucket @property def blob(self): if not self._blob: raise NoBlobSetException() return self._blob @property def file_name(self): if not self._blob: raise NoBlobSetException() return self._file_name def set_blob(self, file_name): self._file_name = file_name self._blob = self.bucket.get_blob(file_name) if not self._blob: self._blob = self._bucket.blob(file_name) logging.info(f'File not found and was created: {file_name}') return self def delete_blob(self): try: self.bucket.delete_blob(self.file_name) logging.info(f'File deleted: {self.file_name}') except NotFound: logging.info(f'File not found: {self.file_name}') self._file_name = None self._blob = None return self def new_content(self, new_content: str): content_len = 80 content = f'{new_content[:content_len]} [...]' if len( new_content) > content_len else new_content logging.info( f'Uploading new content to file "{self._file_name}": {repr(content)}' ) self.blob.upload_from_string(new_content) return self def get_content(self): return self.blob.download_as_string() @classmethod def buckets(cls): return [b for b in cls.client.list_buckets()]