Volver a la wiki

Modelo VendorProfile (catálogo global de fabricantes y perfiles SNMP/HTTP)

Propósito

VendorProfile es el catálogo global y compartido de todos los fabricantes de equipo (Cisco, Arista, Juniper, etc.) en la instalación CreaRack Pro. Contiene:

Sin tenant-scoping: una entrada de VendorProfile es accesible y pollada por todas las orgs del SaaS. Por lo tanto, las mutaciones requieren rol admin (autorización s114).

Estructura

CampoTipoNotas
slugCharFieldIdentificador único, immutable (ej: cisco, arista)
display_nameCharFieldNombre legible
aliasesJSONFieldVariantes de nombre
snmp_communitiesJSONFieldDefault community strings por modelo
sys_descr_patternsJSONFieldRegexes para detectar vendor desde sysDescr
sys_descr_model_regexJSONFieldExtraer modelo de sysDescr (editable)
sys_descr_version_regexJSONFieldExtraer versión de sysDescr (editable)
sys_object_id_prefixCharFieldOID del enterprise number (SNMP walk optimization)
http_*JSONFieldPatrones HTTP (headers, body, firmware extraction)
ssh_*JSONFieldComandos y regexes SSH (show version, inventory, etc.)
scrapli_platformCharFieldNombre de platform en scrapli (si disponible)
default_device_typeCharFieldTipo de dispositivo por defecto (router, switch, etc.)
mib_modulesJSONFieldNombres de módulos ASN.1 que este vendor usa
deep_discovery_oidsJSONFieldOIDs para polling profundo (por categoría)
monitoring_oidsJSONFieldOIDs sugeridos para Zabbix/Prometheus
priorityIntegerFieldOrden de chequeo en detect_vendor_from_sys_descr
is_activeBooleanFieldDescartado / activo
notesTextFieldDocumentación libre

Autorización (s114)

Endpoints de lectura (cualquier usuario autenticado)

Endpoints de escritura (admin only)

Cambio s114: Endpoints que mutaban el catálogo ahora exigen admin:

Validaciones (s114)

Mass-assignment acotado

create_vendor_profile filtra el payload contra lista blanca VENDOR_UPDATABLE_FIELDS (constante a nivel módulo, en network/api/vendor.py):

VENDOR_UPDATABLE_FIELDS = {
    "display_name", "aliases", "snmp_communities",
    "sys_descr_patterns", "sys_descr_model_regex", "sys_descr_version_regex",
    "sys_object_id_prefix", "http_server_patterns", "http_body_patterns",
    "http_product_lines", "http_firmware_regex", "scrapli_platform",
    "ssh_show_version_cmd", "ssh_show_interfaces_cmd", "ssh_show_inventory_cmd",
    "ssh_model_regex", "ssh_version_regex", "default_device_type",
    "device_type_keywords", "os_types", "mib_modules",
    "deep_discovery_oids", "monitoring_oids", "priority", "is_active", "notes",
}

El slug se fija solo en create, no en update.

Validación de OID

En apply_custom_oids: cada OID se valida contra regex ^\.?\d+(\.\d+)*$ antes de persistir en el catálogo global (evita inyectar basura).

ReDoS mitigation

Las funciones de extracción de modelo/versión capan el sysDescr a 2048 caracteres antes de aplicar las regexes editables:

Paridad con el cap HTTP body[:2048].

Relacionadas

Véase también

Subir