Bonjour,
Pour apporter les réponses en attendant que j’écrive la documentation sur les API REST de Constellation, voici globalement ce qu’on peut dire de façon rapide :
Tout d’abord il existe 3 API REST:
- l'API "Constellation" pour les packages virtuels (envoi et réception de message, Push & Request/Subscribe de SO, GetSettings, WriteLog ...)
- l'API "Consumer" pour les consommateurs (envoi et réception de message et Request/Subscribe de SO seulement)
- l'API "Management" pour l'administration du serveur (gestion des sentinels, packages, etc...)
L’invocation se fait en HTTP sur l’URI http(s)://{votreServerConstellation}:{port}/rest/{api}/{method}
({api} étant soit “constellation”, soit “consumer” ou soit “management”).
Pour chaque requête HTTP vous devez vous identifier en passant les paramètres “SentinelName”, “PackageName” et “AccessKey”.
Dans le cas de l’API “Management”, SentinelName doit être égal à “Management” idem pour l’API Consumer, SentinelName doit être égal à “Consumer”. Puis ensuite le PackageName est un “friendly name” que vous fixez à ce que vous voulez.
Dans le cas de l’API “COnstellation”, le SentinelName et PackageName doit être correctement déclaré dans votre fichier de configuration. On appelle cela un package “virtuel”.
A noter que ces 3 paramètres sont soit passés des l’URI (querystring) ou soit dans les headers HTTP de votre requête.
La liste des méthodes (brutes) de l’API Constellation :
- CheckAccess
- SendMessage(SendMessageRequest)
- SendMessage(ScopeType, key, data, args = null)
- SendMessageWithSaga(ScopeType, key, data, args = null) -> return sagaId
- PushStateObject(PushStateObjectRequest)
- PushStateObject(name, value, type = null, lifetime = 0)
- PurgeStateObjects(name = null, type = null)
- WriteLog(message, level = Info)
- GetSettings() -> return key/value list
- SubscribeToMessage(subscriptionId = null) -> return subId
- SubscribeToMessageGroup(group, subscriptionId = null) -> return subId
- GetMessages(subscriptionId, timeout = 60)
- RequestStateObjects(sentinel, package, name, type) -> list of StateObject
- SubscribeToStateObjects(sentinel, package, name, type, subscriptionId = null) -> return subId
- GetStateObjects(subscriptionId, timeout = 60)
- DeclarePackageDescriptor(packageDescriptor) (POST)
Pour répondre à votre question, pour récupérer un SO, vous allez utiliser la méthode “RequestStateObjects”, par exemple pour demander tous les SO dont le nom est “Temperature”
http://ip_constellation:port/rest/constellation/RequestStateObjects?SentinelName=Test&PackageName=Test&AccessKey=key&name=Temperature
Si vous voulez tous les SO du package HWMonitor de toutes vos sentinelles :
http://ip_constellation:port/rest/constellation/RequestStateObjects?SentinelName=Test&PackageName=Test&AccessKey=key&package=HWMonitor
En réponse vous obtenez la liste des SO au format JSON qui match avec votre requête.
Vous pouvez aussi vous “inscrire” aux modifications de ces SO. Pour cela, vous faites la même requête sur la méthode “SubscribeToStateObjects”.
Exemple, je m’abonne ici aux SO du package HWMonitor qui tourne sur ma machine (sentinelle) nommée “PC-SEB”
http://ip_constellation:port/rest/constellation/SubscribeToStateObjects?SentinelName=Test&PackageName=Test&AccessKey=key&sentinel=PC-SEB&package=HWMonitor
En réponse vous obtenez un ID d’abonnement.
Vous pouvez maintenant appeler la méthode “GetStateObjects” en passant l’ID d’abonnement :
http://ip_constellation:port/rest/constellation/GetStateObjects?SentinelName=Test&PackageName=Test&AccessKey=key&subscriptionId={id}
C’est une requête en “long-polling”, c’est à dire que tant qu’il n’y a pas de SO qui ont été mis à jour, la requête attend (60 secondes par défaut) ce qui éviter de d’interroger en boucle le serveur.
Voilà j’espère avoir pu vous mettre sur la piste.
D’ici le mois de Juin, l’ensemble de la documentation sur les API REST sera disponible avec explication et détail de l’ensemble des paramètres agrémenté de nombreux exemples.