Sortie en Mars 2016, Constellation 1.8 apporte beaucoup de nouveautés : une nouvelle Console, une API de Management, un processus de déploiement plus simple,  un SDK plus riche, un nouveau hub de “consommation”, des autorisations pour les accès, des nouveautés dans les APis, etc.

Petit tour d’horizon de ce qui a changé …

Conceptuellement

Un login/password pour générer des AccessKeys

Pour se connecter à Constellation vous devez utiliser une “AccessKey”, un chaine de caractère de votre choix, si possible assez longue.

Il est toujours compliqué de mémoriser ces clés et pour simplifier cela l’idée est d’utiliser l’empreinte SHA1 d’un couple login + mot de passe comme Access Key.

Prenons un exemple très simple, votre login est “admin” et votre mot de passe “P@ssw0rd”.  Nous réalisons donc le SHA1(“adminP@ssw0rd”) ce qui donne “a5761adf00e4060f05fab7017b32905cc9e5d540”.

Désormais vous n’avez plus qu’à mémoriser le login/password  pour retrouver la clé d’accès “a5761adf00e4060f05fab7017b32905cc9e5d540” qui sera déclarée dans les credentials de votre Constellation.

Vous trouverez donc dans cette nouvelle version plusieurs pages de login (dans la Console, dans le SDK, dans les installeurs) vous permettant de définir vos clés d’accès en utilisant le SHA1 d’un couple login/password.

Hub de consommation et autorisations sur les clés d’accès

Jusqu’à la version 1.8, il y avait 3 hubs :

  • Le hub des Sentinels, reservé aux sentinelles
  • Le hub “Constellation” pour les packages (principalement pour les WriteLog, GetSettings, Messaging Send/Receive et le Push de StateObject)
  • Le hub de contrôle (ControlHub) pour le contrôle de la Constellation (gestion des sentinels/packages, accès aux logs temps réel, etc…).

Les API Javascript n’avaient accès qu’au hub de contrôle, car le hub Constellation est seulement réservé aux packages.

L’interrogation des StateObjects (Request et/ou Subscribe) ne pouvait se faire que sur le hub de contrôle car il était acté qu’un package ne pouvait consulter les StateObjects des autres packages pour des raisons de sécurité.

En 1.8 cela a été revu car la situation amener deux problèmes :

  1. Un package qui veut s’attacher à des StateObjects publiés par d’autre package doit nécessairement se connecter au hub de contrôle (et donc avoir les droits pour cela) ce qui lui permet également d’arrêter des packages, de purger des StateObjects des autres, etc..
  2. Une page Web (API JS) doit elle aussi avoir une clé d’accès au hub de contrôle pour lire un StateObject dans la Constellation. Autrement dit vous ne pouvez pas mettre à disposition une page Web connectée à votre Constellation cela veut dire que n’importe qui peut récupérer dans votre source HTML une clés d’accès “Full trust” !

C’est pourquoi en 1.8 il y a plusieurs changement conséquents :

Réduction du périmètre du hub de contrôle

C’est simple le hub de contrôle ne peut plus envoyer/recevoir des Messages ni interroger/s’abonner au StateObjects. En clair toutes ses méthodes ont été supprimées. Le hub de contrôle ne fait plus que du pilotage (gestion des sentinels/packages, accès aux logs temps réel, etc…).

A moins de développer une page Web de supervision/contrôle de votre Constellation, vous n’avez plus besoin de vous connecter à ce hub depuis votre code Javascript.

Idem pour vos packages C#, vous pouvez retirer l’attribut “EnableControlHub” de votre manifest sauf si vous exploiter des fonctionnalités du hub de contrôle.

Nouveau hub : le Consumer Hub

Un nouveau hub a été introduit dans Constellation 1.8 : le hub de consommation qui reprend les méthodes supprimées du hub de contrôle.

En vous connectant sur ce hub vous pouvez :

  • Envoyer et recevoir des messages
  • Interroger / vous abonner à des StateObjects

Ce hub est spécialement conçu pour des pages Web qui viennent interagir avec la constellation mais sans être considérer comme des packages.

Accès aux StateObjects depuis le hub “Constellation”

