Перейти к основному содержимому
Версия: 1.7.5

Модели данных (module_sdk.models)

Все модели наследуют Model (базовый класс) и сгенерированы из OpenAPI-спецификации.

Импорт

from module_sdk.models import (
CollectionHost,
CollectionAccount,
CollectionNetwork,
CollectionExternalAddress,
CollectionAssets,
NetInterfaces,
NetworkService,
Package,
ScanStatus,
)

Или по отдельности:

from module_sdk.models.collection_host import CollectionHost

Model (базовый класс)

from module_sdk.models.base_model import Model

Все модели наследуют Model и предоставляют:

МетодОписание
from_dict(dikt) -> ModelClassmethod. Десериализация из dict
to_dict() -> dictСериализация в dict (рекурсивно для вложенных моделей)
to_str() -> strPretty-print через pprint
__repr__()Вызывает to_str()
__eq__(other)Сравнение по __dict__

Каждая модель содержит:

  • openapi_types: Dict[str, type] -- маппинг атрибут -> тип

  • attribute_map: Dict[str, str] -- маппинг атрибут -> JSON-ключ

CollectionHost

Хост (сервер, рабочая станция, сетевое устройство).

CollectionHost(
name: str, # обязательное
responsible: str, # обязательное (UUID)
operation_system: str = None,
display_name: str = None,
net_interfaces: List[NetInterfaces] = None,
zone_id: str = None,
tenant_id: str = None, # UUID
packages: List[Package] = None,
network_services: List[NetworkService] = None,
metadata: Dict[str, object] = None,
)

Валидация: name и responsible не могут быть None (ValueError).

NetInterfaces

Сетевой интерфейс.

NetInterfaces(
id: str = None, # UUID
name: str = None,
ipv4: str = None,
ipv6: str = None,
mac_addr: str = None,
network_id: str = None,
parentbus: str = None,
parentdev: str = None,
dhcp_leasetime: int = None,
dhcp_leasetime_upd: str = None,
create_date: str = None,
update_date: str = None,
delete_date: str = None,
fqdn: str = None,
)

Все поля опциональные.

Package

Установленный пакет.

Package(
name: str, # обязательное
version: str, # обязательное
architecture: str = None,
vendor: str = None,
os: str = None,
description: str = None,
repository: str = None,
)

Валидация: name не может быть None (ValueError). version -- формально обязательное по OpenAPI-спеке, но в Python-классе setter не проверяет None.

NetworkService

Сетевой сервис (открытый порт).

NetworkService(
name: str, # обязательное
port: int, # обязательное
protocol: str, # обязательное, enum
state: str, # обязательное, enum
version: str = None,
banner: str = None,
external_address: str = None,
)

Валидация:

  • name не может быть None

  • port не может быть None

  • protocol -- enum: "tcp", "udp", "icmp"

  • state -- enum: "open", "closed", "filtered", "unfiltered", "open|filtered", "closed|filtered", "unknown"

Невалидные значения protocol или state вызывают ValueError.

CollectionAccount

Учетная запись.

CollectionAccount(
username: str = None,
fio: str = None,
tenant_id: str = None, # UUID
mail: str = None,
external_system_id: str = None,
last_time_loaded: str = None,
externally_blocked: bool = None,
metadata: Dict[str, object] = None,
)

Все поля опциональные.

CollectionNetwork

Сеть.

CollectionNetwork(
description: str = None,
name: str, # обязательное
zone_id: str, # обязательное (UUID)
type: str, # обязательное
cidr: str = None,
metadata: Dict[str, object] = None,
)

Валидация: name, zone_id, type не могут быть None.

CollectionExternalAddress

Внешний адрес.

CollectionExternalAddress(
type_ext_address: str, # обязательное, enum
type_value: str, # обязательное
description: str = None,
network_services: List[NetworkService] = None,
metadata: Dict[str, object] = None,
)

Валидация:

  • type_ext_address -- enum: "fqdn", "ip"

  • type_value не может быть None

CollectionAssets

Контейнер для всех типов ассетов. Используется SDK внутренне, вам не нужно создавать его вручную.

CollectionAssets(
confidence: int = None,
force: bool = None,
autorule_action_execution_id: str = None,
zone_id: str = None, # UUID
tenant_id: str = None, # UUID
global_metadata: List[object], # обязательное
host: List[CollectionHost] = None,
account: List[CollectionAccount] = None,
network: List[CollectionNetwork] = None,
external_address: List[CollectionExternalAddress] = None,
)

Валидация: global_metadata не может быть None.

ScanStatus

Статус сканирования. Используется SDK внутренне.

ScanStatus(
status: str, # обязательное, enum
packet_num: int, # обязательное
values: Dict[str, object] = None,
error_message: str = None,
data: CollectionAssets, # обязательное
)

Валидация:

  • status -- enum: "CREATE", "RUN", "ASSETS_READY", "FINISH", "ERROR"

  • packet_num не может быть None

  • data не может быть None