<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="deploymentmanager_v2beta2.html">Google Cloud Deployment Manager API V2</a> . <a href="deploymentmanager_v2beta2.deployments.html">deployments</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(project, deployment)</a></code></p>
<p class="firstline">Deletes a deployment and all of the resources in the deployment.</p>
<p class="toc_element">
  <code><a href="#get">get(project, deployment)</a></code></p>
<p class="firstline">Gets information about a specific deployment.</p>
<p class="toc_element">
  <code><a href="#insert">insert(project, body)</a></code></p>
<p class="firstline">Creates a deployment and all of the resources described by the deployment manifest.</p>
<p class="toc_element">
  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
<p class="firstline">Lists all deployments for a given project.</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="#patch">patch(project, deployment, body, deletePolicy=None, updatePolicy=None, createPolicy=None)</a></code></p>
<p class="firstline">Updates a deployment and all of the resources described by the deployment manifest. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(project, deployment, body, deletePolicy=None, updatePolicy=None, createPolicy=None)</a></code></p>
<p class="firstline">Updates a deployment and all of the resources described by the deployment manifest.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(project, deployment)</code>
  <pre>Deletes a deployment and all of the resources in the deployment.

Args:
  project: string, The project ID for this request. (required)
  deployment: string, The name of the deployment for this request. (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", # [Output Only] An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project.
    "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", # [Output Only] Type of the operation, such as insert, update, and delete.
    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
    "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 operation will be complete. This number should monotonically increase as the operation progresses.
    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as 404.
    "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 RFC3339 text format.
    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
      {
        "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] A warning data value corresponding to the key.
            "key": "A String", # [Output Only] A key for the warning data.
          },
        ],
      },
    ],
    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This is in RFC3339 text format.
    "kind": "deploymentmanager#operation", # [Output Only] Type of the resource. Always compute#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. Only applicable for regional resources.
    "error": { # [Output Only] If errors are generated during processing of the 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 which caused the error. This property is optional.
        },
      ],
    },
    "endTime": "A String", # [Output Only] The time that this operation was completed. This is in RFC3339 text format.
    "selfLink": "A String", # [Output Only] Server defined 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, deployment)</code>
  <pre>Gets information about a specific deployment.

Args:
  project: string, The project ID for this request. (required)
  deployment: string, The name of the deployment for this request. (required)

