はじめに
本ドキュメントでは、CML で使用できるスクリプトを作成する例として、ラボの強制削除を行うスクリプトを作成した際の流れについて記載します。
※本ドキュメントに記載している方法やスクリプトは例となります。推奨の作成方法を示しているというドキュメントではありません。
ラボを強制的に削除する force_delete.py を作る
CML に対して使用できるサンプルスクリプトを提示している以下のページには、ラボを削除するスクリプトは存在していますが、今動いているラボを停止して、強制的に削除するようなスクリプトはありませんでした。
Cisco Modeling Labs (CML) API Demo for simulation lifecycle
そこで、ラボの強制削除を行うスクリプト force_delete.py を作成します。
スクリプトを0から作成することも可能ですが、今回はサンプルスクリプトが存在するため、delete.py をベースに作成することにします。
delete.py は、def get_token と def delete_lab が記述されています。認証のTokenを取得することは、今から作成する force_delete.py でも必要となるため、その部分は残し、def delete_lab を変更することでラボをスタートするスクリプトを実現する方針とします。
def delete_lab に含まれる以下の部分が削除のための requests 部分となるため、強制的にラボを削除するコードに書き換えます。
api_call = "/v0/labs/" + deletelabid
url = url + api_call
response = requests.delete(url, headers=headers, verify=False)
ラボの削除方法
CML 2.0 のラボを削除するためには、以下の 3 つの Step を踏む必要があります。
Step 1. 動いているラボ内の機器すべてを停止させる
Step 2. ラボ内の機器全てに対して、Wipe を行う
Step 3. ラボを削除する
2.x API で確認すると、ラボの停止、Wipe、削除はそれぞれ以下であることが確認できます。



よって、以下のように def delete_lab を作成することで、3 つの Step を踏み、停止から削除まで行うスクリプト force_delete.py となります。
def delete_lab(token, url):
token = 'Bearer' + ' ' + token
headers = {
'accept': 'application/json',
'Authorization': token
}
deletelabid = input("Please input lab ID to be deleted? [type q to quit]: ")
api_call = "/v0/labs/" + deletelabid
url_stop = url + api_call + "/stop"
response = requests.put(url_stop,headers=headers,verify=False)
print("Lab stop ", response)
url_wipe = url + api_call + "/wipe"
response = requests.put(url_wipe,headers=headers,verify=False)
print("Lab wipe ", response)
url_delete = url + api_call
response = requests.delete(url_delete,headers=headers,verify=False)
print("Lab delete",response)
使用する際は、削除対象のラボ ID を確認した上で実行します。
今回の場合、ラボ ID 85cb5b のラボを動いている状態から、削除まで行います。
C:\Users\kaihosok>python delete_force.py
Please input lab ID to be deleted? [type q to quit]: 85cb5b
Lab stop <Response [200]>
Lab wipe <Response [200]>
Lab delete <Response [200]>
最後になりますが、本ドキュメントで記載されている内容は、あくまで例となります。そのため必要に応じて検証や書き換えを行う必要があります。(例外処理や、requests のTimeout など)
参考情報
Cisco Modeling Labs
Cisco Modeling Labs Release Notes
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!
Cisco Modeling Labs : CML に対するスクリプト作成例1