<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="replicapoolupdater_v1beta1.html">Google Compute Engine Instance Group Updater API</a> . <a href="replicapoolupdater_v1beta1.rollingUpdates.html">rollingUpdates</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#cancel">cancel(project, zone, rollingUpdate)</a></code></p>
<p class="firstline">Cancels an update. The update must be PAUSED before it can be cancelled. This has no effect if the update is already CANCELLED.</p>
<p class="toc_element">
  <code><a href="#get">get(project, zone, rollingUpdate)</a></code></p>
<p class="firstline">Returns information about an update.</p>
<p class="toc_element">
  <code><a href="#insert">insert(project, zone, body)</a></code></p>
<p class="firstline">Inserts and starts a new update.</p>
<p class="toc_element">
  <code><a href="#list">list(project, zone, maxResults=None, pageToken=None, filter=None)</a></code></p>
<p class="firstline">Lists recent updates for a given managed instance group, in reverse chronological order and paginated format.</p>
<p class="toc_element">
  <code><a href="#listInstanceUpdates">listInstanceUpdates(project, zone, rollingUpdate, maxResults=None, pageToken=None, filter=None)</a></code></p>
<p class="firstline">Lists the current status for each instance within a given update.</p>
<p class="toc_element">
  <code><a href="#listInstanceUpdates_next">listInstanceUpdates_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#pause">pause(project, zone, rollingUpdate)</a></code></p>
<p class="firstline">Pauses the update in state from ROLLING_FORWARD or ROLLING_BACK. Has no effect if invoked when the state of the update is PAUSED.</p>
<p class="toc_element">
  <code><a href="#resume">resume(project, zone, rollingUpdate)</a></code></p>
<p class="firstline">Continues an update in PAUSED state. Has no effect if invoked when the state of the update is ROLLED_OUT.</p>
<p class="toc_element">
  <code><a href="#rollback">rollback(project, zone, rollingUpdate)</a></code></p>
<p class="firstline">Rolls back the update in state from ROLLING_FORWARD or PAUSED. Has no effect if invoked when the state of the update is ROLLED_BACK.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="cancel">cancel(project, zone, rollingUpdate)</code>
  <pre>Cancels an update. The update must be PAUSED before it can be cancelled. This has no effect if the update is already CANCELLED.

Args:
  project: string, The Google Developers Console project name. (required)
  zone: string, The name of the zone in which the update's target resides. (required)
  rollingUpdate: string, The name of the update. (required)

Returns:
  An object of the form:

    { # An operation resource, used to manage asynchronous API requests.
    "targetId": "A String", # [Output Only] Unique target id which identifies a particular incarnation of the target.
    "clientOperationId": "A String",
    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
    "zone": "A String", # [Output Only] URL of the zone where the operation resides.
    "operationType": "A String",
    "httpErrorMessage": "A String",
    "progress": 42,
    "httpErrorStatusCode": 42,
    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
    "status": "A String", # [Output Only] Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE".
    "insertTime": "A String", # [Output Only] The time that this operation was requested. This is in RFC 3339 format.
    "warnings": [
      {
        "message": "A String", # [Output only] Optional human-readable details for this warning.
        "code": "A String", # [Output only] The warning type identifier for this warning.
        "data": [ # [Output only] Metadata for this warning in key:value format.
          {
            "value": "A String", # [Output Only] Metadata value for this warning.
            "key": "A String", # [Output Only] Metadata key for this warning.
          },
        ],
      },
    ],
    "user": "A String",
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This is in RFC 3339 format.
    "kind": "replicapoolupdater#operation", # [Output Only] Type of the resource. Always replicapoolupdater#operation for Operation resources.
    "name": "A String", # [Output Only] Name of the resource.
    "region": "A String", # [Output Only] URL of the region where the operation resides.
    "error": { # [Output Only] If errors occurred during processing of this operation, this field will be populated.
      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
        {
          "message": "A String", # [Output Only] An optional, human-readable error message.
          "code": "A String", # [Output Only] The error type identifier for this error.
          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
        },
      ],
    },
    "endTime": "A String",
    "selfLink": "A String", # [Output Only] The fully qualified URL for the resource.
    "targetLink": "A String", # [Output Only] URL of the resource the operation is mutating.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(project, zone, rollingUpdate)</code>
  <pre>Returns information about an update.

