La nouvelle version 1.8.3 de la plateforme Constellation disponible depuis lundi 10 juillet 2017 sur l’environnement “beta” vient tout juste d’être validée sur l’environnement “Stable” aujourd’hui-même !
Vous pouvez mettre à jour votre installation en lançant le « Web Platform Installer » sur Windows :
Constellation-Web-Platform-Installer-1.9.735.exe
Version: 1.9.735
Ou, sur Linux, en lançant la commande :
1 |
wget -O install.sh https://developer.myconstellation.io/download/installers/install-linux.sh && chmod +x install.sh && ./install.sh |
Constellation Server 1.8.3
Tout d’abord les dépendances du serveur Constellation ont été mises à jour : Json.NET 9.0.1, NLog 4.4.11, SignalR 2.2.2 et enfin la stack OWIN en version 3.1. Chacune d’entre elles apportant des correctifs et améliorations de performance.
La modification la plus importante de cette version 1.8.3 est la refonte complète de la gestion des packages au niveau du serveur. En effet, jusqu’à présent seuls les packages réels (et non virtuels) étaient gérés par le hub de contrôle. Pour les packages virtuels, il fallait exploiter l’API de Management (ou lire la configuration XML) car ils n’existaient pas sur le hub de contrôle (d’où le terme “virtuel”).
Désormais, chaque package déclaré dans la configuration d’une Constellation, qu’il soit réel ou virtuel, est chargé sur le hub de contrôle. Il n’y a donc plus de Statut en “N/A” sur la Console Constellation : tous les packages ont par défaut un état à “Unknown”. Une simple connexion sur le hub de contrôle permet donc de récupérer l’intégralité des packages d’une Constellation sans devoir combiner des informations venant de la configuration XML pour y ajouter la partie « virtuelle ».
De plus les packages virtuels initialisant des abonnements aux messages ou StateObjects sont maintenant marqués comme “connecté” sur le hub de contrôle permettant de suivre leurs états. Par exemple, un Arduino/ESP est maintenant vu comme connecté sur le hub de contrôle :
Aussi chaque package envoie désormais, en plus de son n° de version et de la libraire Constellation utilisée, le type de la libraire utilisée : il s’agit de la propriété “ConstellationClientType”.
Aussi, il est possible définir le répertoire de base de la Constellation dans lequel trouver le fichier de configuration en spécifiant la clé « Constellation.BaseDirectory ». Cela permet de séparer les binaires Constellation de sa configuration, très utile dans un environnement Docker. Un article sur le sujet sera prochainement publié.
Outre différentes optimisations du code et correction de défauts mineurs on peut aussi noter :
- Server / ControlHub : le ReloadServerConfiguration envoi la liste des packages aux sentinelles seulement connectées et « Update settings » sur les packages connectés seulement et non à tous les groupes
- Server / ControlHub : prise en charge des mises à jour de configuration des packages à volée
- Server / Management API : ajout d’un objet de synchronisation pour les I/O vers le fichier de configuration pour éviter les écritures concurrentes
- Server / Licensing : LeaseLicensing dans le domaine serveur si multi-tenant sinon dans le domaine de la constellation si mono-instance (permettant ainsi de récupérer les erreurs de licence dans la Console Log)
- Server / API REST : le timeout des sessions HTTP est maintenant de 150 secondes par défaut configurable dans le fichier de configuration
Enfin notez que le serveur 1.8.3 est rétrocompatible avec les différents composants Constellation 1.8.x, que ce soit pour la Console, les packages ou les sentinelles. Autrement dit vous pouvez mettre à jour votre serveur en 1.8.3 tout en gardant vos packages et sentinelles 1.8.x fonctionnelles.
Constellation Sentinel 1.8.3
L’autre grande nouveauté de cette nouvelle version 1.8.3 est la refonte complète du gestionnaire de processus sur les sentinelles.
Jusqu’à présent lorsqu’une sentinelle recevait sa liste des packages, elle se chargeait de télécharger et démarrer chaque package de sa liste. Si le package était déjà en fonctionnement elle levait un Warning ce qui avait tendance à “polluer” les logs notamment lorsqu’on déployé la configuration au niveau d’une Constellation. Enfin lorsqu’un package en fonctionnement était supprimé de la liste, elle fermait le processus associé.
Le problème dans ce mécanisme est que si vous arrêtez un package et que vous redéployer la configuration, par exemple en ajoutant, supprimant ou modifiant les settings d’un autre package, la liste était renvoyée à votre sentinelle qui relançait “bêtement” le package vous avez arrêté !
C’est pour cela que le fonctionnement interne de la sentinelle a été profondément revu et a conduit à la réécriture complète du mécanisme de gestion des processus. Ainsi la description de chaque package, démarré ou non, est maintenue en mémoire. Lorsqu’une sentinelle reçoit sa nouvelle liste, elle est toujours capable de charger/démarrer les nouveaux packages et supprimer/arrêter les packages retirés mais les packages existants ne sont pas redémarrés automatiquement, ils conservent leurs états.
Cette refonte a amélioré beaucoup de chose en apportant plus de fiabilité et stabilité dans le suivi du processus et elle apporte une meilleure cohérence des états de chaque package.
Aussi, comme le serveur, les dépendances ont été mises à jour : Json.NET 9.0.1, SignalR 2.2.2, NLog 4.4.11 et NLog.Windows.Form 4.2.3 pour la Sentinelle UI.
Notez enfin qu’une sentinelle 1.8.3 peut fonctionner sans aucun problème dans une Constellation 1.8.x de version antérieure tout comme une sentinelle antérieure à la version 1.8.3 pour fonctionner sur une Constellation 1.8.3.
Constellation Console 1.8.3
La Console Constellation a aussi reçu sont lot de nouveautés à l’occasion de cette nouvelle release 1.8.3.
Etant donné la refonte dans la gestion des packages sur le hub de contrôle, la Console Constellation a été impacté à ce niveau. Elle se base exclusivement sur le hub de contrôle sans devoir interroger la Management API en parallèle pour intégrer les packages virtuels ou non connectés.
Suite à la publication des nouvelles librairies Javascript et AngularJS 1.8.2 du mois dernier, les codes snippets du MessageCallbacks Explorer ont été mis à jour pour intégrer les nouveautés de ces librairies.
On notera aussi l’ajout d’un bouton pour vider la Console Log, l’ajout ConstellationClientType sur les packages ou encore du credential utilisé par une sentinelle sur la fenêtre de détail. Aussi la Console supporte pleinement les utilisateurs connectés sans droits de Management.
Mais aussi :
- Console / Package : Gestion des packages virtuels avec un statut Unknown, menu contextuel synchronisé et mise à jour de l’activité pour les packages virtuels
- Console / Packages : « Update Settings » affiché dans le menu contextuel si le package est connecté et démarré (package virtuel compris)
- Console / Packages : bugfix sur le déploiement de package avec un setting de type DateTime (module $filter non injecté dans le contrôleur principal)
- Console / Packages : bugfix sur le déploiement de la configuration une fois que le SetRecoveryOption est terminé et non en parallèle
- Console : déconnexion des deux hubs (consumer et controller) si l’un des deux est déconnecté (cas très rare où l’un des deux hubs parvient à se reconnecter et pas l’autre)
- Console : Mise à jour de l’API Constellation Javascript & AngularJS en version 1.8.2 et de la librairie SignalR 2.2.2
Autres nouveautés
La librairie .NET pour les packages a été mise à jour en version 1.8.3.17190, et est disponible sur le repository Nuget. Cette nouvelle version envoie le “ConstellationClientType” ( net40 » ou « net45 ») lors de la connexion de votre package à Constellation. De plus les dépendances ont été mises à jour vers JSON.NET 9.0.1 et SignalR 2.2.2.
Notez enfin qu’un package exploitant l’API 1.8.3 peut fonctionner sans aucun problème sur une Constellation 1.8.x de version antérieure tout comme un package antérieure à la version 1.8.3 peut fonctionner sur une Constellation 1.8.3.
Une nouvelle version SDK est également disponible. Il intègre une mise à jour des templates de projet Constellation pour prendre en compte les dernières versions des API 1.8.3.
Pour finir le Web Platform Installer pour Linux a lui aussi été mis à jour. Il garde en mémoire le jeton d’authentification entre les différents installeurs Server, Sentinel et Console de façon à éviter de devoir se ré authentifier à chaque composant mais surtout le pilotage des services Server et Sentinel dans Supervisor est désormais basé sur “supervisorctl” pour une gestion plus fine des services.
Pour consulter le changelog complet de cette nouvelle version cliquez ici. N’hésitez pas non plus à remonter vos feedbacks sur le forum.
Démarrez la discussion sur le forum Constellation