virl2-client で CML へ接続するには wait_for_lld_connected() では無く、is_system_ready() を使う
virl2-client を使うと Cisco CML を Python から操作することが出来ます。 以前に VIRL 2 Client Library で CML を Python から操作する というメモを書いたのですが、「CML へ接続する処理」部分の書き方が変わっていたので、改めて現時点で最新の方法をメモしておきます。
Python3 環境用意と virl2-client のインストール
Ubuntu 20.04LTS 上に Python3.9 をインストールするには以下のように実行します。
| apt -y install python3.9 python3.9-venv python3-pip && \
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 10
|
Python の仮想環境を用意しつつ、virl2_client をインストールするには以下を実行します。
| mkdir sample && \
cd sample && \
python3 -m venv .venv && \
source .venv/bin/activate && \
python3 -m pip install --upgrade pip virl2_client
|
以前までのサンプル
DevNet に掲載されている Examples ではログイン処理部分が下記のようになっています。
| client = ClientLibrary(address, username, password, ssl_verify=False)
client.wait_for_lld_connected()
|
しかし実際にこのコードを実行すると以下の例外が発生します。
| Traceback (most recent call last):
File "/root/sample/./sample.py", line 10, in <module>
client.wait_for_lld_connected()
File "/root/sample/.venv/lib/python3.9/site-packages/virl2_client/virl2_client.py", line 431, in wait_for_lld_connected
raise Exception("this is deprecated, use is_system_ready(wait=True), if needed")
Exception: this is deprecated, use is_system_ready(wait=True), if needed
|
新しいサンプル
GitHub に掲載されている sample.py ではログイン処理部分が下記のようになっています。 古いサンプルでは wait_for_lld_connected()
をつかっていましたが、新しいサンプルでは cl.is_system_ready()
を利用していることが分かります。
| cl = ClientLibrary("http://localhost:8001", "cml2", "cml2cml2", allow_http=True)
cl.is_system_ready(wait=True)
|
全ラボの名前を取得するサンプル
cl.is_system_ready()
を使ったサンプルとして「全ラボの名前を取得する」コードをメモしておきます。
1
2
3
4
5
6
7
8
9
10
11
12
13 | #!/usr/bin/env python3
from virl2_client import ClientLibrary
address = "10.0.0.1"
username = "admin"
password = "password"
cml = ClientLibrary(address, username, password, ssl_verify=False)
cml.is_system_ready(wait=True)
for lab in cml.all_labs():
print(lab.title)
|