Returns:
  An object of the form:

    {
      "updateTime": "A String", # [Output Only] Timestamp when the deployment was updated, in RFC3339 text format .
      "description": "A String", # An optional user-provided description of the deployment.
      "update": { # [Output Only] If Deployment Manager is currently updating or previewing an update to this deployment, the updated configuration appears here.
        "errors": [ # [Output Only] List of all errors encountered while trying to enact the update.
          "A String",
        ],
        "manifest": "A String", # [Output Only] URL of the manifest representing the update configuration of this deployment.
      },
      "manifest": "A String", # [Output Only] URL of the manifest representing the last manifest that was successfully deployed.
      "state": "A String", # [Output Only] The current state of the deployment. This can be DEPLOYED, DEPLOYMENT_FAILED, PREVIEWING, UPDATING, and CANCELING.
      "intent": "A String", # [Input Only] Specifies how Deployment Manager should apply this template. Possible options are PREVIEW, UPDATE, and CANCEL.
          #
          # PREVIEW creates a deployment and creates "shell" resources but does not actually instantiate these resources. This allows you to preview what your deployment looks like. You can use this intent to preview updates to deployments or preview new deployments. You must provide a target.config with a configuration for this intent. After previewing a deployment, you can deploy your resources by making a request with the UPDATE intent or you can CANCEL the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it.
          #
          # UPDATE performs an update to the underlying resources in a deployment. If you provide a populated target.config field with this request, Deployment Manager uses that configuration to perform an update. If you had previewed this update beforehand, and do not supply a target.config or provide an empty target.config, Deployment Manager uses the last previewed configuration.
          #
          # CANCEL cancels an update that is in PREVIEW or UPDATE but does not undo any changes already made.
      "insertTime": "A String", # [Output Only] Timestamp when the deployment was created, in RFC3339 text format .
      "fingerprint": "A String", # Specifies a fingerprint for update() requests. A fingerprint is a randomly generated value that must be provided in update() requests to perform optimistic locking. This ensures optimistic concurrency so that only one update can be performed at a time.
          #
          # The fingerprint is initially generated by Deployment Manager and changes after every request to modify data. To get the latest fingerprint value, perform a get() request to a deployment.
      "target": { # [Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates.
        "imports": [ # Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template.
          {
            "content": "A String", # The contents of the file.
            "name": "A String", # The name of the file.
          },
        ],
        "config": "A String", # The configuration to use for this deployment.
      },
      "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
      "name": "A String", # The name of the deployment, which must be unique within the project.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(project, body)</code>
  <pre>Creates a deployment and all of the resources described by the deployment manifest.

Args:
  project: string, The project ID for this request. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "updateTime": "A String", # [Output Only] Timestamp when the deployment was updated, in RFC3339 text format .
    "description": "A String", # An optional user-provided description of the deployment.
    "update": { # [Output Only] If Deployment Manager is currently updating or previewing an update to this deployment, the updated configuration appears here.
      "errors": [ # [Output Only] List of all errors encountered while trying to enact the update.
        "A String",
      ],
      "manifest": "A String", # [Output Only] URL of the manifest representing the update configuration of this deployment.
    },
    "manifest": "A String", # [Output Only] URL of the manifest representing the last manifest that was successfully deployed.
    "state": "A String", # [Output Only] The current state of the deployment. This can be DEPLOYED, DEPLOYMENT_FAILED, PREVIEWING, UPDATING, and CANCELING.
    "intent": "A String", # [Input Only] Specifies how Deployment Manager should apply this template. Possible options are PREVIEW, UPDATE, and CANCEL.
        # 
        # PREVIEW creates a deployment and creates "shell" resources but does not actually instantiate these resources. This allows you to preview what your deployment looks like. You can use this intent to preview updates to deployments or preview new deployments. You must provide a target.config with a configuration for this intent. After previewing a deployment, you can deploy your resources by making a request with the UPDATE intent or you can CANCEL the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it.
        # 
        # UPDATE performs an update to the underlying resources in a deployment. If you provide a populated target.config field with this request, Deployment Manager uses that configuration to perform an update. If you had previewed this update beforehand, and do not supply a target.config or provide an empty target.config, Deployment Manager uses the last previewed configuration.
        # 
        # CANCEL cancels an update that is in PREVIEW or UPDATE but does not undo any changes already made.
    "insertTime": "A String", # [Output Only] Timestamp when the deployment was created, in RFC3339 text format .
    "fingerprint": "A String", # Specifies a fingerprint for update() requests. A fingerprint is a randomly generated value that must be provided in update() requests to perform optimistic locking. This ensures optimistic concurrency so that only one update can be performed at a time.
        # 
        # The fingerprint is initially generated by Deployment Manager and changes after every request to modify data. To get the latest fingerprint value, perform a get() request to a deployment.
    "target": { # [Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates.
      "imports": [ # Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template.
        {
          "content": "A String", # The contents of the file.
          "name": "A String", # The name of the file.
        },
      ],
      "config": "A String", # The configuration to use for this deployment.
    },
    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
    "name": "A String", # The name of the deployment, which must be unique within the project.
  }


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", # [Output Only] An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project.
    "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", # [Output Only] Type of the operation, such as insert, update, and delete.
    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
    "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 operation will be complete. This number should monotonically increase as the operation progresses.
    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as 404.
    "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 RFC3339 text format.
    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
      {
        "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] A warning data value corresponding to the key.
            "key": "A String", # [Output Only] A key for the warning data.
          },
        ],
      },
    ],
    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This is in RFC3339 text format.
    "kind": "deploymentmanager#operation", # [Output Only] Type of the resource. Always compute#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. Only applicable for regional resources.
    "error": { # [Output Only] If errors are generated during processing of the 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 which caused the error. This property is optional.
        },
      ],
    },
    "endTime": "A String", # [Output Only] The time that this operation was completed. This is in RFC3339 text format.
    "selfLink": "A String", # [Output Only] Server defined 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, maxResults=None, pageToken=None, filter=None)</code>
  <pre>Lists all deployments for a given project.