Args:
  project: string, The Google Developers Console project name. (required)
  zone: string, The name of the zone in which the update's target resides. (required)
  rollingUpdate: string, The name of the update. (required)

Returns:
  An object of the form:

    { # The following represents a resource describing a single update (rollout) of a group of instances to the given template.
      "status": "A String", # [Output Only] Status of the update. Possible values are:
          # - "ROLLING_FORWARD": The update is going forward.
          # - "ROLLING_BACK": The update is being rolled back.
          # - "PAUSED": The update is temporarily paused (inactive).
          # - "ROLLED_OUT": The update is finished, all instances have been updated successfully.
          # - "ROLLED_BACK": The update is finished, all instances have been reverted to the previous template.
          # - "CANCELLED": The update is paused and no longer can be resumed, undefined how many instances are running in which template.
      "kind": "replicapoolupdater#rollingUpdate", # [Output Only] Type of the resource.
      "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
      "user": "A String", # [Output Only] User who requested the update, for example: user@example.com.
      "instanceGroup": "A String", # Fully-qualified URL of an instance group being updated. Exactly one of instanceGroupManager and instanceGroup must be set.
      "instanceTemplate": "A String", # Fully-qualified URL of an instance template to apply.
      "actionType": "A String", # Specifies the action to take for each instance within the instance group. This can be RECREATE which will recreate each instance and is only available for managed instance groups. It can also be REBOOT which performs a soft reboot for each instance and is only available for regular (non-managed) instance groups.
      "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the update.
      "error": { # [Output Only] Errors that occurred during the rolling update.
        "errors": [ # [Output Only] The array of errors encountered while processing this operation.
          {
            "message": "A String", # [Output Only] An optional, human-readable error message.
            "code": "A String", # [Output Only] The error type identifier for this error.
            "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
          },
        ],
      },
      "policy": { # Parameters of the update process.
        "autoPauseAfterInstances": 42, # Number of instances to update before the updater pauses the rolling update.
        "instanceStartupTimeoutSec": 42, # The maximum amount of time that the updater waits for a HEALTHY state after all of the update steps are complete. If the HEALTHY state is not received before the deadline, the instance update is considered a failure.
        "maxNumConcurrentInstances": 42, # The maximum number of instances that can be updated simultaneously. An instance update is considered complete only after the instance is restarted and initialized.
        "minInstanceUpdateTimeSec": 42, # The minimum amount of time that the updater spends to update each instance. Update time is the time it takes to complete all update actions (e.g. Stop call on Instance resource in Rolling Reboot), reboot, and initialize. If the instance update finishes early, the updater pauses for the remainder of the time before it starts the next instance update.
        "maxNumFailedInstances": 42, # The maximum number of instance updates that can fail before the group update is considered a failure. An instance update is considered failed if any of its update actions (e.g. Stop call on Instance resource in Rolling Reboot) failed with permanent failure, or if the instance is in an UNHEALTHY state after it finishes all of the update actions.
      },
      "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the update will be complete. This number should be monotonically increasing as the update progresses.
      "oldInstanceTemplate": "A String", # Fully-qualified URL of the instance template encountered while starting the update.
      "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
      "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
      "selfLink": "A String", # [Output Only] The fully qualified URL for the resource.
      "instanceGroupManager": "A String", # Fully-qualified URL of an instance group manager being updated. Exactly one of instanceGroupManager and instanceGroup must be set.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(project, zone, body)</code>
  <pre>Inserts and starts a new update.

Args:
  project: string, The Google Developers Console project name. (required)
  zone: string, The name of the zone in which the update's target resides. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # The following represents a resource describing a single update (rollout) of a group of instances to the given template.
    "status": "A String", # [Output Only] Status of the update. Possible values are:
        # - "ROLLING_FORWARD": The update is going forward.
        # - "ROLLING_BACK": The update is being rolled back.
        # - "PAUSED": The update is temporarily paused (inactive).
        # - "ROLLED_OUT": The update is finished, all instances have been updated successfully.
        # - "ROLLED_BACK": The update is finished, all instances have been reverted to the previous template.
        # - "CANCELLED": The update is paused and no longer can be resumed, undefined how many instances are running in which template.
    "kind": "replicapoolupdater#rollingUpdate", # [Output Only] Type of the resource.
    "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
    "user": "A String", # [Output Only] User who requested the update, for example: user@example.com.
    "instanceGroup": "A String", # Fully-qualified URL of an instance group being updated. Exactly one of instanceGroupManager and instanceGroup must be set.
    "instanceTemplate": "A String", # Fully-qualified URL of an instance template to apply.
    "actionType": "A String", # Specifies the action to take for each instance within the instance group. This can be RECREATE which will recreate each instance and is only available for managed instance groups. It can also be REBOOT which performs a soft reboot for each instance and is only available for regular (non-managed) instance groups.
    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the update.
    "error": { # [Output Only] Errors that occurred during the rolling update.
      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
        {
          "message": "A String", # [Output Only] An optional, human-readable error message.
          "code": "A String", # [Output Only] The error type identifier for this error.
          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
        },
      ],
    },
    "policy": { # Parameters of the update process.
      "autoPauseAfterInstances": 42, # Number of instances to update before the updater pauses the rolling update.
      "instanceStartupTimeoutSec": 42, # The maximum amount of time that the updater waits for a HEALTHY state after all of the update steps are complete. If the HEALTHY state is not received before the deadline, the instance update is considered a failure.
      "maxNumConcurrentInstances": 42, # The maximum number of instances that can be updated simultaneously. An instance update is considered complete only after the instance is restarted and initialized.
      "minInstanceUpdateTimeSec": 42, # The minimum amount of time that the updater spends to update each instance. Update time is the time it takes to complete all update actions (e.g. Stop call on Instance resource in Rolling Reboot), reboot, and initialize. If the instance update finishes early, the updater pauses for the remainder of the time before it starts the next instance update.
      "maxNumFailedInstances": 42, # The maximum number of instance updates that can fail before the group update is considered a failure. An instance update is considered failed if any of its update actions (e.g. Stop call on Instance resource in Rolling Reboot) failed with permanent failure, or if the instance is in an UNHEALTHY state after it finishes all of the update actions.
    },
    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the update will be complete. This number should be monotonically increasing as the update progresses.
    "oldInstanceTemplate": "A String", # Fully-qualified URL of the instance template encountered while starting the update.
    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
    "selfLink": "A String", # [Output Only] The fully qualified URL for the resource.
    "instanceGroupManager": "A String", # Fully-qualified URL of an instance group manager being updated. Exactly one of instanceGroupManager and instanceGroup must be set.
  }


