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:
- Operasi
insert
, sepertideployments.insert()
,typeProviders.insert()
, dan sebagainya. - Operasi
update
, sepertideployments.update()
. - Operasi
delete
, sepertideployments.delete()
.
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.