Driver API (import-context-graph)¶
Info
Disponible uniquement en édition Pro.
Canopsis embarque un petit programme en ligne de commande permettant d'interroger une API externe afin de compléter son référentiel interne. Il peut être exécuté à la main ou via un conteneur Docker.
Ce programme se situe :
- à l'emplacement
/opt/canopsis/bin/import-context-graphlors d'une installation par paquets. - dans le conteneur
pro/import-context-graphen Docker.
Utilisation¶
Options¶
| Option | Argument | Description |
|---|---|---|
-help |
Lister toutes les options acceptées | |
-d |
Activer le mode debug | |
-c |
/chemin/du/fichier.yml |
Indiquer le chemin complet du fichier de configuration |
Variables d'environnement¶
L'identifiant et le mot de passe de connexion à l'API sont défini via des variables d'environnement :
EXTERNAL_API_USERNAMEpour l'identifiantEXTERNAL_API_PASSWORDpour le mot de passe
Seule l'authentification basique est supportée.
Configuration¶
Le format de fichier de configuration est le YAML. Il doit être entièrement rédigé à partir du JSON retourné par l'API externe.
Un exemple de fichier de configuration est disponible sur le dépôt Canopsis Pro. Ou alors consulter l'exemple ci-après.
Ce fichier de configuration doit comprendre trois sections :
apiqui permet d'indiquer les propriétés de la requête HTTP à envoyer à l'API.importqui permet de spécifier les paramètres de l'import.mappingqui permet de spécifier les associations entre les champs de l'entité et la réponse de l'API.
Concernant les types d'actions d'import :
action: Action effectuée sur l'entité reçue dans la réponse de l'APIcreate: Création de l'entité en baseset: La même chose quecreatemais peut être partielle si l'API ne retourne pas tous les champsupdate: Mise à jour de l'entité en base. Si l'entité n'existe pas, aucune modification ne sera appliquéeenable: Active l'entité (passage àtruedu champenablede l'entité en base)
missing_action: Action effectuée sur les entités manquantes de la réponse de l'APIdelete: Suppression de l'entité en basedisable: Désactive l'entité (action inverse de l'actionenable)- (chaîne vide) : le paramètre
missing_actionpeut ne pas avoir d'action et donc ne rien faire
Pour plus de détails, référez-vous à la documentation d'import de contexte disponible dans Swagger.
Exemple¶
Prenons l'exemple d'une API externe retournant le JSON ci-dessous :
[
{
"ci": "composant1",
"nom": "composant 1",
"societe": "CAPENSIS",
"statut": "actif",
"responsable": "Service technique",
"localisation": "DC1",
"commentaire": "Il s agit du composant 1",
"impact": 5
}
]
Le fichier de configuration avec les commentaires explicatifs :
# Ce bloc permet de spécifier les propriétés de la requête HTTP à envoyer à l'API externe.
api:
# Spécifier l'URL de l'API
url: http://mon.api/
# Spécifier le type de requête HTTP (GET, POST, PUT etc)
method: GET
# Spécifier les en-têtes de la requête
headers:
Content-Type: application/json
# Activer (false) ou désactiver (true) la vérification de la chaîne de certification TLS du serveur
insecure_skip_verify: false
# Ce bloc spécifie les paramètres de l'import
import:
# Définit la source de l'import à l'entité
source: import-context-graph
# Définit le type d'action à effectuer sur les entités reçues de la réponse de l'API
# Valeurs possibles : create, set, update, enable
action: create
# Définit le type d'action à effectuer sur les entités manquantes de la réponse de l'API
# Les entités manquantes sont trouvées par source d'import
# Valeurs possibles : delete, disable ou vide
missing_action: disable
# Ce bloc spécifie l'association entre les champs de l'entité et la réponse de l'API
# Le champ _id est requis, les autres champs sont optionnels
# Seul le JSON qui contient un tableau d'objets est pris en charge
mapping:
# Association de l'ID de l'entité
_id: ci
# Association de la description
description: commentaire
# Association du niveau d'impact
impact_level: impact
# Association d'informations complémentaires
infos:
nom:
value: nom
description: nom
societe:
value: societe
description: societe
statut:
value: statut
description: statut
responsable:
value: responsable
description: responsable
Exécution du programme :
export EXTERNAL_API_USERNAME=test
export EXTERNAL_API_PASSWORD=test
/opt/canopsis/bin/import-context-graph -c import-context-api.yml
2021-09-29T10:39:46+02:00 INF git.canopsis.net/canopsis/canopsis-pro/pro/go-engines-pro/cmd/import-context-graph/main.go:65 > import finished deleted=0 exec_time=3.784369ms updated=1
Attention
Cet exemple d'exécution ne répond pas aux bonnes pratiques de sécurité. Veillez donc à bien adapter cette exécution selon votre politique de sécurité interne.
Dans le cadre d'un usage via Docker, il est conseillé d'utiliser "Docker Secrets" ou une autre solution de coffre-fort.
Résultats dans Canopsis :


