Mengelola operasi yang berjalan lama dengan Deployment Manager API

Saat Anda membuat permintaan API ke Deployment Manager, Deployment Manager akan membuat permintaan yang sesuai ke API Google Cloud lainnya. Misalnya, saat Anda membuat deployment yang menyertakan instance Compute Engine, Deployment Manager akan mengirimkan permintaan instances.insert ke Compute Engine API.

Saat Anda membuat, memperbarui, atau menghapus deployment, atau menggunakan metode API lain yang mungkin memerlukan waktu beberapa menit atau lebih lama untuk diselesaikan, permintaan API ke Deployment Manager akan menampilkan operasi yang berjalan lama.

Halaman ini menjelaskan panduan untuk mengelola operasi yang berjalan lama dengan Deployment Manager API.

Sebelum memulai

  • Jika Anda ingin menggunakan contoh command line dalam panduan ini, instal alat command line`gcloud`.
  • Jika Anda ingin menggunakan contoh API dalam panduan ini, siapkan akses API.

Metode yang mungkin memulai operasi yang berjalan lama meliputi:

Dalam permintaan ini, responsnya adalah Resource operasi, yang terlihat seperti contoh ini:

{
 "kind": "deploymentmanager#operation",
 "id": "7123423453456654321",  # generated ID
 "name": "operation-11233234311678-587af2c0xyz9c-0987fa54-baccd59f",  # generated name
 "operationType": "insert",
 "targetLink": "https://www.googleapis.com/deploymentmanager/v2/projects/example-project/global/deployments/wordpress-1",
 "targetId": "5123321654456321123",
 "status": "DONE",  # possible values: RUNNING, PENDING, DONE
 "user": "example@example.com",
 "progress": 100,
 "insertTime": "2019-04-29T11:08:32.190-07:00",
 "startTime": "2019-04-29T11:08:32.200-07:00",
 "endTime": "2019-04-29T11:09:38.176-07:00",
 "selfLink": "https://www.googleapis.com/deploymentmanager/v2/projects/example-project/global/operations/operation-11233234311678-587af2c0xyz9c-0987fa54-baccd59f"
}

Mendapatkan status operasi

Untuk memeriksa status operasi, gunakan kolom name operasi untuk membuat permintaan operations.get(), dan periksa status atau progress operasi.

Jika status adalah DONE, progress adalah 100, dan objek error kosong, deployment Anda selesai dan resource Anda siap digunakan.

Jika ada error selama operasi, error tersebut akan tercantum dalam objek error, dalam format berikut:

"error": {
  "errors": [
    {
      "code": "error code"  # string,
      "location": "location of the error"  # string,
      "message": "error message"   # string
    },
    ...
  ]
}

Sebagai praktik terbaik, sebaiknya lakukan polling status operasi dengan backoff eksponensial. Misalnya, buat permintaan pertama setelah 5 detik, permintaan berikutnya setelah 10 detik, permintaan ketiga setelah 20 detik, dan seterusnya. Sebaiknya tetapkan waktu backoff maksimum beberapa menit. Setelah mencapai waktu backoff maksimum, Anda tidak perlu terus meningkatkan waktu backoff.