はじめに
本ドキュメントでは、CML で使用できるスクリプトを作成する例として、ラボのスタートを行うスクリプトを作成した際の流れについて記載します。
※本ドキュメントに記載している方法やスクリプトは例となります。推奨の方法を示しているというドキュメントではありません。
ラボをスタートする start.py を作る
CML に対して使用できるサンプルスクリプトを提示している以下のページには、停止しているラボをスタートするスクリプトがありませんでした。
Cisco Modeling Labs (CML) API Demo for simulation lifecycle
そこで、ラボをスタートするスクリプト start.py を作成します。
スクリプトを0から作成することも可能ですが、今回はサンプルスクリプトが存在するため、delete.py をベースに作成することにします。
delete.py は、def get_token と def delete_lab が記述されています。認証のTokenを取得することは、今から作成する start.py でも必要となるため、その部分は残し、def delete_lab を変更することでラボをスタートするスクリプトを実現する方針とします。
def delete_lab に含まれる以下の部分が削除のための requests 部分となるため、Start するコードに書き換えます。
api_call = "/v0/labs/" + deletelabid
url = url + api_call
response = requests.delete(url, headers=headers, verify=False)
CML 2.x API で確認すると、ラボの削除は以下の記述であることも確認できます。
同様に、CML 2.x API で確認すると、ラボのスタートは以下の記述であることも確認できます。
よって、以下のように def start_lab を作成することで、ラボを開始するスクリプト
start.py となります。
def start_lab(token, url):
token = 'Bearer' + ' ' + token
headers = {
'accept': 'application/json',
'Authorization': token
}
startlabid = input("Please input lab ID to be started? [type q to quit]: ")
api_call = "/v0/labs/" + startlabid
url_start = url + api_call + "/start"
response = requests.put(url_start,headers=headers,verify=False)
print(response)
if __name__ == "__main__":
auth_token = get_token(CML_URL, CML_USER, CML_PASS)
start_lab(auth_token, CML_URL)
使用する際は、スタートするラボ ID を確認した上で実行します。
今回の場合、例としてラボ ID 85cb5b のラボをスタートします。
# Start the lab id with start.py
C:\Users\kaihosok>python start.py
Please input lab ID to be started? [type q to quit]: 85cb5b
<Response [200]>
最後になりますが、本ドキュメントで記載されている内容は、あくまで例となります。そのため必要に応じて検証や書き換えを行う必要があります。(例外処理や、requests のTimeout など)
参考情報
Cisco Modeling Labs
Cisco Modeling Labs Release Notes
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!