Sommaire

Le hub de contrôle permet d’accéder à différentes fonctions de pilotage de votre Constellation.

Voyons en détail comment contrôler votre Constellation depuis un package C#/.NET.

Accéder au hub de contrôle

Tout d’abord il faut déclarer que votre package souhaite un accès au hub de contrôle. Pour cela vous devez ajouter l’attribut “EnableControlHub” à true dans le manifeste de votre package (fichier PackageInfo.xml).

image

Ensuite, il faut que votre package se connecte à votre Constellation avec une “Access Key” qui possède l’autorisation d’accès au hub de contrôle.

Il faut ajouter l’attribut “enableControlHub” à true sur un de vos credentials et affecter ce credential à votre package :

image

Ainsi votre package pourra accéder au hub de contrôle de contrôle. Vous devriez d’ailleurs toujours tester la propriété “HasControlManager” pour gérer les erreurs où l’accès au hub de contrôle n’est possible.

Suivre les sentinelles et leurs statuts

Il y a deux manières d’obtenir la liste des sentinelles enregistrées dans votre Constellation :

  • RequestSentinelsList : vous retourne la liste des sentinelles en une seule fois par l’événement “SentinelsListUpdated
  • RequestSentinelUpdates : vous retourne l’état de chaque sentinelle dans l’événement “SentinelUpdated” (cet événement est levé pour chaque sentinelle)

En principe pour récupérer la liste des sentinelles de votre Constellation, vous utiliserez toujours la première méthode.

Par exemple :

Vous pouvez également vous abonner en temps réel aux mises à jour des sentinelles de votre Constellation.

Pour cela il faut activer la réception des mises à jour :

Puis attacher un handler sur l’événement “SentinelUpdated” qui se produit à chaque mise à jour d’une sentinelle :

Superviser les packages

Récupérer les packages d’une sentinelle

Pour récupérer la liste des packages qui sont déployés sur une sentinelle vous devez attacher un handler sur l’événement “PackagesListUpdated” et appeler la méthode “RequestPackagesList” en spécifiant le nom de la sentinelle.

Pour exemple :

Chaque “PackageInfo” contient différentes informations sur l’instance du package (description du package, état du package, état de la connexion, version du package, etc…) :

Suivre l’état des packages

Vous pouvez aussi vous abonnez aux mises à jour des états des packages :

Vous pourrez ensuite être notifier de tout changement d’état de vos packages dans votre Constellation :

Suivre la consommation des packages

Vous pouvez aussi récupérer la consommation des ressources (CPU et RAM) de vos packages :

Par exemple, on pourrait écrire un warning si un package consomme plus de 50% du CPU :

Contrôler les packages

Vous pouvez démarrer un package sur une sentinelle avec la méthode “StartPackage” :

Ou encore l’arrêter avec la méthode “StopPackage” :

Pour redémarrer (Stop puis Start) un package sur une sentinelle donnée, utilisez la méthode “RestartPackage” :

Enfin pour mettre à jour un package, utilisez la méthode “ReloadPackage”.

Un “reload” stoppe le package, ordonne à la sentinelle de re-télécharger le package sur le serveur, le déploie en local avant de le démarrer.

Accéder aux logs en temps réel

Pour récupérer les logs produits par vos sentinelles et packages dans votre Constellation, activez la propriété suivante :

Il suffit ensuite d’attacher handler sur l’événement “LogEntryReceived “.

Vous recevrez en paramètre un objet “LogEntry” qui contient toutes les informations sur un log (le message, la date, le couple Sentinelle/Package à l’origine du log et la sévérité du message).

Par exemple :

Notez qu’ici on logue dans Constellation (“WriteInfo”) les logs des autres packages (d’où le <if>). Ca n’a pas de sens, c’est juste pour l’exemple !

Récupérer la description des packages

Comme vous le savez, tous les MessageCallbacks ainsi que les types personnalisés utilisés en entrée ou en sortie sont décrits dans un PackageDescriptor tout comme les types personnalisés des StateObjects.

En vous connectant au hub de contrôle vous pouvez récupérer le PackageDescriptor de chaque package. Par exemple :

Purger les StateObjects

Pour supprimer tous les StateObjects d’un package déployé une sentinelle :

Vous pouvez aussi spécifier le nom du StateObject, pour supprimer un StateObject en particulier (identifié par son nom) :

Ou encore, tous les StateObjects d’un type particulier d’une instance de package :

Recharger la configuration

Vous pouvez recharger et déployer la configuration Constellation en invoquant la méthode :

Vous pouvez également passer un booléen pour indiquer si il faut déployer la configuration (c’est à dire pousser la configuration sur chaque sentinelle et package). Par défaut, la valeur est à “true” (la configuration est déployée).

Autrement :

Accéder au hub de contrôle avec le ControlManager
Editer la page sur GitHub
Étiqueté avec :    

Démarrez la discussion sur le forum Constellation