NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix REST API v2 で VM を停止 / 起動してみる。(Python)

VM 名のリストをもとに、Nutanix REST API v2 で VM の停止 / 起動をしてみます。

今回の環境は下記です。

  • Nutanix CE ce-2018.05.01-stable の Prism Element に実行。
  • 今回も Python  2.7.5 を使用。
  • Python の requests をインストール。
    CentOS / Oracle Linux の RPM であれば python-requests。
  • VM 名は重複なし。

スクリプトの準備

スクリプトは下記。

gist.github.com

Prism への接続情報を、ファイルに記載しておきます。

gist.github.com

対象 VM 名のリストを用意しておきます。

vm_list.txt

vm01
vm02

実行例

パワーオン。

$ python ./set_vm_power-state.py ./prism-config.json ./vm_list.txt ON
Change VM State: ON vm01
Change VM State: ON vm02
Task UUID: 386ccf7c-ed23-4f69-90ff-4cc6a93022a0 VM Name: vm02
Task UUID: f2632df6-8da1-49b2-8565-874404ec37ba VM Name: vm01
--
VM:                     vm01
TASK UUID:              f2632df6-8da1-49b2-8565-874404ec37ba
operation_type:         VmChangePowerState
start_time_usecs:       1541930351518478
last_updated_time_usecs:1541930355022321
percentage_complete:    100
progress_status:        Succeeded
--
VM:                     vm02
TASK UUID:              386ccf7c-ed23-4f69-90ff-4cc6a93022a0
operation_type:         VmChangePowerState
start_time_usecs:       1541930351341673
last_updated_time_usecs:1541930353948868
percentage_complete:    100
progress_status:        Succeeded

パワーオフ。
※シャットダウンの場合は「OFF」ではなく「ACPI_SHUTDOWN」

$ python ./set_vm_power-state.py ./prism-config.json ./vm_list.txt OFF
Change VM State: OFF vm01
Change VM State: OFF vm02
Task UUID: ff15f257-29c9-4ef9-bf5c-a5f3fdc8aa80 VM Name: vm02
Task UUID: bdc1950d-c480-4682-854a-594c95bd8c5d VM Name: vm01
--
VM:                     vm01
TASK UUID:              bdc1950d-c480-4682-854a-594c95bd8c5d
operation_type:         VmChangePowerState
start_time_usecs:       1541930430981585
last_updated_time_usecs:1541930433186548
percentage_complete:    100
progress_status:        Succeeded
--
VM:                     vm02
TASK UUID:              ff15f257-29c9-4ef9-bf5c-a5f3fdc8aa80
operation_type:         VmChangePowerState
start_time_usecs:       1541930430755213
last_updated_time_usecs:1541930433065641
percentage_complete:    100
progress_status:        Succeeded

失敗した場合の例。

$ python ./set_vm_power-state.py ./prism-config.json ./vm_list.txt OFF
Change VM State: OFF vm01
Change VM State: OFF vm02
Task UUID: 8dc8eef9-0f2e-4870-a537-9a4d6b65cc1d VM Name: vm02
Task UUID: 4e3188c7-3756-417d-a9ec-67f575f5c6b3 VM Name: vm01
--
VM:                     vm01
TASK UUID:              4e3188c7-3756-417d-a9ec-67f575f5c6b3
operation_type:         VmChangePowerState
start_time_usecs:       1541930477463769
last_updated_time_usecs:1541930478064583
percentage_complete:    100
progress_status:        Failed
error_code:             17
error_detail:           Cannot complete request in state InvalidState: Cannot complete request in state Off
--
VM:                     vm02
TASK UUID:              8dc8eef9-0f2e-4870-a537-9a4d6b65cc1d
operation_type:         VmChangePowerState
start_time_usecs:       1541930477095506
last_updated_time_usecs:1541930477715682
percentage_complete:    100
progress_status:        Failed
error_code:             17
error_detail:           Cannot complete request in state InvalidState: Cannot complete request in state Off

以上。