L’interrogation (Request) ainsi que l’abonnement (Subscribe) aux StateObjects est désormais possibles directement depuis le hub “Constellation”.

Vous pouvez donc ajouter des [StateObjectLink] dans votre code pour lier vos propriétés .NET à des StateObjects de votre Constellation  de devoir vous connecter au hub de contrôle.

Les autorisations : StateObjects, Messages & groupes

Reste le dernier problème à gérer : maintenant n’importe quel package peut accéder aux StateObjects de votre Constellation, idem pour une page Web ou autre client connecté sur le hub de consommation. Ils peuvent aussi envoyer des messages à n’importe quel package ou groupe dans votre Constellation.

Pour résoudre, Constellation 1.8 introduit la notion d’autorisation.

Chaque clé d’accès définie dans un “credential” dans votre configuration peut définir des autorisations spéciales.

Quand vous créez une clé standard (sans accès au hub de contrôle ni à l’API de management), par défaut elle peut accéder à l’ensemble des StateObjects de votre Constellation ou même envoyer n’importe quel message :

Vous pouvez maintenant ajouter une section “authorizations” à vos credentials dans laquelle vous pouvez définir les autorisations pour les messages, les StateObjects mais également les groupes dans lequel votre credential à le droit de rejoindre.

Pour ces trois périmètre vous pouvez redéfinir l’autorisation par défaut et ajouter des autorisations explicites pour autoriser ou interdire.

Prenons un exemple, je veux que “maCle” ne puisse envoyer QUE des messages “SetTargetTemperature” au package “Nest” et qu’elle puisse SEULEMENT accéder à TOUS les StateObject du package “Paradox” :

Pour plus détail sur les autorisations, je vous invite à consulter cet article.

La nouvelle Console

C’est certainement la nouveauté la plus visible ! Le “Constellation Control Center” quasi-inchangé depuis la toute 1ère version de Constellation début 2014, se réinvente pour devenir la “Constellation Console”, une application Web toujours full Client-side (HTML + Javascript) qui exploite l’API Constellation pour AngularJS afin de proposer une console d’administration plus simple, plus performante et plus intuitive.

image

Cette nouvelle console réunie dans une seule page (application SPA) :

  1. La gestion des sentinelles
  2. La gestion des packages
  3. Les logs temps réel de la Constellation
  4. Le StateObject Explorer complètement revu pour l’occasion
  5. Le MessageCallback Explorer avec le support des Sagas
  6. L’administration du serveur Constellation : anciennement portée par le “Configuration Manager”

Généralité

La nouvelle Console n’a plus besoin de connaitre la clé d’accès pour se connecter à Constellation. Elle propose une page de login (qui réalise en fait un SHA1 de l’utilisateur/mot de passe pour déterminer la clés d’accès à utiliser)

Page de login

La nouvelle Console a été pensée “Responsive” avec des menus contextuels sur les boutons de contrôle pour plus d’options :

image  image

Chaque page dispose d’un moteur de filtre permettant de retrouver très vite ce que vous chercher :

Un moteur de recherche sur chaque page pour retrouver ce que vous cherchez facilement

Chaque page a été revue à l’image de la page des sentinelles ou des popups d’information :

imageimage

La console de log a été révisée pour être mieux intégrée dans le nouvelle Console. Il est désormais possible de mettre des filtres pour n’afficher que les logs que vous souhaitez voir et vous avez à tout moment des notifications en cas d’erreur ou warning :

Filtrage des logs

Notification des warnings et erreurs dans la barre du haut

StateObject Explorer

L’explorateur de StateObject a été totalement réécrit. Il exploite désormais l’API REST du hub de consommation pour “dumper” l’intégralité des StateObjects de votre Constellation beaucoup plus rapidement.

Il n’y a plus de “template HTML” par type de StateObject mais un affiche identique pour tous avec toujours le moteur de recherche intégré pour retrouver rapidement le ou les StateObjects que vous cherchez.

image

 

Sur chaque StateObject est possible d’ouvrir une fenêtre de détail affichant toutes les informations du StateObjects et la valeur du StateObjects proprement formatée avec coloration syntaxique.

