CML でノードライセンスを超過した場合のエラー
以前に CML でノードライセンスを消費するノード・消費しないノード というメモを書きました。 CML は「同時に起動出来るノード数」は「インストールされているノードライセンス数」で決定されます。 これはあくまで「同時起動数」であり、起動しなければ無制限にノードを配置出来ます。 ライセンスがインストールされていない場合の挙動はバージョンによって異なります。
| バージョン | ライセンス未インストール時の挙動 |
|---|---|
| 2.8.0 未満 | ノードは 1 台も起動出来ない (サードパーティノードであっても起動出来ない) |
| 2.8.0 以降 | ノードは 5 台まで起動出来る (6 台以上起動するとエラーになる) |
ノードライセンスを超過した場合、Web UI では以下のようなエラーが表示されます。

今回は API アクセスしている場合のエラーをメモしておきます。 API アクセスには Python + virl2-client を用います。
検証環境¶
| 対象 | バージョン |
|---|---|
| macOS | 15.3 |
| python | 3.12.7 |
| Cisco CML | 2.8.0 |
| virl2-client | 2.8.0 |
サンプルコード¶
6 台のノードを起動するサンプルコードです。
sample.py
#!/usr/bin/env python
from virl2_client import ClientLibrary
from virl2_client.exceptions import APIError
address = "10.0.0.1"
username = "admin"
password = "password"
client = ClientLibrary(address, username, password, ssl_verify=False)
client.is_system_ready(wait=True)
lab = client.create_lab()
r1 = lab.create_node("r1", "iosv", 100, 0)
r2 = lab.create_node("r2", "iosv", 200, 0)
r3 = lab.create_node("r3", "iosv", 300, 0)
r4 = lab.create_node("r4", "iosv", 400, 0)
r5 = lab.create_node("r5", "iosv", 500, 0)
r6 = lab.create_node("r6", "iosv", 600, 0)
try:
lab.start()
except APIError as e:
print(e)
実行例¶
以下のエラーになりました。