Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Scroll Ignore
scroll-pdftrue
scroll-officetrue
scroll-chmtrue
scroll-docbooktrue
scroll-eclipsehelptrue
scroll-epubtrue
scroll-htmltrue


Panel
titleSommaire

Table of Contents
stylenone



Introduction

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:

  • GET : Obtenir des informations sur un objet, ou la liste des objets
  • PUT : Créer ou modifier un objet
  • POST : Modifier un objet
  • PATCH : Modifier un objet
  • DELETE : Supprimer un objet

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.

Cette page décrit le format des URL ainsi que les différentes actions réalisables ainsi que le format des données.

Description

Format des

actions

URL

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.

Description générale d'une requête


Panel

Une requête est composée de plusieurs éléments :

  • Méthode HTTP : l'action que l'écouteur doit effectuer ; les actions disponibles sont décrites en détail dans les sections suivantes
  • Adresse et port d'écoute de l'écouteur : l'adresse est celle du Synchronizer, le port du listener REST fourni avec Shinken Entreprise est le 7761
  • Nom du listener : il s'agit du nom de l'écouteur tel que défini dans la propriété listener_name du fichier de définition de l'écouteur ; le listener fourni avec Shinken Entreprise est listener-rest
  • Version du protocole : dans cette version de Shinken Entreprise, il s'agit de la v1 ; si le protocole évolue dans de futures versions, le numéro de version évoluera également, ce qui permettra a l'écouteur de conserver la compatibilité avec la version actuelle
  • Type d'objet Shinken : le type d'objet Shinken traité par la requête. Actuellement, seuls les hôtes sont gérés.
  • Header HTTP : La liste des en-têtes HTTP ; dans le cas de l'écouteur ; nous spécifions que nous envoyons du contenu JSON
  • Données de l'objet : Les données décrivant l'objet à importer respectent le format JSON. Il s'agit d'un dictionnaire décrivant toutes les propriétés de l'objet ; Elles sont définies de la même manière que dans les fichiers CFG et décrites sur cette page.


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 :

Code Block
$ 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 :

Code Block
$ curl --cacert certificate.crt -X PUT ...



Panel

Créer un hôte


Description des actions

Dans ces différents exemples, nous utilisons des requêtes non authentifiées, sans le SSL et lancées depuis le serveur hébergeant le Synchronizer.

Obtenir la liste des hôtes créés par l'écouteur


URL à utiliserURL/shinken/listener-rest/v1/hosts
Méthode Méthodes possiblesGET

Pour mener à bien cette action, vous pouvez utiliser les méthodes PUT ou POST  qui permettent d'envoyer à l'écouteur un nouvel objet

Lors de la création d'un nouvel objet, l'écouteur renvoie l'identifiant de l'objet créé sous la forme "core-hosts-<ID>" . Cet identifiant devra être utilisé lors d'autres opérations manipulant l'objet :
Code Block
$  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"

Modifier un hôte

Code retour en cas de succès200


Cette URL associée à la méthode GET, permet d'obtenir la liste de tous les éléments présents dans l'écouteur. Le format de retour est un JSON

Info

Les éléments présents dans l'écouteur sont ceux qui ont été crée sur cet écouteur et qui n'ont pas été supprimés. Il n'est pas possible d'obtenir un hôte présent en "Staging" ou en "Zone de travail" si celui-ci n'est pas crée par l'écouteur.

Cet appel correspond à l'onglet "Liste des éléments enregistrés dans la base de données" sur la page de description de votre source.


Code Block
$ curl "
URL/shinken/listener-rest/v1/hosts/SE_UUIDMéthode possiblesPOST, PUT, PATCHPour modifier un objet existant, utilisez la méthode POST en indiquant son identifiant dans l'URL. Les propriétés présentes dans l'objet JSON transmis dans la requête remplaceront ou compléteront alors celles se trouvant dans l'objet. Les autres propriétés ne sont pas modifiées.
Code Block
$  curl -u 'root:root' -X POST http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-22b48e7408a549f6895badada2fd3690 -d '{ "address": "192.168.1.42" }'
done

Pour réécrire totalement un objet existant, utilisez la méthode PUT en indiquant son identifiant dans l'URL. Les propriétés présentes dans l'objet actuel seront supprimées et l'hôte sera recréé avec le même identifiant que l'ancien. Cela correspond à une requête DELETE et une requête PUT avec un identifiant spécifique.

Code Block$ curl -u 'root:root' -X PUT
http://localhost:7761/shinken/listener-rest/v1/hosts/
core-hosts-22b48e7408a549f6895badada2fd3690 -d '{
"
host_name":
 
"hote
-
example", address": "192.168.1.42" }' done

Obtenir les données d'un hôte