Returns:
  An object of the form:

    { # An operation resource, used to manage asynchronous API requests.
    "targetId": "A String", # [Output Only] Unique target id which identifies a particular incarnation of the target.
    "clientOperationId": "A String",
    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
    "zone": "A String", # [Output Only] URL of the zone where the operation resides.
    "operationType": "A String",
    "httpErrorMessage": "A String",
    "progress": 42,
    "httpErrorStatusCode": 42,
    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
    "status": "A String", # [Output Only] Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE".
    "insertTime": "A String", # [Output Only] The time that this operation was requested. This is in RFC 3339 format.
    "warnings": [
      {
        "message": "A String", # [Output only] Optional human-readable details for this warning.
        "code": "A String", # [Output only] The warning type identifier for this warning.
        "data": [ # [Output only] Metadata for this warning in key:value format.
          {
            "value": "A String", # [Output Only] Metadata value for this warning.
            "key": "A String", # [Output Only] Metadata key for this warning.
          },
        ],
      },
    ],
    "user": "A String",
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This is in RFC 3339 format.
    "kind": "replicapoolupdater#operation", # [Output Only] Type of the resource. Always replicapoolupdater#operation for Operation resources.
    "name": "A String", # [Output Only] Name of the resource.
    "region": "A String", # [Output Only] URL of the region where the operation resides.
    "error": { # [Output Only] If errors occurred during processing of this operation, this field will be populated.
      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
        {
          "message": "A String", # [Output Only] An optional, human-readable error message.
          "code": "A String", # [Output Only] The error type identifier for this error.
          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
        },
      ],
    },
    "endTime": "A String",
    "selfLink": "A String", # [Output Only] The fully qualified URL for the resource.
    "targetLink": "A String", # [Output Only] URL of the resource the operation is mutating.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(project, zone, maxResults=None, pageToken=None, filter=None)</code>
  <pre>Lists recent updates for a given managed instance group, in reverse chronological order and paginated format.

