Nutanix REST API で AHV 上の VM を操作するときに、VM の UUID を指定する必要があります。以前に REST API v3 + jq コマンドで UUID を取得してみましたが、今回は REST API v2 + Python で、VM 名から UUID を取得してみます。
スクリプトのサンプル
今回も、Prism のログイン情報を記載したファイルを用意しておきます。
VM の UUID を取得するサンプルスクリプトです。VM 名が重複する場合は、VM の情報も表示してみます。
スクリプトの実行
下記のような環境で、VM の UUID を取得します。「vm01」は 1台、VM 名が重複している「vm02」は 3台あります。

最後の引数は、UUID を取得したい VM の名前です。
VM 名が重複していない「vm01」です。
$ python get_vm-uuid.py ../prism-config.json vm01 vm_uuid: 3ef4bcac-624e-4ac0-9310-9006de173fe5
VM 名が 3台で重複している「vm02」です。
$ python get_vm-uuid.py ../prism-config.json vm02
vm_uuid: fd5931c4-ef00-4e3e-bab2-dbc7e34656a6
vm_uuid: 46a0b95e-ab0c-49bd-8047-c51d46e3a2dc
vm_uuid: a485ba15-640e-42a7-848b-8f4a4a340ee8
VM: vm02 => 3 VMs
[
{
"vm_features": {
"AGENT_VM": false,
"VGA_CONSOLE": true
},
"name": "vm02",
"num_cores_per_vcpu": 1,
"gpus_assigned": false,
"num_vcpus": 1,
"memory_mb": 2048,
"power_state": "off",
"ha_priority": 0,
"allow_live_migrate": true,
"timezone": "UTC",
"vm_logical_timestamp": 1,
"uuid": "fd5931c4-ef00-4e3e-bab2-dbc7e34656a6"
},
{
"vm_features": {
"AGENT_VM": false,
"VGA_CONSOLE": true
},
"name": "vm02",
"num_cores_per_vcpu": 1,
"gpus_assigned": false,
"num_vcpus": 1,
"memory_mb": 2048,
"power_state": "off",
"ha_priority": 0,
"allow_live_migrate": true,
"timezone": "UTC",
"vm_logical_timestamp": 1,
"uuid": "46a0b95e-ab0c-49bd-8047-c51d46e3a2dc"
},
{
"vm_features": {
"AGENT_VM": false,
"VGA_CONSOLE": true
},
"name": "vm02",
"num_cores_per_vcpu": 1,
"gpus_assigned": false,
"num_vcpus": 1,
"memory_mb": 2048,
"power_state": "off",
"ha_priority": 0,
"allow_live_migrate": true,
"timezone": "UTC",
"vm_logical_timestamp": 1,
"uuid": "a485ba15-640e-42a7-848b-8f4a4a340ee8"
}
]
できることなら VM 名は重複しないほうがいいかなと思います。
以上。
