長時間実行オペレーションのポーリング

このページでは、完了するまでにかなりの時間がかかる Service Infrastructure API のメソッド(service.rollouts.create など)によって返される長時間実行オペレーションのリソースをプログラムによってポーリングする方法について説明します。オペレーションが完了すると、done フィールドが true に設定されます。

オペレーションをポーリングするには、operations.get 10 秒の推奨バックオフ値で繰り返し呼び出し、これをオペレーションが完了するまで続けます。

# This is an example of getting a pending `Operation` resource.
gcurl https://servicemanagement.googleapis.com/v1/operations/rollouts.endpointsapis.appspot.com:2016-07-16r2
{
  "name": "operations/rollouts.endpointsapis.appspot.com:2016-07-16r2",
  "metadata": {
    "@type": "type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata",
    "resourceNames": [
      "services/endpointsapis.appspot.com/rollouts/2016-07-16r2"
    ],
    "steps": [
      {
        "description": "update Service Controller",
        "status": "In_PROGRESS"
      }
    ],
    "progressPercentage": 0,
    "startTime": "2016-07-16T00:56:55.737Z",
  }
  "response": {
  "@type": "type.googleapis.com/google.api.servicemanagement.v1.Rollout",
  "rolloutId": "2016-07-16r2",
  "createTime": "2016-07-16T00:56:55.724Z",
  "serviceSelectionStrategy": {
    "serviceConfigIds": [
      "2016-07-16r1"
    ]
  },
  "serviceName": "endpointsapis.appspot.com"
}

# This is an example of getting a done `Operation` resource.
gcurl https://servicemanagement.googleapis.com/v1/operations/rollouts.endpointsapis.appspot.com:2016-07-16r2
{
  "name": "operations/rollouts.endpointsapis.appspot.com:2016-07-16r2",
  "metadata": {
    "@type": "type.googleapis.com/google.api.servicemanagement.v1.OperationMetadata",
    "resourceNames": [
      "services/endpointsapis.appspot.com/rollouts/2016-07-16r2"
    ],
    "steps": [
      {
        "description": "update Service Controller",
        "status": "Done"
      }
    ],
    "progressPercentage": 100,
    "startTime": "2016-07-16T00:56:55.737Z",
  }
  "done": true,
  "response": {
  "@type": "type.googleapis.com/google.api.servicemanagement.v1.Rollout",
  "rolloutId": "2016-07-16r2",
  "createTime": "2016-07-16T00:56:55.724Z",
  "serviceSelectionStrategy": {
    "serviceConfigIds": [
      "2016-07-16r1"
    ]
  },
  "serviceName": "endpointsapis.appspot.com"
}