Args:
  project: string, The Google Developers Console project name. (required)
  zone: string, The name of the zone in which the update's target resides. (required)
  maxResults: integer, Optional. Maximum count of results to be returned. Maximum value is 500 and default value is 500.
  pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
  filter: string, Optional. Filter expression for filtering listed resources.

Returns:
  An object of the form:

    { # Response returned by List method.
    "nextPageToken": "A String", # A token used to continue a truncated list request.
    "items": [ # Collection of requested updates.
      { # The following represents a resource describing a single update (rollout) of a group of instances to the given template.
          "status": "A String", # [Output Only] Status of the update. Possible values are:
              # - "ROLLING_FORWARD": The update is going forward.
              # - "ROLLING_BACK": The update is being rolled back.
              # - "PAUSED": The update is temporarily paused (inactive).
              # - "ROLLED_OUT": The update is finished, all instances have been updated successfully.
              # - "ROLLED_BACK": The update is finished, all instances have been reverted to the previous template.
              # - "CANCELLED": The update is paused and no longer can be resumed, undefined how many instances are running in which template.
          "kind": "replicapoolupdater#rollingUpdate", # [Output Only] Type of the resource.
          "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
          "user": "A String", # [Output Only] User who requested the update, for example: user@example.com.
          "instanceGroup": "A String", # Fully-qualified URL of an instance group being updated. Exactly one of instanceGroupManager and instanceGroup must be set.
          "instanceTemplate": "A String", # Fully-qualified URL of an instance template to apply.
          "actionType": "A String", # Specifies the action to take for each instance within the instance group. This can be RECREATE which will recreate each instance and is only available for managed instance groups. It can also be REBOOT which performs a soft reboot for each instance and is only available for regular (non-managed) instance groups.
          "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the update.
          "error": { # [Output Only] Errors that occurred during the rolling update.
            "errors": [ # [Output Only] The array of errors encountered while processing this operation.
              {
                "message": "A String", # [Output Only] An optional, human-readable error message.
                "code": "A String", # [Output Only] The error type identifier for this error.
                "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
              },
            ],
          },
          "policy": { # Parameters of the update process.
            "autoPauseAfterInstances": 42, # Number of instances to update before the updater pauses the rolling update.
            "instanceStartupTimeoutSec": 42, # The maximum amount of time that the updater waits for a HEALTHY state after all of the update steps are complete. If the HEALTHY state is not received before the deadline, the instance update is considered a failure.
            "maxNumConcurrentInstances": 42, # The maximum number of instances that can be updated simultaneously. An instance update is considered complete only after the instance is restarted and initialized.
            "minInstanceUpdateTimeSec": 42, # The minimum amount of time that the updater spends to update each instance. Update time is the time it takes to complete all update actions (e.g. Stop call on Instance resource in Rolling Reboot), reboot, and initialize. If the instance update finishes early, the updater pauses for the remainder of the time before it starts the next instance update.
            "maxNumFailedInstances": 42, # The maximum number of instance updates that can fail before the group update is considered a failure. An instance update is considered failed if any of its update actions (e.g. Stop call on Instance resource in Rolling Reboot) failed with permanent failure, or if the instance is in an UNHEALTHY state after it finishes all of the update actions.
          },
          "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the update will be complete. This number should be monotonically increasing as the update progresses.
          "oldInstanceTemplate": "A String", # Fully-qualified URL of the instance template encountered while starting the update.
          "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
          "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
          "selfLink": "A String", # [Output Only] The fully qualified URL for the resource.
          "instanceGroupManager": "A String", # Fully-qualified URL of an instance group manager being updated. Exactly one of instanceGroupManager and instanceGroup must be set.
        },
    ],
    "kind": "replicapoolupdater#rollingUpdateList", # [Output Only] Type of the resource.
    "selfLink": "A String", # [Output Only] The fully qualified URL for the resource.
  }</pre>
</div>

<div class="method">
    <code class="details" id="listInstanceUpdates">listInstanceUpdates(project, zone, rollingUpdate, maxResults=None, pageToken=None, filter=None)</code>
  <pre>Lists the current status for each instance within a given update.