Vous pouvez également, depuis cette fenêtre, vous abonner en temps réel aux mises à jour du StateObjects :

image

MessageCallback Explorer

L’explorateur de MessageCallback reste semblable à l’ancienne version mais dispose maintenant d’un moteur de filtre :

image

Sur chaque type (d’entrée ou de réponse) vous avez la possibilité d’ouvrir une fenêtre de description :

image

De plus il est également possible de “générer” du code pour .NTE, MF, Arduino, Javascript, Python, HTTP, etc.. pour connaitre comment envoyer tel ou tel message :

image

Enfin, vous avez maintenant des notifications sur la réception des messages de réponse des sagas :

image

Avec une fenêtre de visualisation de la réponse :

image

Server Management

Constellation 1.8 expose une “Management API”, une PAI REST permettant de gérer la configuration du serveur. La nouvelle Console exploite cette nouvelle API pour vous permettre d’administrer votre Constellation directement depuis la console.

Package RepositoryEdition de la configuration

Et bien plus encore avec la prochaine release 1.8.1 de la Console qui inclura les fonctionnalités de l’ancien “Configuration Manager” 1.7.

Un process de déploiement plus simple

Le setups ont complètement revus pour être beaucoup plus simple.

Un installeur <tout en un> nommé “Constellation Platform” permet de déployer et configurer tous les composants Constellation (le serveur, la console, les sentinelles et le SDK) depuis un seul installeur.

image

Grâce à l’API de Management, il est possible d’enregistrer directement sa sentinelle depuis l’assistant d’installation des sentinelles (Service ou UI) :

image

Un SDK plus riche

Le SDK Constellation a également été retravaillé. Il est désormais compatible avec toutes les éditions de Visual Studio (Express, Community, Pro, Ultimate) pour les versions 2012, 2013 et 2015 !

Les templates de projets ont été mis à jour avec les dernières libraires Constellation :

image

Le menu contextuel a été revu :

image

Il est possible maintenant de publier son package sur sa Constellation directement depuis Visual Studio :

image

La console peut être directement lancée depuis Visual Studio :

image

Vous pouvez également éditer directement depuis Visual Studio le fichier de configuration de votre Constellation.

image

Le générateur de code basé sur les MessageCallbacks de votre Constellation a entièrement été revu :

Code Generator 1.8

Les principales nouveautés en vrac

Constellation Server

  • Nouveau hub “Consommer” accessible également via un API HTTP
  • Nouvel API HTTP de Management
  • Possibilité de supprimer des StateObjects via le hub de contrôle (plus de restriction sur l’état du package)
  • Nouveau processus d’enregistrement des sentinelles
  • Possibilité d’ajouter des “targets” dans la configuration des logs du serveur pour rediriger les logs d’un package en particulier
  • Processus 64 bits
  • Permet d’auto-héberger la Console Constellation (balise <fileServer>) évitant d’avoir à installer un serveur Web type Apache, IIS, etc..
  • Possibilité de spécifier le type des valeurs d’un StateObject sur l’API HTTP Constellation
  • Nouveau middleware de gestion des authentification

Constellation Sentinels

  • Possibilité d’envoyer des ordres de contrôle de package directement via la “command line” (ex: démarrer manuellement un package via un raccourci bureau)
  • Une seule instance de sentinelle par machine
  • Le “CurrentDirectory” d’un package est le répertoire dans lequel il est déployé par la sentinelle (et non System32)

Package Manifest

  • Possibilité de définir des valeur par défaut
  • Possibilité de définir des <content> par défault

Package

  • L’API .NET n’exploite plus les <appSetting> en mode “local” mais une section Constellation identique à celle sur le serveur (avec support des <content>)
  • Les Settings sont chargés du serveur, et “comblés” avec les valeurs de l’App.config (si pas ignoré) puis avec les valeurs par défaut du manifest (si pas ignoré)
  • Les méthodes pour l’envoi de messages et de sagas sont totalement revu
  • Un MessageCallback peut retourner un objet comme réponse d’une saga
  • Changement de namespace
  • Les StateObjectLink peuvent être posés sur les propriétés statiques, privées ou classe hérité des notifier

Laisser un commentaire