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

from esu.base import BaseAPI, Field, ObjectAlreadyHasId, ObjectHasNoId


[документация]class PortForwardingRule(BaseAPI): """ Args: id (str): Идентификатор правила перенаправления портов port (object): Объект класса :class:`esu.Port`. Порт сервера до которого осуществляется перенаправление internal_port (int): Внутренний порт устройства, с которого осуществляется перенаправление external_port (int): Внешний порт устройства, на который осуществляется перенаправление protocol (str): Протокол по которому будет осуществляться перенаправление token (str): Токен для доступа к API. Если не передан, будет использована переменная окружения **ESU_API_TOKEN** .. note:: Управление перенаправлением портов создаваемом на порте возможно только в ресурсном пуле под управлением Openstack. Поля ``external_port``, ``internal_port``, ``protocol`` необходимы для создания. """ class Meta: port_forwarding = Field('esu.PortForwarding') port = Field('esu.Port') id = Field() external_port = Field() internal_port = Field() protocol = Field()
[документация] @classmethod def get_object(cls, port_forwarding, rule_id, token=None): """ Получить объект маршрута на роутере по его ID Args: id (str): Идентификатор маршрута на роутере token (str): Токен для доступа к API. Если не передан, будет использована переменная окружения **ESU_API_TOKEN** Returns: object: Возвращает объект маршрута на роутере :class:`esu.RouterRoute` """ pf_rule = cls(token=token, id=rule_id, port_forwarding=port_forwarding) pf_rule._get_object( 'v1/port_forwarding/' '{}/rule'.format(pf_rule.port_forwarding.id), pf_rule.id) return pf_rule
[документация] 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): port_forwarding_rule = { "internal_port": self.internal_port, "external_port": self.external_port, "protocol": self.protocol, "port": self.port.id } self._commit_object( 'v1/port_forwarding/' '{}/rule'.format(self.port_forwarding.id), **port_forwarding_rule)
[документация] def destroy(self): """ Удалить объект Raises: ObjectHasNoId: Когда производится попытка удалить несуществующий объект """ if self.id is None: raise ObjectHasNoId self._destroy_object( 'v1/port_forwarding/' '{}/rule'.format(self.port_forwarding.id), self.id) self.id = None