CML でノードの起動時間を取得する
Cisco CML で「一定時間以上、起動しているラボは停止する」という処理を実装しようと思ったのですが、ラボには「作成時間」や「起動時間」というプロパティが存在しないようです。 代替手段として「機器へ TELNET / SSH して uptime を取得する」という方法もあるかもしれませんが、イマイチです。 ラボそのものには「起動時間」のプロパティが無いものの、ノードには「起動時間を示すプロパティ」があるようです。 今回はその値を取得する Python のサンプルプログラムをメモしておきます。
検証環境¶
| 対象 | バージョン |
|---|---|
| CML | 2.6.1 |
| macOS | 14.4 |
| Python | 3.12.2 |
ノードの起動時間は BOOTED プロパティで取得出来る¶
結論から述べると「ノードの起動時間」は Labs にある /labs/{lab_id}/simulation_stats API の結果に含まれる BOOTED という値として取得出来ました。 「ノードの起動時間」ということで Nodes の API で取得出来そうな気がするのですが、こちらでは取得出来ませんでした。

実際に /labs/{lab_id}/simulation_stats API を実行した結果例は以下の通りです。 テストした対象ラボは 2 ノード存在する為、「2 ノード分の実行結果」を取得しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | |
BOOTED と STARTED の値がありますが、これらはおそらく以下の意味だと思われます。
| 項目 | 意味 |
|---|---|
STARTED |
ノードが開始されてから経過した秒数 |
BOOTED |
ノードが「起動した」と認識されてから経過した秒数 |
ノードを「起動した」と判定するロジックは CML の Node Definition 中で定義されています。
サンプルプログラム¶
BOOTED の値に加え、STARTED も取得しています。 BOOTED の値を取得するだけであれば不要ですが、ソート等が楽なので pandas を利用しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | |
実行結果¶
実行例は以下の通りです。
1 2 3 | |