<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="remotebuildexecution_v1alpha.html">Remote Build Execution API</a> . <a href="remotebuildexecution_v1alpha.projects.html">projects</a> . <a href="remotebuildexecution_v1alpha.projects.instances.html">instances</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="remotebuildexecution_v1alpha.projects.instances.workerpools.html">workerpools()</a></code>
</p>
<p class="firstline">Returns the workerpools Resource.</p>

<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new instance in the specified region. Returns a long running operation which contains an instance on completion. While the long running operation is in progress, any call to `GetInstance` returns an instance in state `CREATING`.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified instance. Returns a long running operation which contains a `google.protobuf.Empty` response on completion. Deleting an instance with worker pools in it will delete these worker pools.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the specified instance.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, x__xgafv=None)</a></code></p>
<p class="firstline">Lists instances in a project.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, name1=None, updateMask=None, loggingEnabled=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified instance. Returns a long running operation which contains the updated instance in the response on completion.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates a new instance in the specified region. Returns a long running operation which contains an instance on completion. While the long running operation is in progress, any call to `GetInstance` returns an instance in state `CREATING`.

Args:
  parent: string, Resource name of the project containing the instance. Format: `projects/[PROJECT_ID]`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request used for `CreateInstance`.
    &quot;instance&quot;: { # Instance conceptually encapsulates all Remote Build Execution resources for remote builds. An instance consists of storage and compute resources (for example, `ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used for running remote builds. All Remote Build Execution API calls are scoped to an instance. # Specifies the instance to create. The name in the instance, if specified in the instance, is ignored.
        &quot;location&quot;: &quot;A String&quot;, # The location is a GCP region. Currently only `us-central1` is supported.
        &quot;featurePolicy&quot;: { # FeaturePolicy defines features allowed to be used on RBE instances, as well as instance-wide behavior changes that take effect without opt-in or opt-out at usage time. # The policy to define whether or not RBE features can be used or how they can be used.
          &quot;dockerAddCapabilities&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerAddCapabilities can be used or what capabilities are allowed.
            &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
            &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
              &quot;A String&quot;,
            ],
          },
          &quot;dockerChrootPath&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerChrootPath can be used.
            &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
            &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
              &quot;A String&quot;,
            ],
          },
          &quot;linuxIsolation&quot;: &quot;A String&quot;, # linux_isolation allows overriding the docker runtime used for containers started on Linux.
          &quot;dockerSiblingContainers&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerSiblingContainers can be used.
            &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
            &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
              &quot;A String&quot;,
            ],
          },
          &quot;dockerRuntime&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerRuntime is allowed to be set or what runtimes are allowed. Note linux_isolation takes precedence, and if set, docker_runtime values may be rejected if they are incompatible with the selected isolation.
            &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
            &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
              &quot;A String&quot;,
            ],
          },
          &quot;dockerNetwork&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerNetwork can be used or what network modes are allowed. E.g. one may allow `off` value only via `allowed_values`.
            &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
            &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
              &quot;A String&quot;,
            ],
          },
          &quot;dockerRunAsRoot&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerRunAsRoot can be used.
            &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
            &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
              &quot;A String&quot;,
            ],
          },
          &quot;dockerPrivileged&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerPrivileged can be used.
            &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
            &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
              &quot;A String&quot;,
            ],
          },
          &quot;containerImageSources&quot;: { # Defines whether a feature can be used or what values are accepted. # Which container image sources are allowed. Currently only RBE-supported registry (gcr.io) is allowed. One can allow all repositories under a project or one specific repository only. E.g. container_image_sources { policy: RESTRICTED allowed_values: [ &quot;gcr.io/project-foo&quot;, &quot;gcr.io/project-bar/repo-baz&quot;, ] } will allow any repositories under &quot;gcr.io/project-foo&quot; plus the repository &quot;gcr.io/project-bar/repo-baz&quot;. Default (UNSPECIFIED) is equivalent to any source is allowed.
            &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
            &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
              &quot;A String&quot;,
            ],
          },
        },
        &quot;name&quot;: &quot;A String&quot;, # Output only. Instance resource name formatted as: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`. Name should not be populated when creating an instance since it is provided in the `instance_id` field.
        &quot;state&quot;: &quot;A String&quot;, # Output only. State of the instance.
        &quot;loggingEnabled&quot;: True or False, # Output only. Whether stack driver logging is enabled for the instance.
      },
    &quot;instanceId&quot;: &quot;A String&quot;, # ID of the created instance. A valid `instance_id` must: be 6-50 characters long, contain only lowercase letters, digits, hyphens and underscores, start with a lowercase letter, and end with a lowercase letter or a digit.
    &quot;parent&quot;: &quot;A String&quot;, # Resource name of the project containing the instance. Format: `projects/[PROJECT_ID]`.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
    &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes the specified instance. Returns a long running operation which contains a `google.protobuf.Empty` response on completion. Deleting an instance with worker pools in it will delete these worker pools.

