Cisco ACI のイベントをリアルタイムで検知する Python サンプルスクリプト
以前に Cisco ACI のイベントをリアルタイムで検知する Node.js サンプルスクリプト というメモを書きました。 このメモの Python バージョンを作ったので、改めてメモしておきます。
acitoolkit に依存している為、先にインストールしておきます。
credentials.py
credentials.py
に APIC へのログイン情報を保存しておきます。
| URL="https://10.0.0.1"
LOGIN="admin"
PASSWORD="password"
|
main.py
以下がスクリプトの本体です。 /api/node/class/eventRecord.json?subscription=yes
で eventRecord.json
を Subscribe します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 | import sys
import json
import time
from acitoolkit.acitoolkit import Session, Credentials, Tenant
import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()
def do_something(event_data):
for obj in event_data['imdata']:
for key in obj:
if "Rs" not in key and key not in not_interesting_classes:
print("%s:%s was %s" % (key, obj[key]['attributes']['dn'], obj[key]['attributes']['status']) )
if __name__ == "__main__":
description = 'APIC credentials'
creds = Credentials('apic', description)
creds.add_argument('-d', "--debug", default=None, help='Enable Debug mode')
args = creds.get()
# Now, we log into the APIC
session = Session(args.url, args.login, args.password)
response = session.login()
if response.ok is False:
print(response.content)
else:
print("Successfully connected to %s" % args.url)
# Subscribe to each one
url = "/api/node/class/eventRecord.json?subscription=yes"
session.subscribe(url, only_new=True)
print("Waiting for events...")
while(True):
if session.has_events(url):
event = session.get_event(url)
print(event)
time.sleep(0.1)
sys.exit(0)
|