Args:
  project: string, The Google Developers Console project name. (required)
  zone: string, The name of the zone in which the update's target resides. (required)
  rollingUpdate: string, The name of the update. (required)
  maxResults: integer, Optional. Maximum count of results to be returned. Maximum value is 500 and default value is 500.
  pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
  filter: string, Optional. Filter expression for filtering listed resources.

Returns:
  An object of the form:

    { # Response returned by ListInstanceUpdates method.
    "nextPageToken": "A String", # A token used to continue a truncated list request.
    "items": [ # Collection of requested instance updates.
      { # Update of a single instance.
        "status": "A String", # Status of the instance update. Possible values are:
            # - "PENDING": The instance update is pending execution.
            # - "ROLLING_FORWARD": The instance update is going forward.
            # - "ROLLING_BACK": The instance update is being rolled back.
            # - "PAUSED": The instance update is temporarily paused (inactive).
            # - "ROLLED_OUT": The instance update is finished, the instance is running the new template.
            # - "ROLLED_BACK": The instance update is finished, the instance has been reverted to the previous template.
            # - "CANCELLED": The instance update is paused and no longer can be resumed, undefined in which template the instance is running.
        "instance": "A String", # Fully-qualified URL of the instance being updated.
        "error": { # Errors that occurred during the instance update.
          "errors": [ # [Output Only] The array of errors encountered while processing this operation.
            {
              "message": "A String", # [Output Only] An optional, human-readable error message.
              "code": "A String", # [Output Only] The error type identifier for this error.
              "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
            },
          ],
        },
      },
    ],
    "kind": "replicapoolupdater#instanceUpdateList", # [Output Only] Type of the resource.
    "selfLink": "A String", # [Output Only] The fully qualified URL for the resource.
  }</pre>
</div>

<div class="method">
    <code class="details" id="listInstanceUpdates_next">listInstanceUpdates_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="pause">pause(project, zone, rollingUpdate)</code>
  <pre>Pauses the update in state from ROLLING_FORWARD or ROLLING_BACK. Has no effect if invoked when the state of the update is PAUSED.

Args:
  project: string, The Google Developers Console project name. (required)
  zone: string, The name of the zone in which the update's target resides. (required)
  rollingUpdate: string, The name of the update. (required)

Returns:
  An object of the form:

    { # An operation resource, used to manage asynchronous API requests.
    "targetId": "A String", # [Output Only] Unique target id which identifies a particular incarnation of the target.
    "clientOperationId": "A String",
    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
    "zone": "A String", # [Output Only] URL of the zone where the operation resides.
    "operationType": "A String",
    "httpErrorMessage": "A String",
    "progress": 42,
    "httpErrorStatusCode": 42,
    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
    "status": "A String", # [Output Only] Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE".
    "insertTime": "A String", # [Output Only] The time that this operation was requested. This is in RFC 3339 format.
    "warnings": [
      {
        "message": "A String", # [Output only] Optional human-readable details for this warning.
        "code": "A String", # [Output only] The warning type identifier for this warning.
        "data": [ # [Output only] Metadata for this warning in key:value format.
          {
            "value": "A String", # [Output Only] Metadata value for this warning.
            "key": "A String", # [Output Only] Metadata key for this warning.
          },
        ],
      },
    ],
    "user": "A String",
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This is in RFC 3339 format.
    "kind": "replicapoolupdater#operation", # [Output Only] Type of the resource. Always replicapoolupdater#operation for Operation resources.
    "name": "A String", # [Output Only] Name of the resource.
    "region": "A String", # [Output Only] URL of the region where the operation resides.
    "error": { # [Output Only] If errors occurred during processing of this operation, this field will be populated.
      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
        {
          "message": "A String", # [Output Only] An optional, human-readable error message.
          "code": "A String", # [Output Only] The error type identifier for this error.
          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
        },
      ],
    },
    "endTime": "A String",
    "selfLink": "A String", # [Output Only] The fully qualified URL for the resource.
    "targetLink": "A String", # [Output Only] URL of the resource the operation is mutating.
  }</pre>
</div>

<div class="method">
    <code class="details" id="resume">resume(project, zone, rollingUpdate)</code>
  <pre>Continues an update in PAUSED state. Has no effect if invoked when the state of the update is ROLLED_OUT.

