NTNX>日記

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

Nutanix REST API v2 で Protection Domain の Snapshot を作成してみる。(Python)

Nutanix CE の REST API v2 で Protection Domain のスナップショットを作成してみます。

API v2 での Protection Domain のスナップショットは、
POST /protection_domains/{name}/oob_schedules で作成できます。
/snapshots は VM 単位のスナップショット作成なので、ここでは利用しません。

今回の環境は下記です。

  • Nutanix CE ce-2018.05.01-stable の Prism Element に実行。
  • Protection Domain「pd01」を作成して、VM を追加ずみ。
  • 今回も Python 2.7.5 を使用。
  • Python の requests をインストール。
    CentOS / Oracle Linux の RPM であれば python-requests。

環境準備

Protection Domain「pd01」を作成して、VM 「vm01」「vm02」を追加ずみです。

f:id:gowatana:20181122075759p:plain

スクリプトの準備

下記のようなスクリプトを作成します。

作成した直後にスナップショット情報を取得していますが、未完了の状態で情報取得しようとするとエラーになったりするので、今回は seconds_to_wait_snapshot_report  の秒数を待機してから情報取得しています。

gist.github.com

下記のような Prism へのログイン情報を記載したファイルを作成しておきます。

gist.github.com

実行例

スクリプトの引数で、スナップショットを作成する Protection Domain の名前を指定します。

$ python create_pd-snapshot.py ../prism-config.json pd01
{
  "entities": [
    {
      "oob_schedule_ids": [
        466
      ],
      "nfs_files": [],
      "consistency_groups": [
        "vm01",
        "vm02"
      ],
      "size_in_bytes": 3653632,
      "state": "AVAILABLE",
      "located_remote_site_name": null,
      "volume_groups": [],
      "snapshot_expiry_time_usecs": 3690324803668290,
      "protection_domain_name": "pd01",
      "snapshot_create_time_usecs": 1542841156668290,
      "snapshot_id": "470",
      "exclusive_usage_in_bytes": -1,
      "remote_site_names": [],
      "vms": [
        {
          "vm_name": "vm02",
          "vm_power_state_on_recovery": "Powered On",
          "consistency_group": "vm02",
          "vm_files": [
            "/st-container-01/.acropolis/vmdisk/53360633-9d77-49f1-bcde-6a6779875382",
            "/st-container-01/.acropolis/vmdisk/9f477036-8afa-4a7d-93e8-ead9432d49ab"
          ],
          "related_entity_uuids": [],
          "app_consistent_snapshots": false,
          "vm_recoverability": [],
          "vm_handle": 407,
          "vm_id": "8efc9f6b-f278-455a-8d5b-269ba3e14777"
        },
        {
          "vm_name": "vm01",
          "vm_power_state_on_recovery": "Powered On",
          "consistency_group": "vm01",
          "vm_files": [
            "/st-container-01/.acropolis/vmdisk/398a4501-44ed-44ac-9c57-363d9b355147",
            "/st-container-01/.acropolis/vmdisk/91d6f661-119d-422a-a791-db1a21aed969"
          ],
          "related_entity_uuids": [],
          "app_consistent_snapshots": false,
          "vm_recoverability": [],
          "vm_handle": 438,
          "vm_id": "885074b9-d128-4a25-86c7-9b08bf5850c4"
        }
      ],
      "snapshot_uuid": "b9a62d61-8e52-4e0a-a710-af204dcda4f5"
    }
  ],
  "metadata": {
    "grand_total_entities": 1,
    "total_entities": 1,
    "sort_criteria": "",
    "filter_criteria": ""
  }
}

Prism でもスナップショットが表示されます。

f:id:gowatana:20181122080058p:plain

以上。