Args:
  name: string, Name of the instance to delete. Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
    &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Returns the specified instance.

Args:
  name: string, Name of the instance to retrieve. Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Instance conceptually encapsulates all Remote Build Execution resources for remote builds. An instance consists of storage and compute resources (for example, `ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used for running remote builds. All Remote Build Execution API calls are scoped to an instance.
      &quot;location&quot;: &quot;A String&quot;, # The location is a GCP region. Currently only `us-central1` is supported.
      &quot;featurePolicy&quot;: { # FeaturePolicy defines features allowed to be used on RBE instances, as well as instance-wide behavior changes that take effect without opt-in or opt-out at usage time. # The policy to define whether or not RBE features can be used or how they can be used.
        &quot;dockerAddCapabilities&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerAddCapabilities can be used or what capabilities are allowed.
          &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
          &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
            &quot;A String&quot;,
          ],
        },
        &quot;dockerChrootPath&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerChrootPath can be used.
          &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
          &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
            &quot;A String&quot;,
          ],
        },
        &quot;linuxIsolation&quot;: &quot;A String&quot;, # linux_isolation allows overriding the docker runtime used for containers started on Linux.
        &quot;dockerSiblingContainers&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerSiblingContainers can be used.
          &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
          &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
            &quot;A String&quot;,
          ],
        },
        &quot;dockerRuntime&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerRuntime is allowed to be set or what runtimes are allowed. Note linux_isolation takes precedence, and if set, docker_runtime values may be rejected if they are incompatible with the selected isolation.
          &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
          &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
            &quot;A String&quot;,
          ],
        },
        &quot;dockerNetwork&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerNetwork can be used or what network modes are allowed. E.g. one may allow `off` value only via `allowed_values`.
          &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
          &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
            &quot;A String&quot;,
          ],
        },
        &quot;dockerRunAsRoot&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerRunAsRoot can be used.
          &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
          &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
            &quot;A String&quot;,
          ],
        },
        &quot;dockerPrivileged&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerPrivileged can be used.
          &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
          &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
            &quot;A String&quot;,
          ],
        },
        &quot;containerImageSources&quot;: { # Defines whether a feature can be used or what values are accepted. # Which container image sources are allowed. Currently only RBE-supported registry (gcr.io) is allowed. One can allow all repositories under a project or one specific repository only. E.g. container_image_sources { policy: RESTRICTED allowed_values: [ &quot;gcr.io/project-foo&quot;, &quot;gcr.io/project-bar/repo-baz&quot;, ] } will allow any repositories under &quot;gcr.io/project-foo&quot; plus the repository &quot;gcr.io/project-bar/repo-baz&quot;. Default (UNSPECIFIED) is equivalent to any source is allowed.
          &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
          &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
            &quot;A String&quot;,
          ],
        },
      },
      &quot;name&quot;: &quot;A String&quot;, # Output only. Instance resource name formatted as: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`. Name should not be populated when creating an instance since it is provided in the `instance_id` field.
      &quot;state&quot;: &quot;A String&quot;, # Output only. State of the instance.
      &quot;loggingEnabled&quot;: True or False, # Output only. Whether stack driver logging is enabled for the instance.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, x__xgafv=None)</code>
  <pre>Lists instances in a project.

Args:
  parent: string, Resource name of the project. Format: `projects/[PROJECT_ID]`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;instances&quot;: [ # The list of instances in a given project.
      { # Instance conceptually encapsulates all Remote Build Execution resources for remote builds. An instance consists of storage and compute resources (for example, `ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used for running remote builds. All Remote Build Execution API calls are scoped to an instance.
          &quot;location&quot;: &quot;A String&quot;, # The location is a GCP region. Currently only `us-central1` is supported.
          &quot;featurePolicy&quot;: { # FeaturePolicy defines features allowed to be used on RBE instances, as well as instance-wide behavior changes that take effect without opt-in or opt-out at usage time. # The policy to define whether or not RBE features can be used or how they can be used.
            &quot;dockerAddCapabilities&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerAddCapabilities can be used or what capabilities are allowed.
              &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
              &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
                &quot;A String&quot;,
              ],
            },
            &quot;dockerChrootPath&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerChrootPath can be used.
              &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
              &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
                &quot;A String&quot;,
              ],
            },
            &quot;linuxIsolation&quot;: &quot;A String&quot;, # linux_isolation allows overriding the docker runtime used for containers started on Linux.
            &quot;dockerSiblingContainers&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerSiblingContainers can be used.
              &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
              &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
                &quot;A String&quot;,
              ],
            },
            &quot;dockerRuntime&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerRuntime is allowed to be set or what runtimes are allowed. Note linux_isolation takes precedence, and if set, docker_runtime values may be rejected if they are incompatible with the selected isolation.
              &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
              &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
                &quot;A String&quot;,
              ],
            },
            &quot;dockerNetwork&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerNetwork can be used or what network modes are allowed. E.g. one may allow `off` value only via `allowed_values`.
              &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
              &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
                &quot;A String&quot;,
              ],
            },
            &quot;dockerRunAsRoot&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerRunAsRoot can be used.
              &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
              &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
                &quot;A String&quot;,
              ],
            },
            &quot;dockerPrivileged&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerPrivileged can be used.
              &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
              &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
                &quot;A String&quot;,
              ],
            },
            &quot;containerImageSources&quot;: { # Defines whether a feature can be used or what values are accepted. # Which container image sources are allowed. Currently only RBE-supported registry (gcr.io) is allowed. One can allow all repositories under a project or one specific repository only. E.g. container_image_sources { policy: RESTRICTED allowed_values: [ &quot;gcr.io/project-foo&quot;, &quot;gcr.io/project-bar/repo-baz&quot;, ] } will allow any repositories under &quot;gcr.io/project-foo&quot; plus the repository &quot;gcr.io/project-bar/repo-baz&quot;. Default (UNSPECIFIED) is equivalent to any source is allowed.
              &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
              &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
                &quot;A String&quot;,
              ],
            },
          },
          &quot;name&quot;: &quot;A String&quot;, # Output only. Instance resource name formatted as: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`. Name should not be populated when creating an instance since it is provided in the `instance_id` field.
          &quot;state&quot;: &quot;A String&quot;, # Output only. State of the instance.
          &quot;loggingEnabled&quot;: True or False, # Output only. Whether stack driver logging is enabled for the instance.
        },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, name1=None, updateMask=None, loggingEnabled=None, x__xgafv=None)</code>
  <pre>Updates the specified instance. Returns a long running operation which contains the updated instance in the response on completion.

