L'API fournie par les écouteurs est de type REST ; elle fonctionne donc par l'intermédiaire des différentes méthodes du protocole HTTP:
L'identifiant des objets est fournie dans l'URL, et les données supplémentaires, quand cela est nécessaire, sont fournies dans le corps de la requête HTTP sous la forme d'un objet JSON.
Notez que cet écouteur ne permet de travailler que sur les hôtes et les clusters.
Cette page décrit les différentes actions réalisables ainsi que le format des données.
Les exemples utilisent la commande curl, disponible dans la plupart des distributions Linux ; cependant la requête HTTP peut être réalisée avec l'outil de votre choix.
|
Une requête est composée de plusieurs éléments :
Si l'authentification HTTP est configurée dans le listener, vous devez fournir les informations d'authentification lors de l'exécution de la requête HTTP. Avec curl, il s'agit de l'option -u :
$ curl -u 'root:root' -X PUT .... |
Si l'authentification SSL est configurée dans le listener, vous devez fournir le certificat correspondant lors de la requête. Avec curl, il s'agit de l'option --cacert :
$ curl --cacert certificate.crt -X PUT ... |
|
Pour mener à bien cette action, vous pouvez utiliser les méthodes PUT ou POST qui permettent d'envoyer à l'écouteur un nouvel objet
$ curl -u 'root:root' -X PUT http://localhost:7761/shinken/listener-rest/v1/hosts -d '{ "host_name": "hote-example", "use":"linux", "_SSH_USER":"root", "_SSH_KEY_PASSPHRASE":"root" }'
"core-hosts-22b48e7408a549f6895badada2fd3690" |
$ curl -u 'root:root' -X PUT http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-22b48e7408a549f6895badada2fd3690 -d '{ "address": "192.168.1.42" }'
done |
La méthode GET, lorsqu'elle est accompagnée d'un identifiant, l'objet est renvoyé au format JSON.
$ curl -u 'root:root' http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-22b48e7408a549f6895badada2fd3690 | python -mjson.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 381 100 381 0 0 72668 0 --:--:-- --:--:-- --:--:-- 76200
{
"_SE_UUID": "core-hosts-22b48e7408a549f6895badada2fd3690",
"_SSH_KEY_PASSPHRASE": "root",
"_SSH_USER": "root",
"_SYNC_KEYS": "core-hosts-22b48e7408a549f6895badada2fd3690,hote-example",
"_id": "22b48e7408a549f6895badada2fd3690",
"host_name": "hote-example",
"imported_from": "listener-rest envoy\u00e9 depuis l'adresse 127.0.0.1",
"update_date": 1527839180.6257291,
"use": "linux"
} |
La méthode GET, lorsque la requête ne contient pas d'identifiant, renvoie la liste de tous les objets créées par l'écouteur, au format JSON.
$ curl -u 'root:root' http://localhost:7761/shinken/listener-rest/v1/hosts/ | python -m json.tool
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 785 100 785 0 0 104k 0 --:--:-- --:--:-- --:--:-- 109k
[
{
"_SE_UUID": "core-hosts-22b48e7408a549f6895badada2fd3690",
"_SSH_KEY_PASSPHRASE": "root",
"_SSH_USER": "root",
"_SYNC_KEYS": "core-hosts-22b48e7408a549f6895badada2fd3690,hote-example",
"_id": "22b48e7408a549f6895badada2fd3690",
"host_name": "hote-example",
"imported_from": "listener-rest envoy\u00e9 depuis l'adresse 127.0.0.1",
"update_date": 1527839180.6257291,
"use": "linux"
},
{
"_SE_UUID": "core-hosts-bafe4fae3fc447b992daa3f10ee260f2",
"_SYNC_KEYS": "core-hosts-bafe4fae3fc447b992daa3f10ee260f2,hote-example-2",
"_id": "bafe4fae3fc447b992daa3f10ee260f2",
"address": "192.168.0.42",
"host_name": "hote-example-2",
"imported_from": "listener-rest envoy\u00e9 depuis l'adresse 127.0.0.1",
"update_date": 1527839954.469449,
"use": "shinken-full"
}
]
|
Utilisez l'action DELETE pour supprimer un objet créé par l'écouteur, en fournissant l'identifiant de l'objet à supprimer.
Notez que cette requête permet de supprimer les objets dans la base de l'écouteur ; elle ne permet pas de supprimer un objet dans le Synchronizer lui-même, pour des raisons de sécurité. |
$ curl -u 'root:root' -X DELETE http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-22b48e7408a549f6895badada2fd3690 done |