Модели данных (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) -> Model | Classmethod. Десериализация из dict |
to_dict() -> dict | Сериализация в dict (рекурсивно для вложенных моделей) |
to_str() -> str | Pretty-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