CreaRack-SL

Aviso de bootstrap en el Observatory cuando la org no tiene ningún agente (task #256)

User value

Cuando una organización nueva entra al Observatory sin tener todavía ningún agente instalado, ahora lo sabe de inmediato: un aviso destacado aparece arriba del contenido, en cualquier pestaña, explicando que la monitorización necesita el Local Agent y ofreciendo el botón Download Agent para instalarlo. Antes de este cambio, la única pista existente (el panel “No agents registered” del widget Agent Fleet) vivía al final de la pestaña Overview, bajo el pliegue — un ensayo end-to-end con una organización recién creada demostró que nadie llegaba a verlo.

Cómo usarla

  1. El aviso se pinta solo — no requiere acción del usuario para aparecer.
  2. Mientras la flota de agentes de la organización esté vacía (fleet.length === 0), el contenedor #observatory-agent-callout (declarado en templates/monitoring/observatory.html, justo antes de .tabs-content-area) muestra el mensaje “Monitoring needs the Local Agent” con el botón Download Agent.
  3. El botón dispara Observatory.startAgentRecovery (función ya existente en ObservatorySentinel.js, reutilizada aquí — no es un flujo nuevo de descarga).
  4. En cuanto se empareja el primer agente, el aviso desaparece solo en el siguiente ciclo de polling.

Implementación

  • static/js/pages/observatory/ObservatoryAgent.js — dentro de loadAgentStatus(), la rama “Truly offline / no agent” marca showInstallCallout = true; al final de la función se llama a la nueva _updateInstallCallout(show), que pinta o vacía el contenedor #observatory-agent-callout. Usa callout.dataset.rendered como guarda para no repintar en cada ciclo de poll.
  • templates/monitoring/observatory.html — nuevo <div id="observatory-agent-callout"></div> fuera del área de pestañas (tabs-content-area), por eso el aviso es visible sin importar qué pestaña esté activa.
  • Strings: nuevos textos con t() (“Monitoring needs the Local Agent”, “Install the CreaRack Agent on a machine in your network…”, “Download Agent”) con su traducción ES añadida al catálogo (locale/es/LC_MESSAGES/djangojs.po).
  • Reutiliza el botón/flujo de recuperación existente (startAgentRecovery, protocolo crearack://start) en vez de crear un mecanismo de descarga nuevo — distinto del banner de [[feature—network—agent-onboarding-descarga-guiada]] (ese es específico de los flujos de auto-discovery de red).
  • Fix de paso, mismo commit: ObservatoryOverview.js se importaba con dos query strings ?v= distintas a la vez (?v=8 desde observatory.js, ?v=7 desde ObservatoryWebSocket.js) → dos URLs para el mismo módulo lógico → doble ejecución (misma clase de fallo que [[incident—20260821—add-rack-doble-post-manifest-hash]], aunque con mecanismo distinto: aquí es un desajuste manual de cache-busting, no manifest hasheado). Alineadas ambas a ?v=9, con comentario centinela en ObservatoryWebSocket.js recordando que el ?v= debe coincidir siempre con el de observatory.js.

Commits relacionados

  • a06de1689fa84dddc9b28154ff673534138579e0 (2026-08-24) — PR #427, v1.82.9. Hallazgo de Edu en el ensayo E2E de una organización nueva.

Véase también

  • [[feature—monitoring—avisos-sentinel-24-7]]
  • [[feature—network—agent-onboarding-descarga-guiada]]
  • [[crearack—monitoring—fleet-manager]]
  • [[crearack—terminal—local-agent]]
  • [[crearack-tech—agents—dev-observatory]]
  • [[incident—20260821—add-rack-doble-post-manifest-hash]]