Args:
  project: string, The project ID for this request. (required)
  maxResults: integer, Maximum count of results to be returned.
  pageToken: string, Tag returned by a previous list request when that list was truncated to maxResults. Used to continue a previous list request.
  filter: string, Filter expression for filtering listed resources.

Returns:
  An object of the form:

    { # A response containing a partial list of deployments and a page token used to build the next request if the request has been truncated.
    "nextPageToken": "A String", # [Output Only] A token used to continue a truncated list request.
    "deployments": [ # [Output Only] The deployments contained in this response.
      {
          "updateTime": "A String", # [Output Only] Timestamp when the deployment was updated, in RFC3339 text format .
          "description": "A String", # An optional user-provided description of the deployment.
          "update": { # [Output Only] If Deployment Manager is currently updating or previewing an update to this deployment, the updated configuration appears here.
            "errors": [ # [Output Only] List of all errors encountered while trying to enact the update.
              "A String",
            ],
            "manifest": "A String", # [Output Only] URL of the manifest representing the update configuration of this deployment.
          },
          "manifest": "A String", # [Output Only] URL of the manifest representing the last manifest that was successfully deployed.
          "state": "A String", # [Output Only] The current state of the deployment. This can be DEPLOYED, DEPLOYMENT_FAILED, PREVIEWING, UPDATING, and CANCELING.
          "intent": "A String", # [Input Only] Specifies how Deployment Manager should apply this template. Possible options are PREVIEW, UPDATE, and CANCEL.
              #
              # PREVIEW creates a deployment and creates "shell" resources but does not actually instantiate these resources. This allows you to preview what your deployment looks like. You can use this intent to preview updates to deployments or preview new deployments. You must provide a target.config with a configuration for this intent. After previewing a deployment, you can deploy your resources by making a request with the UPDATE intent or you can CANCEL the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it.
              #
              # UPDATE performs an update to the underlying resources in a deployment. If you provide a populated target.config field with this request, Deployment Manager uses that configuration to perform an update. If you had previewed this update beforehand, and do not supply a target.config or provide an empty target.config, Deployment Manager uses the last previewed configuration.
              #
              # CANCEL cancels an update that is in PREVIEW or UPDATE but does not undo any changes already made.
          "insertTime": "A String", # [Output Only] Timestamp when the deployment was created, in RFC3339 text format .
          "fingerprint": "A String", # Specifies a fingerprint for update() requests. A fingerprint is a randomly generated value that must be provided in update() requests to perform optimistic locking. This ensures optimistic concurrency so that only one update can be performed at a time.
              #
              # The fingerprint is initially generated by Deployment Manager and changes after every request to modify data. To get the latest fingerprint value, perform a get() request to a deployment.
          "target": { # [Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates.
            "imports": [ # Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template.
              {
                "content": "A String", # The contents of the file.
                "name": "A String", # The name of the file.
              },
            ],
            "config": "A String", # The configuration to use for this deployment.
          },
          "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
          "name": "A String", # The name of the deployment, which must be unique within the project.
        },
    ],
  }</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="patch">patch(project, deployment, body, deletePolicy=None, updatePolicy=None, createPolicy=None)</code>
  <pre>Updates a deployment and all of the resources described by the deployment manifest. This method supports patch semantics.

