Volver a la wiki

Descripción

Antes (s114), la página Terminal listaba solo racks.Device colocados en un rack y con Network Management (management_config válido). Los dispositivos detectados por Auto-Provision y derivados a otras páginas (wireless, UPS, Digital Signage, observatory) no aparecían en el Terminal aunque también se gestionan por SSH.

Ahora el Terminal une dos fuentes, deduplicado por IP:

  1. racks.Device con Network Management → sesión SSH directa (credenciales guardadas en management_config).
  2. network.DeviceProfile (registro que Auto-Provision crea por cada (org, IP) detectada) con supports_ssh o supports_snmp, cuya IP no esté ya cubierta por un Device.

Sin modelo nuevo en la lista — reaprovecha el DeviceProfile existente.

Implementación

Herencia de credenciales SSH (PR #81 · migración network/0047)

Antes, las credenciales SSH que el usuario daba en Auto-Provision se usaban para descubrir y se descartaban (_persist_profile no las recibía). Ahora:

Nota operativa: para que un dispositivo ya existente herede sus claves hay que volver a pasarle Auto-Provision con credenciales — las antiguas nunca se guardaron.

Tests

tests/api/test_terminal_hosts.py (13): unión, dedup por IP, categorías (incl. wifi por device_type), exclusión de profiles sin SSH/SNMP, aislamiento por organización, round-trip de cifrado, endpoint de credenciales (admin 200 / viewer 403 / sin-creds), has_stored_ssh, y un test de vista que parchea terminal.views.render (patrón de test_monitoring, porque el job Backend de CI no compila assets Vite).

Footgun

La plantilla del Terminal usa {% vite_asset 'src/pages/terminal.ts' %}. Un test que renderice la página real falla en el job Backend de CI con DjangoViteAssetNotFoundError (CI no compila Vite ahí). Patrón correcto: parchear render y verificar el contexto, no el HTML.

Subir