URL/shinken/listener-rest/v1/hosts/SE_UUIDMéthode possiblesGET

La méthode GET, lorsqu'elle est accompagnée d'un identifiant, l'objet est renvoyé au format JSON.

Code Block
$ curl -u 'root:root' http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-22b48e7408a549f6895badada2fd3690 X GET | python -mjsonm json.tool
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   381785  100   381785    0     0   72668104k      0 --:--:-- --:--:-- --:--:-- 76200
 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"
    }

Obtenir la liste des hôtes créés par l'écouteur


]


Créer un hôte


URL à utiliser/shinken/listener-rest/v1/hosts
Méthodes possiblesPUT
Code retour en cas de succès201


Pour mener à bien cette action, vous pouvez utiliser les méthodes PUT qui permettent d'envoyer à l'écouteur un nouvel objet

  • Lors de la création d'un nouvel objet, l'écouteur renvoie l'identifiant de l'objet créé sous la forme "core-hosts-<ID>" . Cet identifiant devra être utilisé lors d'autres opérations manipulant l'objet :

Code Block
$  curl "http://localhost:7761/shinken/listener-rest/v1/hosts"  -X PUT -d '{ "host_name": "hote-example", "use":"linux", "_SSH_USER":"root", "_SSH_KEY_PASSPHRASE":"root" }'
"core-hosts-22b48e7408a549f6895badada2fd3690"


Obtenir les données d'un hôte


URL à utiliserURL/shinken/listener-rest/v1/hosts/SE_UUID
Méthode Méthodes possiblesGET
Code retour en cas de succès200


La méthode GET, lorsque la requête ne contient pas lorsqu'elle est accompagnée d'un identifiant, renvoie la liste de tous les objets créées par l'écouteur, objet est renvoyé au format JSON.


Code Block
$ curl -u 'root:root' "http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-22b48e7408a549f6895badada2fd3690" -X GET | python -m jsonmjson.tool
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   785381  100   785381    0     0  72668 104k      0 --:--:-- --:--:-- --:--:--  109k
[
    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"
    },
    {
        "_SE_UUID": "core-hosts-bafe4fae3fc447b992daa3f10ee260f2",
        "_SYNC_KEYS": "core-hosts-bafe4fae3fc447b992daa3f10ee260f2,hote-example-2",
        "_id": "bafe4fae3fc447b992daa3f10ee260f2",
        }




Modifier un hôte


URL à utiliser/shinken/listener-rest/v1/hosts/SE_UUID
Méthodes possiblesPOST, PUT, PATCH
Code retour en cas de succès200
  • Pour modifier un objet existant, utilisez la méthode POST en indiquant son identifiant dans l'URL. Les propriétés présentes dans l'objet JSON transmis dans la requête remplaceront ou compléteront alors celles se trouvant dans l'objet. Les autres propriétés ne sont pas modifiées.

    Code Block
    $  curl "http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-22b48e7408a549f6895badada2fd3690" -X POST -d '{ "address": "192.168.
0
  • 1.42"
,
  •  }'
    done


  • Pour réécrire totalement un objet existant, utilisez la méthode PUT en indiquant son identifiant dans l'URL. Les propriétés présentes dans l'objet actuel seront supprimées et l'hôte sera recréé avec le même identifiant que l'ancien. Cela correspond à une requête DELETE et une requête PUT avec un identifiant spécifique.

    Code Block
    $  curl -X PUT http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-22b48e7408a549f6895badada2fd3690 -d '{ "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" } ]
  •  address": "192.168.1.42" }'
    done


Supprimer un hôte créé par l'écouteur


URL à utiliser/shinken/listener-rest/v1/hosts/SE_UUID
Méthode Méthodes possiblesDELETE
Code retour en cas de succès200

Utilisez l'action DELETE pour supprimer un objet créé par l'écouteur, en fournissant l'identifiant de l'objet à supprimer.

Info

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é.



Code Block
$ curl -u 'root:root' -X DELETE http://localhost:7761/shinken/listener-rest/v1/hosts/core-hosts-22b48e7408a549f6895badada2fd3690
done



Question fréquentes sur l'import d'éléments via l'API REST

Forcer l'utilisation d'un modèle

Lorsqu'on importe un hôte existant qui contient la propriété "use", la liste des modèle décrits dans la propriété "use" est ajoutée à la liste des modèles actuellement utilisée par l'hôte.

Comme lors de l'import d'hôtes via fichiers Cfg, il est possible de forcer l'utilisation d'une liste de modèles (remplacement et non ajout de modèles) en utilisant la propriété "use[FORCE]" au lieu de "use".


Plus de précisions sur l'utilisation du FORCE pour les modèles sont disponible dans la page de documentation suivante: Syntaxe des fichiers d imports