Исходный код esu.project

from esu.base import BaseAPI, Field, ObjectAlreadyHasId, ObjectHasNoId
from esu.dns import Dns
from esu.kubernetes import Kubernetes
from esu.s3 import S3
from esu.vdc import Vdc


[документация]class Project(BaseAPI): """ Args: id (str): Идентификатор name (str): Имя client (object): Объект класса :class:`esu.Client`. Клиент, к которому относится проект token (str): Токен для доступа к API. Если не передан, будет использована переменная окружения **ESU_API_TOKEN** .. note:: Поля ``name`` и ``client`` необходимы для создания. Поле ``name`` может быть изменено для существующего объекта. """ class Meta: id = Field() name = Field() client = Field('esu.Client')
[документация] @classmethod def get_object(cls, id, token=None): """ Получить объект проекта по его ID Args: id (str): Идентификатор проекта token (str): Токен для доступа к API. Если не передан, будет использована переменная окружения **ESU_API_TOKEN** Returns: object: Возвращает объект проекта :class:`esu.Project` """ project = cls(token=token, id=id) project._get_object('v1/project', project.id) return project
[документация] def create(self): """ Создать объект Raises: ObjectAlreadyHasId: Если производится попытка создать объект, который уже существует """ if self.id is not None: raise ObjectAlreadyHasId self._commit()
[документация] def save(self): """ Сохранить изменения Raises: ObjectHasNoId: Если производится попытка сохранить несуществующий объект """ if self.id is None: raise ObjectHasNoId self._commit()
def _commit(self): self._commit_object('v1/project', client=self.client.id, name=self.name)
[документация] def destroy(self): """ Удалить объект Raises: ObjectHasNoId: Когда производится попытка удалить несуществующий объект """ if self.id is None: raise ObjectHasNoId self._destroy_object('v1/project', self.id) self.id = None
[документация] def get_vdcs(self): """ Получить ВЦОДы в данном проекте. Вернет список объектов :class:`esu.Vdc`. Returns: list: Список объектов :class:`esu.Vdc` """ if self.id is None: raise ObjectHasNoId return self._get_list('v1/vdc', Vdc, project=self.id)
[документация] def get_available_hypervisors(self): """ Получить список доступных гипервизоров в этом проекте. Вернет список объектов :class:`esu.Hypervisor`. Returns: list: Список объектов :class:`esu.Hypervisor` """ return self.client.allowed_hypervisors
[документация] def get_dns_zones(self): """ Получить список доступных доменных зон в этом проекте. Вернет список объектов :class:`esu.Dns`. Returns: list: Список объектов :class:`esu.Dns` """ if self.id is None: raise ObjectHasNoId return self._get_list('v1/dns', Dns, project=self.id)
[документация] def get_k8s_clusters(self): """ Получить список доступных кластеров Kubernetes в этом проекте. Вернет список объектов :class:`esu.Kubernetes`. Returns: list: Список объектов :class:`esu.Kubernetes` """ if self.id is None: raise ObjectHasNoId return self._get_list('v1/kubernetes', Kubernetes, project=self.id)
[документация] def get_s3_storages(self): """ Получить список доступных s3 хранилищ в этом проекте. Вернет список объектов :class:`esu.S3`. Returns: list: Список объектов :class:`esu.S3` """ if self.id is None: raise ObjectHasNoId return self._get_list('v1/s3_storage', S3, project=self.id)