À propos du projet
swf-remote est une application web Django/Apache qui fournit un accès externe via l'Internet ouvert aux services de surveillance de la production PanDA hébergés derrière le pare-feu du Brookhaven National Laboratory. Elle sert l'expérience ePIC à l'Electron Ion Collider et est disponible sur epic-devcloud.org.
Architecture : L'application proxyise des pages HTML entièrement rendues provenant d'un service interne appelé swf-monitor via un tunnel SSH persistant géré par autossh et systemd. swf-remote ne détient aucune donnée PanDA localement ; toutes les données sont récupérées en temps réel depuis swf-monitor, qui a un accès direct à la base de données PanDA. Le proxy réécrit les URL amont vers des chemins /prod/ locaux et remplace les contrôles d'authentification locaux tout en préservant le corps et le style d'origine de la page.
Pages : Le hub contient des liens vers des vues de surveillance, notamment l'aperçu de l'activité (comptages de jobs/tâches par statut, utilisateur, site), des listes de jobs avec filtrage DataTables, des enregistrements de détails de jobs avec fichiers et erreurs, des listes de tâches JEDI, des résumés d'erreurs classés par fréquence, des diagnostics de jobs échoués, des instantanés de l'état opérationnel, la santé du système, un point de terminaison de relais MCP et la gestion des jetons API.
Authentification : Les visiteurs anonymes ne voient qu'une page d'accueil, un chemin de connexion et des ressources statiques. Les comptes sont créés via un nom d'utilisateur/mot de passe local ou une connexion GitHub (l'appartenance à l'organisation eic n'est pas requise). Les clients headless s'authentifient avec des jetons Bearer par utilisateur.
Relais MCP : Transmet le point de terminaison MCP de swf-monitor et l'ensemble de ses outils via le tunnel en tant qu'utilisateur connecté, l'ensemble des outils externes étant limité par un fichier de politique.
Stack : Django 5.2 avec Python 3.11, PostgreSQL pour les composants internes de Django uniquement, Apache avec mod_wsgi, httpx pour les appels REST amont, et Let's Encrypt pour HTTPS. La configuration utilise des variables d'environnement préfixées par SWF_REMOTE_.
Projets frères : swf-monitor (le service Django interne avec accès à la DB PanDA, API REST, serveur MCP), swf-testbed (orchestration du banc d'essai de flux de travail en streaming) et swf-common-lib (utilitaires partagés).
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.