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

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


[документация]class RouterFirewallRule(BaseAPI): """ Args: id (str): Идентификатор правила брандмауэра name (str): Имя правила брандмауэра router (object): Объект класса :class:`esu.Router`. Роутер, к которому относится данное правило брандмауэра direction (str): Направление правила брандмауэра source_ip (str): Адрес источника правила брандмауэра (может быть IP адресом или CIDR, None = любой) src_port_range_max (str): Максимальный порт диапазона портов источника src_port_range_min (str): Минимальный порт диапазона портов источника destination_ip (str): Адрес назначения правила брандмауэра (может быть IP адресом или CIDR, None = любой) dst_port_range_max (str): Максимальный порт диапазона портов назначения dst_port_range_min (str): Минимальный порт диапазона портов назначения protocol (str): protocol правила брандмауэра token (str): Токен для доступа к API. Если не передан, будет использована переменная окружения **ESU_API_TOKEN** .. note:: Управление брандмауэром на роутере доступно только для ресурсного пула VMware. Поля ``direction``, ``name`` и ``protocol`` необходимы для создания. """ class Meta: router = Field('esu.Router') id = Field() name = Field() direction = Field() source_ip = Field(allow_none=True) src_port_range_max = Field(allow_none=True) src_port_range_min = Field(allow_none=True) destination_ip = Field(allow_none=True) dst_port_range_max = Field(allow_none=True) dst_port_range_min = Field(allow_none=True) protocol = Field()
[документация] @classmethod def get_object(cls, router, rule_id, token=None): """ Получить объект правила брандмауэра роутера по его ID Args: id (str): Идентификатор правила брандмауэра на роутере token (str): Токен для доступа к API. Если не передан, будет использована переменная окружения **ESU_API_TOKEN** Returns: object: Возвращает объект правила брандмауэра на роутере :class:`esu.RouterFirewallRule` """ firewall_rule = cls(token=token, id=rule_id, router=router) firewall_rule._get_object( 'v1/router/{}/firewall_rule'.format(firewall_rule.router.id), firewall_rule.id) return firewall_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): router_fw_rule = { "name": self.name, "destination_ip": self.destination_ip, "source_ip": self.source_ip, "src_port_range_max": self.src_port_range_max, "src_port_range_min": self.src_port_range_min, "direction": self.direction, "dst_port_range_max": self.dst_port_range_max, "dst_port_range_min": self.dst_port_range_min, "protocol": self.protocol } self._commit_object( 'v1/router/{}/' 'firewall_rule'.format(self.router.id), **router_fw_rule)
[документация] def destroy(self): """ Удалить объект Raises: ObjectHasNoId: Когда производится попытка удалить несуществующий объект """ if self.id is None: raise ObjectHasNoId self._destroy_object( 'v1/router/{}/firewall_' 'rule'.format(self.router.id), self.id) self.id = None