Args:
  project: string, The project ID for this request. (required)
  deployment: string, The name of the deployment for this request. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "updateTime": "A String", # [Output Only] Timestamp when the deployment was updated, in RFC3339 text format .
    "description": "A String", # An optional user-provided description of the deployment.
    "update": { # [Output Only] If Deployment Manager is currently updating or previewing an update to this deployment, the updated configuration appears here.
      "errors": [ # [Output Only] List of all errors encountered while trying to enact the update.
        "A String",
      ],
      "manifest": "A String", # [Output Only] URL of the manifest representing the update configuration of this deployment.
    },
    "manifest": "A String", # [Output Only] URL of the manifest representing the last manifest that was successfully deployed.
    "state": "A String", # [Output Only] The current state of the deployment. This can be DEPLOYED, DEPLOYMENT_FAILED, PREVIEWING, UPDATING, and CANCELING.
    "intent": "A String", # [Input Only] Specifies how Deployment Manager should apply this template. Possible options are PREVIEW, UPDATE, and CANCEL.
        # 
        # PREVIEW creates a deployment and creates "shell" resources but does not actually instantiate these resources. This allows you to preview what your deployment looks like. You can use this intent to preview updates to deployments or preview new deployments. You must provide a target.config with a configuration for this intent. After previewing a deployment, you can deploy your resources by making a request with the UPDATE intent or you can CANCEL the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it.
        # 
        # UPDATE performs an update to the underlying resources in a deployment. If you provide a populated target.config field with this request, Deployment Manager uses that configuration to perform an update. If you had previewed this update beforehand, and do not supply a target.config or provide an empty target.config, Deployment Manager uses the last previewed configuration.
        # 
        # CANCEL cancels an update that is in PREVIEW or UPDATE but does not undo any changes already made.
    "insertTime": "A String", # [Output Only] Timestamp when the deployment was created, in RFC3339 text format .
    "fingerprint": "A String", # Specifies a fingerprint for update() requests. A fingerprint is a randomly generated value that must be provided in update() requests to perform optimistic locking. This ensures optimistic concurrency so that only one update can be performed at a time.
        # 
        # The fingerprint is initially generated by Deployment Manager and changes after every request to modify data. To get the latest fingerprint value, perform a get() request to a deployment.
    "target": { # [Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates.
      "imports": [ # Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template.
        {
          "content": "A String", # The contents of the file.
          "name": "A String", # The name of the file.
        },
      ],
      "config": "A String", # The configuration to use for this deployment.
    },
    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
    "name": "A String", # The name of the deployment, which must be unique within the project.
  }

  deletePolicy: string, Sets the policy to use for deleting resources.
    Allowed values
      ABANDON - 
      DELETE - 
  updatePolicy: string, Sets the policy to use for updating resources.
    Allowed values
      PATCH - 
      UPDATE - 
  createPolicy: string, Sets the policy to use for creating new resources.
    Allowed values
      ACQUIRE - 
      CREATE_OR_ACQUIRE - 

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", # [Output Only] An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project.
    "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", # [Output Only] Type of the operation, such as insert, update, and delete.
    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
    "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 operation will be complete. This number should monotonically increase as the operation progresses.
    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as 404.
    "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 RFC3339 text format.
    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
      {
        "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] A warning data value corresponding to the key.
            "key": "A String", # [Output Only] A key for the warning data.
          },
        ],
      },
    ],
    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This is in RFC3339 text format.
    "kind": "deploymentmanager#operation", # [Output Only] Type of the resource. Always compute#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. Only applicable for regional resources.
    "error": { # [Output Only] If errors are generated during processing of the 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 which caused the error. This property is optional.
        },
      ],
    },
    "endTime": "A String", # [Output Only] The time that this operation was completed. This is in RFC3339 text format.
    "selfLink": "A String", # [Output Only] Server defined 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="update">update(project, deployment, body, deletePolicy=None, updatePolicy=None, createPolicy=None)</code>
  <pre>Updates a deployment and all of the resources described by the deployment manifest.

Args:
  project: string, The project ID for this request. (required)
  deployment: string, The name of the deployment for this request. (required)
  body: object, The request body. (required)
    The object takes the form of:

