from esu.base import BaseAPI, Field, ObjectAlreadyHasId, ObjectHasNoId
# pylint: disable=invalid-name
[документация]class S3Bucket(BaseAPI):
"""
Args:
id (str): Идентификатор
name (str): Имя бакета в ЕСУ
external_name (str): Имя бакета в S3
"""
class Meta:
id = Field()
name = Field()
external_name = Field()
[документация] @classmethod
def get_object(cls, id, s3, token=None):
"""
Получить объект бакета хранилища S3 по его ID
Args:
id (str): Идентификатор бакета хранилища S3
token (str): Токен для доступа к API. Если не передан, будет
использована переменная окружения **ESU_API_TOKEN**
Returns:
object: Возвращает объект бакета хранилища S3 :class:`esu.S3bucket`
"""
s3bucket = cls(token=token, id=id)
s3bucket._get_object('v1/s3_storage/{}/bucket'.format(s3.id),
s3bucket.id)
return s3bucket
[документация] def create(self, s3):
"""
Создать объект
Raises:
ObjectAlreadyHasId: Если производится попытка создать объект,
который уже существует
"""
if self.id is not None:
raise ObjectAlreadyHasId
self._commit(s3)
[документация] def save(self, s3):
"""
Сохранить изменения
"""
if self.id is None:
raise ObjectHasNoId
self._commit(s3)
return self
def _commit(self, s3):
s3bucket = {'name': self.name}
self._commit_object('v1/s3_storage/{}/bucket'.format(s3.id),
**s3bucket)
[документация] def destroy(self, s3):
"""
Удалить объект
Raises:
ObjectHasNoId: Когда производится попытка удалить несуществующий
объект
"""
if self.id is None:
raise ObjectHasNoId
self._destroy_object('v1/s3_storage/{}/bucket'.format(s3.id), self.id)
self.id = None