Cisco ACI で acitoolkit を使って物理インターフェイスをシャットダウンする
acitoolkit を使って物理インターフェイスをシャットダウンする手順をメモしておきます。
前提として acitoolkit をインストールしておきます。
acitoolkit から参照される認証情報用のファイルである credentials.py
を作成しておきます。
| cat << EOF > credentials.py
URL="https://10.0.0.1"
LOGIN="admin"
PASSWORD="password"
EOF
|
以下のようなスクリプトを用意します。 acitoolkitcli には物理インターフェイスをシャットダウンするインターフェイスが存在するのですが、現状の acitoolkit 本体には「物理インターフェイスをシャットダウンする」為の API が存在しないようですので、直接 URL を指定して JSON を Post してしまいます。
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 | import json
import acitoolkit.acitoolkit as aci
def main():
"""
Shutdown the interface
:return: None
"""
# Get all the arguments
description = 'Shutdown the interface.'
creds = aci.Credentials('apic', description)
creds.add_argument('-o', '--pod')
creds.add_argument('-n', '--node')
creds.add_argument('-i', '--interface')
args = creds.get()
# Login to the APIC
session = aci.Session(args.url, args.login, args.password)
resp = session.login()
if not resp.ok:
print('%% Could not login to APIC')
# Create the JSON Dictionary
json_dict = json.loads('{"fabricRsOosPath":{"attributes":{"tDn":"topology/pod-' + args.pod + '/paths-' + args.node + '/pathep-[eth' + args.interface + ']","lc":"blacklist"},"children":[]}}')
# Push the JSON to the APIC
resp = session.push_to_apic("/api/node/mo/uni/fabric/outofsvc.json", json_dict)
if not resp.ok:
print('%% Error: Could not push configuration to APIC')
print(resp.text)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
pass
|
シャットダウンしたいインターフェイスを指定します。 該当インターフェイスを特定する為に Pod 番号、Node ID、インターフェイス番号を指定します。
| python sample.py --pod 1 --node 1000 --interface 1/1
|