Notifications de l’API REST NorthStar
Cette fonctionnalité permet aux applications tierces de recevoir des notifications d’événements du contrôleur NorthStar en s’abonnant au service de notification push de l’API REST NorthStar. Les notifications sont envoyées par le biais de l’interface socket.io. Les types d’événements suivants sont inclus :
Noeud (nodeEvent)
Lien (linkEvent)
LSP (lspEvent)
P2MP (p2mpÉvénement)
Installation (facilityEvent)
HA (haEvent)
Le Tableau 1 répertorie le schéma pour chacun de ces types de notification d’événement.
Type d’événement |
Schéma |
Description |
|---|---|---|
nodeEvent |
topology_v2.json#/définitions/nodeNotification |
Notification d’événement de nœud. |
linkEvent |
topology_v2.json#/definitions/linkNotification |
Notification d’événement de lien. |
lspEvent |
topology_v2.json#/definitions/lspNotification |
Notification d’événement LSP. |
p2mpÉvénement |
topology_v2.json#/definitions/p2mpGroupNotification |
Notification d’événement de groupe P2MP. Les LSP de la mise à jour sont réduits à leurs valeurs lspIndex pour réduire la taille de l’événement. |
facilityEvent |
topology_v2.json#/définitions/facilityNotification |
Notification d’événement de l’installation/SRLG. |
haÉvénement |
topology_v2.json#/definitions/haHostNotification |
Notification d’événement d’état de nud. Seuls les événements de mise à jour (pas d’ajout ou de suppression) sont pris en charge. La notification n’inclut pas la liste des processus et ne contient que des informations opérationnelles. |
healthEvent |
topology_v2.json#/definitions/ healthThresholdNotification |
Notification d’événement d’état de nœud. Seuls les événements de mise à jour (pas d’ajout ou de suppression) sont pris en charge. Les notifications incluent l’utilisation du processeur, du disque, de la mémoire qui dépasse un certain seuil et l’état des processus. |
Exemples
Les exemples suivants sont écrits en Python. Les lignes précédées de # sont des commentaires.
Pour garantir un accès sécurisé, une application tierce doit être authentifiée avant de pouvoir recevoir des notifications d’événements NorthStar. Utilisez l’API d’authentification OAuth2 de NorthStar pour obtenir un jeton à des fins d’authentification. Le jeton permet de s’abonner au canal socket.io. L’exemple suivant montre la connexion à NorthStar et la demande d’un jeton.
#!/usr/bin/env python
import requests,json,sys
serverURL = 'https://northstar.example.net'
username = 'user'
password = 'password'
# use NorhtStar OAuth2 authentication API to get a token
payload = {'grant_type': 'password','username': username,'password': password}
r = requests.post(serverURL + ':8443/oauth2/token',data=payload,verify=False,auth=(username, password)) data =r.json()
if "token_type" not in data or "access_token" not in data:
print "Error: Invalid credentials"
sys.exit(1)
# The following header needs to be passed on all subsequent request to REST or Notifications
auth_headers= {'Authorization': "{token_type} {access_token}".format(**data)}
L’exemple suivant récupère les noeuds et les liens de topologie NorthStar.
#!/usr/bin/env python import requests,json,sys serverURL = 'https://northstar.example.net' # auth_headers : see Authentication Token retrieval data = requests.get(serverURL + ':8443/NorthStar/API/v2/tenant/1/topology/1/',verify=False,headers=auth_headers) topology=data.json()
L’exemple suivant s’abonne au service de notification push de l’API REST NorthStar.
#!/usr/bin/env python
from socketIO_client import SocketIO, BaseNamespace
serverURL = 'https://northstar.example.net'
class NSNotificationNamespace(BaseNamespace):
def on_connect(self):
print('Connected to %s:8443/restNotifications-v2'%serverURL)
def on_event(key,name,data):
print "NorthStar Event: %r,data:%r"%(name,json.dumps(data))
# auth_headers : see Authentication Token retrieval
socketIO = SocketIO(serverURL, 8443,verify=False,headers= auth_headers)
ns = socketIO.define(NSNotificationNamespace, '/restNotifications-v2')
socketIO.wait()