{
    "updateTime": "A String", # [Output Only] Timestamp when the deployment was updated, in RFC3339 text format .
    "description": "A String", # An optional user-provided description of the deployment.
    "update": { # [Output Only] If Deployment Manager is currently updating or previewing an update to this deployment, the updated configuration appears here.
      "errors": [ # [Output Only] List of all errors encountered while trying to enact the update.
        "A String",
      ],
      "manifest": "A String", # [Output Only] URL of the manifest representing the update configuration of this deployment.
    },
    "manifest": "A String", # [Output Only] URL of the manifest representing the last manifest that was successfully deployed.
    "state": "A String", # [Output Only] The current state of the deployment. This can be DEPLOYED, DEPLOYMENT_FAILED, PREVIEWING, UPDATING, and CANCELING.
    "intent": "A String", # [Input Only] Specifies how Deployment Manager should apply this template. Possible options are PREVIEW, UPDATE, and CANCEL.
        # 
        # PREVIEW creates a deployment and creates "shell" resources but does not actually instantiate these resources. This allows you to preview what your deployment looks like. You can use this intent to preview updates to deployments or preview new deployments. You must provide a target.config with a configuration for this intent. After previewing a deployment, you can deploy your resources by making a request with the UPDATE intent or you can CANCEL the preview altogether. Note that the deployment will still exist after you cancel the preview and you must separately delete this deployment if you want to remove it.
        # 
        # UPDATE performs an update to the underlying resources in a deployment. If you provide a populated target.config field with this request, Deployment Manager uses that configuration to perform an update. If you had previewed this update beforehand, and do not supply a target.config or provide an empty target.config, Deployment Manager uses the last previewed configuration.
        # 
        # CANCEL cancels an update that is in PREVIEW or UPDATE but does not undo any changes already made.
    "insertTime": "A String", # [Output Only] Timestamp when the deployment was created, in RFC3339 text format .
    "fingerprint": "A String", # Specifies a fingerprint for update() requests. A fingerprint is a randomly generated value that must be provided in update() requests to perform optimistic locking. This ensures optimistic concurrency so that only one update can be performed at a time.
        # 
        # The fingerprint is initially generated by Deployment Manager and changes after every request to modify data. To get the latest fingerprint value, perform a get() request to a deployment.
    "target": { # [Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates.
      "imports": [ # Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template.
        {
          "content": "A String", # The contents of the file.
          "name": "A String", # The name of the file.
        },
      ],
      "config": "A String", # The configuration to use for this deployment.
    },
    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
    "name": "A String", # The name of the deployment, which must be unique within the project.
  }

  deletePolicy: string, Sets the policy to use for deleting resources.
    Allowed values
      ABANDON - 
      DELETE - 
  updatePolicy: string, Sets the policy to use for updating resources.
    Allowed values
      PATCH - 
      UPDATE - 
  createPolicy: string, Sets the policy to use for creating new resources.
    Allowed values
      ACQUIRE - 
      CREATE_OR_ACQUIRE - 

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", # [Output Only] An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project.
    "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", # [Output Only] Type of the operation, such as insert, update, and delete.
    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
    "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 operation will be complete. This number should monotonically increase as the operation progresses.
    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as 404.
    "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 RFC3339 text format.
    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
      {
        "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] A warning data value corresponding to the key.
            "key": "A String", # [Output Only] A key for the warning data.
          },
        ],
      },
    ],
    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This is in RFC3339 text format.
    "kind": "deploymentmanager#operation", # [Output Only] Type of the resource. Always compute#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. Only applicable for regional resources.
    "error": { # [Output Only] If errors are generated during processing of the 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 which caused the error. This property is optional.
        },
      ],
    },
    "endTime": "A String", # [Output Only] The time that this operation was completed. This is in RFC3339 text format.
    "selfLink": "A String", # [Output Only] Server defined URL for the resource.
    "targetLink": "A String", # [Output Only] URL of the resource the operation is mutating.
  }</pre>
</div>

</body></html>