Volver a la wiki

DeviceProfile · Modelo network

Propósito

DeviceProfile es la fuente de verdad sobre cualquier dispositivo de red descubierto por la Auto-Provision Tool. Almacena identidad (IP, hostname, vendor, modelo, serial), capacidades (SNMP/SSH/NETCONF), volcado ifTable SNMP, vecinos LLDP/CDP, deep discovery con MIBs vendor-específicas y confidence_score (0-100). A partir de este registro se auto-configuran Observatory (MonitoringTarget con ifIndex correcto), Rack Editor (sugerencia Stencil) y gestión de red (credenciales SSH).

Contrato

Campos principales:

CampoTipoDescripción
organizationFK(core.Organization)Tenant dueño
ip_addressGenericIPAddressFieldIP del dispositivo (PK lógico)
pending_ip_addressGenericIPAddressField (null)B-27 (25-09-2026): IP nueva detectada por un re-escaneo, pendiente de que un usuario la confirme o la descarte — ver [[feature—network—readdress-ip]]
dismissed_ip_addressGenericIPAddressField (null)B-27: IP que un usuario ya descartó para esta ficha; no se vuelve a proponer
hostname / fqdnCharFieldNombre resuelto
vendor / modelCharFieldFabricante y modelo inferidos
serial_number / mac_addressCharFieldIdentidad hardware
os_type / os_version / firmware_versionCharFieldSoftware
device_typeCharField(choices)router/switch/firewall/access_point/…
capabilitiesArrayFieldrouting, switching, vpn…
supports_snmp/ssh/telnet/netconf/restconfBooleanFieldProtocolos confirmados
snmp_version / snmp_communityCharFieldCredenciales SNMP v2c
snmp_v3_*CharFieldCredenciales SNMPv3
snmp_sys_descr / snmp_sys_object_id / snmp_uptime—OIDs base
interfacesJSONFieldifTable completa keyed por ifIndex
cpu_count / memory_total_mb / chassis_type—Hardware básico
deep_snmp_dataJSONFieldDeep discovery por categoría
mib_modules_loadedArrayFieldMIBs usados exitosamente
lldp_neighbors / cdp_neighborsJSONFieldVecinos topológicos
suggested_stencil_id / stencil_confidenceIntMatch fuzzy Stencil
discovery_methodCharField(choices)snmp/ssh/snmp+ssh/manual
confidence_scoreIntegerField(0-100)base 10 + identidad/SNMP/interfaces/hardware/método/plantilla/vecinos (fórmula completa en scoring.py::calculate_confidence); identidad verificada por sysObjectID: +10 si trae fabricante y modelo, +5 si solo uno de los dos o hay plantilla ≥70 (s314, v1.132.0)
linked_monitoring_targetFK(monitoring.MonitoringTarget)Auto-creado
linked_deviceFK(racks.Device)Device vinculado
groupsM2M(racks.RackGroup)Grupos
raw_snmp_data / raw_ssh_dataJSONFieldDumps crudos para debug

Métodos y propiedades:

Meta:

Dependencias entrantes

MóduloArchivoUso
DeviceDiscoveryServicenetwork/services/device_discovery/service.pyprovision_device/bulk_provision_subnet
ProvisionStagesMixinnetwork/services/device_discovery/provision_stages.py_persist_profile con update_or_create; antes de apply_manual_lock llama a scoring.py::carry_over_knowledge, que rellena con la ficha anterior los campos que esta pasada trae vacíos (s314)
AutoConfigServicenetwork/services/auto_config.pyCrea MonitoringTarget, sugiere Stencil
network/api/discovery.pyAPIPOST /auto-provision/discover; expone DeviceProfileOut
network/api/profiles.pyAPICRUD + re-scan ifTable + propagate ports + pending-ip/apply y /dismiss (B-27)
network/services/readdress.pyServicechange_profile_ip, propose_ip_change, clear_stale_ip_change, dismiss_pending_ip_change (B-27)
network/services/device_discovery/rescan_hooks.pyServicereaddress_profile_by_mac — propone el cambio pendiente cuando el re-escaneo ve la MAC en otra IP (B-27)
racks/services/racks.pyServiceAuto-link a Device, inyecta puertos desde ifTable
monitoring/views.pyViewsbulk_update de linked_monitoring_target
monitoring/api/wireless.py / ups.pyAPIsListan y vinculan por device_type
monitoring/services/group_service.pyGruposConsulta por grupo y device_type
terminal/consumers.pySentinelResuelve OIDs vía DeviceProfile → VendorProfile
PortConnectionnetwork/models.pyOneToOne FK port_connection
signage/models.pySignageFK directa desde modelos
core/services/backup_service.pyBackupSerializa en exports

Dependencias salientes

Ejemplos

Notas operativas

Véase también

Subir