CMLでリンクの遅延などを一覧表示するPythonスクリプト
以前にPython で CML2 上のリンク情報を取得する (virl2-client 利用版)というメモを書きました。リンクのLatencyなどの値はLink conditioning として取得することが出来ます。今回は全リンクのBandwidth,Latency,Loss,Jitterを表示するサンプルをメモします。
検証環境¶
| 対象 | バージョン |
|---|---|
| macOS | Sequoia 15.5 |
| Python | 3.13.5 |
サンプルスクリプト¶
from rich import box
from rich.console import Console
from rich.table import Table
from virl2_client import ClientLibrary
URL = "https://10.0.0.1"
USER = "admin"
PASS = "password"
cml = ClientLibrary(URL, USER, PASS, ssl_verify=False)
cml.is_system_ready(wait=True)
console = Console()
table = Table(title="CML All Links", box=box.MINIMAL_DOUBLE_HEAD)
table.add_column("Lab")
table.add_column("Link ID")
table.add_column("Node-A")
table.add_column("Node-B")
table.add_column("Bandwidth")
table.add_column("Latency")
table.add_column("Loss")
table.add_column("Jitter")
for lab in cml.all_labs():
for link in lab.links():
bandwidth = str(link.get_condition().get("bandwidth", ""))
latency = str(link.get_condition().get("latency", ""))
loss = str(link.get_condition().get("loss", ""))
jitter = str(link.get_condition().get("jitter", ""))
sstart = ""
send = ""
if bandwidth != "" or latency != "" or loss != "" or jitter != "":
sstart = "[bold red]"
send = "[/bold red]"
table.add_row(
f"{sstart}{lab.title}{send}",
f"{sstart}{link.id}{send}",
f"{sstart}{link.node_a.label} {link.interface_a.label}{send}",
f"{sstart}{link.node_b.label} {link.interface_b.label}{send}",
f"{sstart}{bandwidth}{send}",
f"{sstart}{latency}{send}",
f"{sstart}{jitter}{send}",
f"{sstart}{loss}{send}",
)
console.print(table)
実行例¶
実行例は以下の通りです。
> python sample.py
SSL Verification disabled
CML All Links
╷ ╷ ╷ ╷ ╷ ╷ ╷
Lab │ Link ID │ Node-A │ Node-B │ Bandwidth │ Latency │ Loss │ Jitter
═══════════╪══════════════════════════════════════╪══════════════════╪══════════════════╪═══════════╪═════════╪══════╪════════
Topology1 │ 0cb9f0c0-511b-45c0-9817-6a51676bb2d1 │ dev4 Ethernet0/1 │ dev5 Ethernet0/0 │ 10 │ 20 │ 30 │ 40
Topology1 │ 43ccc981-b4e1-4942-9e87-5b96c5a46cce │ dev1 Ethernet0/1 │ dev2 Ethernet0/0 │ 10 │ │ │
Topology1 │ 7a4d7fbf-7b27-4802-9430-e016b6ba5d6a │ dev2 Ethernet0/1 │ dev3 Ethernet0/0 │ │ 20 │ │
Topology1 │ b382f412-92ef-4677-8748-0bcb9b2c54e4 │ dev3 Ethernet0/1 │ dev4 Ethernet0/0 │ │ │ │
╵ ╵ ╵ ╵ ╵ ╵ ╵
Bandwidth,Latency,Loss,Jitterの値が設定されている場合、行を赤色で表示します。