Args:
  project: string, The Google Developers Console project name. (required)
  zone: string, The name of the zone in which the update's target resides. (required)
  rollingUpdate: string, The name of the update. (required)

Returns:
  An object of the form:

    { # An operation resource, used to manage asynchronous API requests.
    "targetId": "A String", # [Output Only] Unique target id which identifies a particular incarnation of the target.
    "clientOperationId": "A String",
    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
    "zone": "A String", # [Output Only] URL of the zone where the operation resides.
    "operationType": "A String",
    "httpErrorMessage": "A String",
    "progress": 42,
    "httpErrorStatusCode": 42,
    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
    "status": "A String", # [Output Only] Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE".
    "insertTime": "A String", # [Output Only] The time that this operation was requested. This is in RFC 3339 format.
    "warnings": [
      {
        "message": "A String", # [Output only] Optional human-readable details for this warning.
        "code": "A String", # [Output only] The warning type identifier for this warning.
        "data": [ # [Output only] Metadata for this warning in key:value format.
          {
            "value": "A String", # [Output Only] Metadata value for this warning.
            "key": "A String", # [Output Only] Metadata key for this warning.
          },
        ],
      },
    ],
    "user": "A String",
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This is in RFC 3339 format.
    "kind": "replicapoolupdater#operation", # [Output Only] Type of the resource. Always replicapoolupdater#operation for Operation resources.
    "name": "A String", # [Output Only] Name of the resource.
    "region": "A String", # [Output Only] URL of the region where the operation resides.
    "error": { # [Output Only] If errors occurred during processing of this operation, this field will be populated.
      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
        {
          "message": "A String", # [Output Only] An optional, human-readable error message.
          "code": "A String", # [Output Only] The error type identifier for this error.
          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
        },
      ],
    },
    "endTime": "A String",
    "selfLink": "A String", # [Output Only] The fully qualified URL for the resource.
    "targetLink": "A String", # [Output Only] URL of the resource the operation is mutating.
  }</pre>
</div>

<div class="method">
    <code class="details" id="rollback">rollback(project, zone, rollingUpdate)</code>
  <pre>Rolls back the update in state from ROLLING_FORWARD or PAUSED. Has no effect if invoked when the state of the update is ROLLED_BACK.

Args:
  project: string, The Google Developers Console project name. (required)
  zone: string, The name of the zone in which the update's target resides. (required)
  rollingUpdate: string, The name of the update. (required)

Returns:
  An object of the form:

    { # An operation resource, used to manage asynchronous API requests.
    "targetId": "A String", # [Output Only] Unique target id which identifies a particular incarnation of the target.
    "clientOperationId": "A String",
    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
    "zone": "A String", # [Output Only] URL of the zone where the operation resides.
    "operationType": "A String",
    "httpErrorMessage": "A String",
    "progress": 42,
    "httpErrorStatusCode": 42,
    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
    "status": "A String", # [Output Only] Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE".
    "insertTime": "A String", # [Output Only] The time that this operation was requested. This is in RFC 3339 format.
    "warnings": [
      {
        "message": "A String", # [Output only] Optional human-readable details for this warning.
        "code": "A String", # [Output only] The warning type identifier for this warning.
        "data": [ # [Output only] Metadata for this warning in key:value format.
          {
            "value": "A String", # [Output Only] Metadata value for this warning.
            "key": "A String", # [Output Only] Metadata key for this warning.
          },
        ],
      },
    ],
    "user": "A String",
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This is in RFC 3339 format.
    "kind": "replicapoolupdater#operation", # [Output Only] Type of the resource. Always replicapoolupdater#operation for Operation resources.
    "name": "A String", # [Output Only] Name of the resource.
    "region": "A String", # [Output Only] URL of the region where the operation resides.
    "error": { # [Output Only] If errors occurred during processing of this operation, this field will be populated.
      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
        {
          "message": "A String", # [Output Only] An optional, human-readable error message.
          "code": "A String", # [Output Only] The error type identifier for this error.
          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
        },
      ],
    },
    "endTime": "A String",
    "selfLink": "A String", # [Output Only] The fully qualified URL for the resource.
    "targetLink": "A String", # [Output Only] URL of the resource the operation is mutating.
  }</pre>
</div>

</body></html>