Args:
  name: string, Output only. Instance resource name formatted as: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`. Name should not be populated when creating an instance since it is provided in the `instance_id` field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Instance conceptually encapsulates all Remote Build Execution resources for remote builds. An instance consists of storage and compute resources (for example, `ContentAddressableStorage`, `ActionCache`, `WorkerPools`) used for running remote builds. All Remote Build Execution API calls are scoped to an instance.
    &quot;location&quot;: &quot;A String&quot;, # The location is a GCP region. Currently only `us-central1` is supported.
    &quot;featurePolicy&quot;: { # FeaturePolicy defines features allowed to be used on RBE instances, as well as instance-wide behavior changes that take effect without opt-in or opt-out at usage time. # The policy to define whether or not RBE features can be used or how they can be used.
      &quot;dockerAddCapabilities&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerAddCapabilities can be used or what capabilities are allowed.
        &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
        &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
          &quot;A String&quot;,
        ],
      },
      &quot;dockerChrootPath&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerChrootPath can be used.
        &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
        &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
          &quot;A String&quot;,
        ],
      },
      &quot;linuxIsolation&quot;: &quot;A String&quot;, # linux_isolation allows overriding the docker runtime used for containers started on Linux.
      &quot;dockerSiblingContainers&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerSiblingContainers can be used.
        &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
        &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
          &quot;A String&quot;,
        ],
      },
      &quot;dockerRuntime&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerRuntime is allowed to be set or what runtimes are allowed. Note linux_isolation takes precedence, and if set, docker_runtime values may be rejected if they are incompatible with the selected isolation.
        &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
        &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
          &quot;A String&quot;,
        ],
      },
      &quot;dockerNetwork&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerNetwork can be used or what network modes are allowed. E.g. one may allow `off` value only via `allowed_values`.
        &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
        &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
          &quot;A String&quot;,
        ],
      },
      &quot;dockerRunAsRoot&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerRunAsRoot can be used.
        &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
        &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
          &quot;A String&quot;,
        ],
      },
      &quot;dockerPrivileged&quot;: { # Defines whether a feature can be used or what values are accepted. # Whether dockerPrivileged can be used.
        &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
        &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
          &quot;A String&quot;,
        ],
      },
      &quot;containerImageSources&quot;: { # Defines whether a feature can be used or what values are accepted. # Which container image sources are allowed. Currently only RBE-supported registry (gcr.io) is allowed. One can allow all repositories under a project or one specific repository only. E.g. container_image_sources { policy: RESTRICTED allowed_values: [ &quot;gcr.io/project-foo&quot;, &quot;gcr.io/project-bar/repo-baz&quot;, ] } will allow any repositories under &quot;gcr.io/project-foo&quot; plus the repository &quot;gcr.io/project-bar/repo-baz&quot;. Default (UNSPECIFIED) is equivalent to any source is allowed.
        &quot;policy&quot;: &quot;A String&quot;, # The policy of the feature.
        &quot;allowedValues&quot;: [ # A list of acceptable values. Only effective when the policy is `RESTRICTED`.
          &quot;A String&quot;,
        ],
      },
    },
    &quot;name&quot;: &quot;A String&quot;, # Output only. Instance resource name formatted as: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`. Name should not be populated when creating an instance since it is provided in the `instance_id` field.
    &quot;state&quot;: &quot;A String&quot;, # Output only. State of the instance.
    &quot;loggingEnabled&quot;: True or False, # Output only. Whether stack driver logging is enabled for the instance.
  }

  name1: string, Deprecated, use instance.Name instead. Name of the instance to update. Format: `projects/[PROJECT_ID]/instances/[INSTANCE_ID]`.
  updateMask: string, The update mask applies to instance. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask If an empty update_mask is provided, only the non-default valued field in the worker pool field will be updated. Note that in order to update a field to the default value (zero, false, empty string) an explicit update_mask must be provided.
  loggingEnabled: boolean, Deprecated, use instance.logging_enabled instead. Whether to enable Stackdriver logging for this instance.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
    &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
    &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
      &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
    },
    &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
    &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
      &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
      &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
      &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
        {
          &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
  }</pre>
</div>

</body></html>