Polling Long Running Operations

This page describes how to programmatically poll the long-running operation resources returned by methods in Service Infrastructure APIs that take a substantial amount of time to complete, such as service.rollouts.create. After an operation is done, the done field will be set to true.

To poll an operation, repeatedly invoke the operations.get method with a recommended 10 seconds backoff until the operation is done:

# 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"
}