Mode maintenance

Request description

Bonjour,

Est-ce qu’il existe un “mode maintenance” dans Simplicité qui permettrait d’interdire la connexion à l’application pour tous les utilisateurs sauf les utilisateurs qui ont la responsabilité “DESIGNER” par exemple ?

Technical information

Instance /health

[Platform]
Status=OK
Version=5.2.25
BuiltOn=2022-12-08 16:29
Git=5.2/b6ade203bbb1542df426ee173be5abaa0746c664
Encoding=UTF-8
EndpointIP=
EndpointURL=
TimeZone=Europe/Paris
SystemDate=2023-01-11 12:21:29

[Application]
ApplicationVersion=2.0.0.3-B4
ContextPath=
ContextURL=
ActiveSessions=3
TotalUsers=54
EnabledUsers=9
LastLoginDate=2023-01-11 12:17:13

[Server]
ServerInfo=Apache Tomcat/9.0.65
ServerType=WEB
ServerActiveSessions=3
ServerSessionTimeout=30

[OS]
Name=Linux
Architecture=amd64
Version=5.10.16.3-microsoft-standard-WSL2
SystemEncoding=UTF-8

[Disk]
DiskFree=219508
DiskUsable=206384
DiskTotal=257006

[JavaVM]
Version=11.0.16
Vendor=Ubuntu
VMName=OpenJDK 64-Bit Server VM
VMVersion=11.0.16+8-post-Ubuntu-0ubuntu120.04
ScriptEngine=rhino
ScriptEngineVersion=Rhino 1.7.13 2020 09 02
HeapFree=386057
HeapSize=2045952
HeapMaxSize=8388608
TotalFreeSize=6728713

[Cache]
ObjectCache=507
ObjectCacheMax=10000
ObjectCacheRatio=5
ProcessCache=0
ProcessCacheMax=10000
ProcessCacheRatio=0
APIGrantCache=0
APIGrantCacheMax=1000
APIGrantRatio=0

[Database]
Vendor=3
ProductName=PostgreSQL
ProductVersion=13.8 (Ubuntu 13.8-1.pgdg20.04+1)
DriverName=PostgreSQL JDBC Driver
DriverVersion=42.5.0
DBDate=2023-01-11 12:21:29
DBDateOffset=0
DBPatchLevel=5;P02;d18dcfcb4287f895fe1a09304153de1f
UsingBLOBs=true

[Healthcheck]
Date=2023-01-11 12:21:29
ElapsedTime=109


Bonjour,

Non, pas de mode maintenance à proprement parler, mais sa réalisation via un PlatformHook qui bloquerait la connexion de tout autre utilisateur que le designer est assez facilement implémentable.

Dac’, merci Simon je vais faire ça.

En tout cas c’est une fonctionnalité que je trouve intéressante, si vous pouvez l’implémenter directement dans Simplicité ça permettrait de l’utiliser sur d’autres projets sans devoir le redévelopper à chaque fois ^^

Lors de certaines mises à jour de nos applications nous avons besoin de faire des actions complémentaires à l’import du module comme l’exécution de requêtes SQL ou de traitements Java pour corriger la BDD. L’idée est alors la suivante :

  1. Passer l’application en mode maintenance pour figer la BDD
  2. Faire un dump de la BDD
  3. Exécuter les requêtes et traitements pour corriger la BDD
  4. Vérifier qu’il n’y a pas de problèmes une fois la BDD corrigée
  5. Si on détecte un problème on restaure le dump de la BDD pour revenir à l’état avant le lancement des traitements.
  6. On désactive le mode maintenance pour autoriser les utilisateurs à revenir sur l’application
1 Like

Ce mode s’apparente au mode “sans clé de licence” qui filtre les rôles pour une autre raison mais ça revient un peu au même.

Si la licence est invalide, la UI filtre le rôle ADMIN qui ne peut plus accéder qu’à l’objet LicenseKey en mise à jour. Les autres users ont un simple message d’erreur de “licence invalide, veuillez contacter le support”.

On pourrait étendre ce comportement pour tester un mode maintenance et retourner un message d’erreur spécifique “Application en maintenance, réouverture du service à 16h”, via un param system en JSON qui donne une période de maintenance, une liste de rôle autorisés à passer, un message d’erreur à afficher. Ca filtrerai les rôles sans brider leurs fonctionnalités :

PLATFORM_MAINTENANCE = {
  "enabled": true,
  "until": "2023-01-17 16:00:00",
  "msg": "The application is under maintenance until DATE",
  "permitted": ["ADMIN", "OPERATOR"]
}
3 Likes

Bonjour, a (déjà) voté!
Si le message peut être formulé en HTML c’est le nirvana (on y collera nos release-notes et/ou le plan de mise en production).

1 Like