<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="run_v1.html">Cloud Run Admin API</a> . <a href="run_v1.namespaces.html">namespaces</a> . <a href="run_v1.namespaces.executions.html">executions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#cancel">cancel(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Cancel an execution.</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="#delete">delete(name, apiVersion=None, kind=None, propagationPolicy=None, x__xgafv=None)</a></code></p>
<p class="firstline">Delete an execution.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get information about an execution.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, continue=None, fieldSelector=None, includeUninitialized=None, labelSelector=None, limit=None, resourceVersion=None, watch=None, x__xgafv=None)</a></code></p>
<p class="firstline">List executions.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="cancel">cancel(name, body=None, x__xgafv=None)</code>
  <pre>Cancel an execution.

Args:
  name: string, Required. The name of the execution to cancel. Replace {namespace} with the project ID or number. It takes the form namespaces/{namespace}. For example: namespaces/PROJECT_ID (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for cancelling an execution.
}

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

Returns:
  An object of the form:

    { # Execution represents the configuration of a single execution. An execution is an immutable resource that references a container image which is run to completion.
  &quot;apiVersion&quot;: &quot;A String&quot;, # Optional. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values.
  &quot;kind&quot;: &quot;A String&quot;, # Optional. Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.
  &quot;metadata&quot;: { # google.cloud.run.meta.v1.ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Optional. Standard object&#x27;s metadata.
    &quot;annotations&quot;: { # Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. In Cloud Run, annotations with &#x27;run.googleapis.com/&#x27; and &#x27;autoscaling.knative.dev&#x27; are restricted, and the accepted annotations will be different depending on the resource type. * `autoscaling.knative.dev/maxScale`: Revision. * `autoscaling.knative.dev/minScale`: Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/client-name`: All resources. * `run.googleapis.com/cloudsql-instances`: Revision, Execution. * `run.googleapis.com/container-dependencies`: Revision. * `run.googleapis.com/cpu-throttling`: Revision. * `run.googleapis.com/custom-audiences`: Service. * `run.googleapis.com/description`: Service. * `run.googleapis.com/encryption-key-shutdown-hours`: Revision * `run.googleapis.com/encryption-key`: Revision, Execution. * `run.googleapis.com/execution-environment`: Revision, Execution. * `run.googleapis.com/gc-traffic-tags`: Service. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service (ALPHA) * `run.googleapis.com/network-interfaces`: Revision, Execution. * `run.googleapis.com/post-key-revocation-action-type`: Revision. * `run.googleapis.com/secrets`: Revision, Execution. * `run.googleapis.com/secure-session-agent`: Revision. * `run.googleapis.com/sessionAffinity`: Revision. * `run.googleapis.com/startup-cpu-boost`: Revision. * `run.googleapis.com/vpc-access-connector`: Revision, Execution. * `run.googleapis.com/vpc-access-egress`: Revision, Execution.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;clusterName&quot;: &quot;A String&quot;, # Not supported by Cloud Run
    &quot;creationTimestamp&quot;: &quot;A String&quot;, # UTC timestamp representing the server time when this object was created.
    &quot;deletionGracePeriodSeconds&quot;: 42, # Not supported by Cloud Run
    &quot;deletionTimestamp&quot;: &quot;A String&quot;, # The read-only soft deletion timestamp for this resource. In Cloud Run, users are not able to set this field. Instead, they must call the corresponding Delete API.
    &quot;finalizers&quot;: [ # Not supported by Cloud Run
      &quot;A String&quot;,
    ],
    &quot;generateName&quot;: &quot;A String&quot;, # Not supported by Cloud Run
    &quot;generation&quot;: 42, # A system-provided sequence number representing a specific generation of the desired state.
    &quot;labels&quot;: { # Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and routes.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;name&quot;: &quot;A String&quot;, # Required. The name of the resource. Name is required when creating top-level resources (Service, Job), must be unique within a Cloud Run project/region, and cannot be changed once created.
    &quot;namespace&quot;: &quot;A String&quot;, # Required. Defines the space within each name must be unique within a Cloud Run region. In Cloud Run, it must be project ID or number.
    &quot;ownerReferences&quot;: [ # Not supported by Cloud Run
      { # This is not supported or used by Cloud Run.
        &quot;apiVersion&quot;: &quot;A String&quot;, # This is not supported or used by Cloud Run.
        &quot;blockOwnerDeletion&quot;: True or False, # This is not supported or used by Cloud Run.
        &quot;controller&quot;: True or False, # This is not supported or used by Cloud Run.
        &quot;kind&quot;: &quot;A String&quot;, # This is not supported or used by Cloud Run.
        &quot;name&quot;: &quot;A String&quot;, # This is not supported or used by Cloud Run.
        &quot;uid&quot;: &quot;A String&quot;, # This is not supported or used by Cloud Run.
      },
    ],
    &quot;resourceVersion&quot;: &quot;A String&quot;, # Opaque, system-generated value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server or omit the value to disable conflict-detection.
    &quot;selfLink&quot;: &quot;A String&quot;, # URL representing this object.
    &quot;uid&quot;: &quot;A String&quot;, # Unique, system-generated identifier for this resource.
  },
  &quot;spec&quot;: { # ExecutionSpec describes how the execution will look. # Optional. Specification of the desired behavior of an execution.
    &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of tasks the execution should run at given time. Must be &lt;= task_count. When the job is run, if this field is 0 or unset, the maximum possible value will be used for that execution. The actual number of tasks running in steady state will be less than this number when there are fewer tasks waiting to be completed, i.e. when the work left to do is less than max parallelism.
    &quot;taskCount&quot;: 42, # Optional. Specifies the desired number of tasks the execution should run. Setting to 1 means that parallelism is limited to 1 and the success of that task signals the success of the execution. Defaults to 1.
    &quot;template&quot;: { # TaskTemplateSpec describes the data a task should have when created from a template. # Optional. The template used to create tasks for this execution.
      &quot;spec&quot;: { # TaskSpec is a description of a task. # Optional. Specification of the desired behavior of the task.
        &quot;containers&quot;: [ # Optional. List of containers belonging to the task. We disallow a number of fields on this Container.
          { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
            &quot;args&quot;: [ # Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references are not supported in Cloud Run.
              &quot;A String&quot;,
            ],
            &quot;command&quot;: [ # Entrypoint array. Not executed within a shell. The docker image&#x27;s ENTRYPOINT is used if this is not provided. Variable references are not supported in Cloud Run.
              &quot;A String&quot;,
            ],
            &quot;env&quot;: [ # List of environment variables to set in the container. EnvVar with duplicate names are generally allowed; if referencing a secret, the name must be unique for the container. For non-secret EnvVar names, the Container will only get the last-declared one.
              { # EnvVar represents an environment variable present in a Container.
                &quot;name&quot;: &quot;A String&quot;, # Required. Name of the environment variable.
                &quot;value&quot;: &quot;A String&quot;, # Value of the environment variable. Defaults to &quot;&quot;. Variable references are not supported in Cloud Run.
                &quot;valueFrom&quot;: { # EnvVarSource represents a source for the value of an EnvVar. # Source for the environment variable&#x27;s value. Only supports secret_key_ref. Cannot be used if value is not empty.
                  &quot;configMapKeyRef&quot;: { # Not supported by Cloud Run. # Not supported by Cloud Run. Not supported in Cloud Run.
                    &quot;key&quot;: &quot;A String&quot;, # Required. Not supported by Cloud Run.
                    &quot;localObjectReference&quot;: { # Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # Not supported by Cloud Run.
                      &quot;name&quot;: &quot;A String&quot;, # Name of the referent.
                    },
                    &quot;name&quot;: &quot;A String&quot;, # Required. Not supported by Cloud Run.
                    &quot;optional&quot;: True or False, # Not supported by Cloud Run.
                  },
                  &quot;secretKeyRef&quot;: { # SecretKeySelector selects a key of a Secret. # Selects a key (version) of a secret in Secret Manager.
                    &quot;key&quot;: &quot;A String&quot;, # Required. A Cloud Secret Manager secret version. Must be &#x27;latest&#x27; for the latest version, an integer for a specific version, or a version alias. The key of the secret to select from. Must be a valid secret key.
                    &quot;localObjectReference&quot;: { # Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                      &quot;name&quot;: &quot;A String&quot;, # Name of the referent.
                    },
                    &quot;name&quot;: &quot;A String&quot;, # The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. The name of the secret in the pod&#x27;s namespace to select from.
                    &quot;optional&quot;: True or False, # Specify whether the Secret or its key must be defined.
                  },
                },
              },
            ],
            &quot;envFrom&quot;: [ # Not supported by Cloud Run.
              { # Not supported by Cloud Run. EnvFromSource represents the source of a set of ConfigMaps
                &quot;configMapRef&quot;: { # Not supported by Cloud Run. ConfigMapEnvSource selects a ConfigMap to populate the environment variables with. The contents of the target ConfigMap&#x27;s Data field will represent the key-value pairs as environment variables. # The ConfigMap to select from
                  &quot;localObjectReference&quot;: { # Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                    &quot;name&quot;: &quot;A String&quot;, # Name of the referent.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                  &quot;optional&quot;: True or False, # Specify whether the ConfigMap must be defined.
                },
                &quot;prefix&quot;: &quot;A String&quot;, # An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
                &quot;secretRef&quot;: { # Not supported by Cloud Run. SecretEnvSource selects a Secret to populate the environment variables with. The contents of the target Secret&#x27;s Data field will represent the key-value pairs as environment variables. # The Secret to select from
                  &quot;localObjectReference&quot;: { # Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                    &quot;name&quot;: &quot;A String&quot;, # Name of the referent.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The Secret to select from.
                  &quot;optional&quot;: True or False, # Specify whether the Secret must be defined
                },
              },
            ],
            &quot;image&quot;: &quot;A String&quot;, # Required. Name of the container image in Dockerhub, Google Artifact Registry, or Google Container Registry. If the host is not provided, Dockerhub is assumed.
            &quot;imagePullPolicy&quot;: &quot;A String&quot;, # Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
            &quot;livenessProbe&quot;: { # Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # Periodic probe of container liveness. Container will be restarted if the probe fails.
              &quot;exec&quot;: { # Not supported by Cloud Run. ExecAction describes a &quot;run in container&quot; action. # Not supported by Cloud Run.
                &quot;command&quot;: [ # Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                  &quot;A String&quot;,
                ],
              },
              &quot;failureThreshold&quot;: 42, # Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;grpc&quot;: { # GRPCAction describes an action involving a GRPC port. # GRPCAction specifies an action involving a GRPC port.
                &quot;port&quot;: 42, # Port number of the gRPC service. Number must be in the range 1 to 65535.
                &quot;service&quot;: &quot;A String&quot;, # Service is the name of the service to place in the gRPC HealthCheckRequest. If this is not specified, the default behavior is defined by gRPC.
              },
              &quot;httpGet&quot;: { # HTTPGetAction describes an action based on HTTP Get requests. # HTTPGet specifies the http request to perform.
                &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                &quot;httpHeaders&quot;: [ # Custom headers to set in the request. HTTP allows repeated headers.
                  { # HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # Required. The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # Path to access on the HTTP server.
                &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
                &quot;scheme&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
              },
              &quot;initialDelaySeconds&quot;: 42, # Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240.
              &quot;periodSeconds&quot;: 42, # How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.
              &quot;successThreshold&quot;: 42, # Minimum consecutive successes for the probe to be considered successful after having failed. Must be 1 if set.
              &quot;tcpSocket&quot;: { # TCPSocketAction describes an action based on opening a socket # TCPSocket specifies an action involving a TCP port.
                &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
              },
              &quot;timeoutSeconds&quot;: 42, # Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds; if period_seconds is not set, must be less or equal than 10.
            },
            &quot;name&quot;: &quot;A String&quot;, # Name of the container specified as a DNS_LABEL (RFC 1123).
            &quot;ports&quot;: [ # List of ports to expose from the container. Only a single port can be specified. The specified ports must be listening on all interfaces (0.0.0.0) within the container to be accessible. If omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on.
              { # ContainerPort represents a network port in a single container.
                &quot;containerPort&quot;: 42, # Port number the container listens on. If present, this must be a valid port number, 0 &lt; x &lt; 65536. If not present, it will default to port 8080. For more information, see https://cloud.google.com/run/docs/container-contract#port
                &quot;name&quot;: &quot;A String&quot;, # If specified, used to specify which protocol to use. Allowed values are &quot;http1&quot; and &quot;h2c&quot;.
                &quot;protocol&quot;: &quot;A String&quot;, # Protocol for port. Must be &quot;TCP&quot;. Defaults to &quot;TCP&quot;.
              },
            ],
            &quot;readinessProbe&quot;: { # Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # Not supported by Cloud Run.
              &quot;exec&quot;: { # Not supported by Cloud Run. ExecAction describes a &quot;run in container&quot; action. # Not supported by Cloud Run.
                &quot;command&quot;: [ # Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                  &quot;A String&quot;,
                ],
              },
              &quot;failureThreshold&quot;: 42, # Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;grpc&quot;: { # GRPCAction describes an action involving a GRPC port. # GRPCAction specifies an action involving a GRPC port.
                &quot;port&quot;: 42, # Port number of the gRPC service. Number must be in the range 1 to 65535.
                &quot;service&quot;: &quot;A String&quot;, # Service is the name of the service to place in the gRPC HealthCheckRequest. If this is not specified, the default behavior is defined by gRPC.
              },
              &quot;httpGet&quot;: { # HTTPGetAction describes an action based on HTTP Get requests. # HTTPGet specifies the http request to perform.
                &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                &quot;httpHeaders&quot;: [ # Custom headers to set in the request. HTTP allows repeated headers.
                  { # HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # Required. The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # Path to access on the HTTP server.
                &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
                &quot;scheme&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
              },
              &quot;initialDelaySeconds&quot;: 42, # Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240.
              &quot;periodSeconds&quot;: 42, # How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.
              &quot;successThreshold&quot;: 42, # Minimum consecutive successes for the probe to be considered successful after having failed. Must be 1 if set.
              &quot;tcpSocket&quot;: { # TCPSocketAction describes an action based on opening a socket # TCPSocket specifies an action involving a TCP port.
                &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
              },
              &quot;timeoutSeconds&quot;: 42, # Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds; if period_seconds is not set, must be less or equal than 10.
            },
            &quot;resources&quot;: { # ResourceRequirements describes the compute resource requirements. # Compute Resources required by this container.
              &quot;limits&quot;: { # Limits describes the maximum amount of compute resources allowed. Only &#x27;cpu&#x27; and &#x27;memory&#x27; keys are supported. * For supported &#x27;cpu&#x27; values, go to https://cloud.google.com/run/docs/configuring/cpu. * For supported &#x27;memory&#x27; values and syntax, go to https://cloud.google.com/run/docs/configuring/memory-limits
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;requests&quot;: { # Requests describes the minimum amount of compute resources required. Only `cpu` and `memory` are supported. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. * For supported &#x27;cpu&#x27; values, go to https://cloud.google.com/run/docs/configuring/cpu. * For supported &#x27;memory&#x27; values and syntax, go to https://cloud.google.com/run/docs/configuring/memory-limits
                &quot;a_key&quot;: &quot;A String&quot;,
              },
            },
            &quot;securityContext&quot;: { # Not supported by Cloud Run. SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence. # Not supported by Cloud Run.
              &quot;runAsUser&quot;: 42, # The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
            },
            &quot;startupProbe&quot;: { # Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not receive traffic if the probe fails. If not provided, a default startup probe with TCP socket action is used.
              &quot;exec&quot;: { # Not supported by Cloud Run. ExecAction describes a &quot;run in container&quot; action. # Not supported by Cloud Run.
                &quot;command&quot;: [ # Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                  &quot;A String&quot;,
                ],
              },
              &quot;failureThreshold&quot;: 42, # Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;grpc&quot;: { # GRPCAction describes an action involving a GRPC port. # GRPCAction specifies an action involving a GRPC port.
                &quot;port&quot;: 42, # Port number of the gRPC service. Number must be in the range 1 to 65535.
                &quot;service&quot;: &quot;A String&quot;, # Service is the name of the service to place in the gRPC HealthCheckRequest. If this is not specified, the default behavior is defined by gRPC.
              },
              &quot;httpGet&quot;: { # HTTPGetAction describes an action based on HTTP Get requests. # HTTPGet specifies the http request to perform.
                &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                &quot;httpHeaders&quot;: [ # Custom headers to set in the request. HTTP allows repeated headers.
                  { # HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # Required. The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # Path to access on the HTTP server.
                &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
                &quot;scheme&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
              },
              &quot;initialDelaySeconds&quot;: 42, # Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240.
              &quot;periodSeconds&quot;: 42, # How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.
              &quot;successThreshold&quot;: 42, # Minimum consecutive successes for the probe to be considered successful after having failed. Must be 1 if set.
              &quot;tcpSocket&quot;: { # TCPSocketAction describes an action based on opening a socket # TCPSocket specifies an action involving a TCP port.
                &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
              },
              &quot;timeoutSeconds&quot;: 42, # Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds; if period_seconds is not set, must be less or equal than 10.
            },
            &quot;terminationMessagePath&quot;: &quot;A String&quot;, # Path at which the file to which the container&#x27;s termination message will be written is mounted into the container&#x27;s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log.
            &quot;terminationMessagePolicy&quot;: &quot;A String&quot;, # Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.
            &quot;volumeMounts&quot;: [ # Volume to mount into the container&#x27;s filesystem. Only supports SecretVolumeSources. Pod volumes to mount into the container&#x27;s filesystem.
              { # VolumeMount describes a mounting of a Volume within a container.
                &quot;mountPath&quot;: &quot;A String&quot;, # Required. Path within the container at which the volume should be mounted. Must not contain &#x27;:&#x27;.
                &quot;name&quot;: &quot;A String&quot;, # Required. The name of the volume. There must be a corresponding Volume with the same name.
                &quot;readOnly&quot;: True or False, # Sets the mount to be read-only or read-write. Not used by Cloud Run.
                &quot;subPath&quot;: &quot;A String&quot;, # Path within the volume from which the container&#x27;s volume should be mounted. Defaults to &quot;&quot; (volume&#x27;s root).
              },
            ],
            &quot;workingDir&quot;: &quot;A String&quot;, # Container&#x27;s working directory. If not specified, the container runtime&#x27;s default will be used, which might be configured in the container image.
          },
        ],
        &quot;maxRetries&quot;: 42, # Optional. Number of retries allowed per task, before marking this job failed. Defaults to 3.
        &quot;serviceAccountName&quot;: &quot;A String&quot;, # Optional. Email address of the IAM service account associated with the task of a job execution. The service account represents the identity of the running task, and determines what permissions the task has. If not provided, the task will use the project&#x27;s default service account.
        &quot;timeoutSeconds&quot;: &quot;A String&quot;, # Optional. Duration in seconds the task may be active before the system will actively try to mark it failed and kill associated containers. This applies per attempt of a task, meaning each retry can run for the full timeout. Defaults to 600 seconds.
        &quot;volumes&quot;: [ # Optional. List of volumes that can be mounted by containers belonging to the task.
          { # Volume represents a named volume in a container.
            &quot;configMap&quot;: { # Not supported by Cloud Run. Adapts a ConfigMap into a volume. The contents of the target ConfigMap&#x27;s Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. # Not supported in Cloud Run.
              &quot;defaultMode&quot;: 42, # (Optional) Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0644. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
              &quot;items&quot;: [ # (Optional) If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified that is not present in the Secret, the volume setup will error unless it is marked optional.
                { # Maps a string key to a path within a volume.
                  &quot;key&quot;: &quot;A String&quot;, # The Cloud Secret Manager secret version. Can be &#x27;latest&#x27; for the latest value, or an integer or a secret alias for a specific version. The key to project.
                  &quot;mode&quot;: 42, # (Optional) Mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume&#x27;s default mode will be used. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                  &quot;path&quot;: &quot;A String&quot;, # The relative path of the file to map the key to. May not be an absolute path. May not contain the path element &#x27;..&#x27;. May not start with the string &#x27;..&#x27;.
                },
              ],
              &quot;name&quot;: &quot;A String&quot;, # Name of the config.
              &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret or its keys must be defined.
            },
            &quot;emptyDir&quot;: { # In memory (tmpfs) ephemeral storage. It is ephemeral in the sense that when the sandbox is taken down, the data is destroyed with it (it does not persist across sandbox runs). # Ephemeral storage used as a shared volume.
              &quot;medium&quot;: &quot;A String&quot;, # The medium on which the data is stored. The default is &quot;&quot; which means to use the node&#x27;s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
              &quot;sizeLimit&quot;: &quot;A String&quot;, # Limit on the storage usable by this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers. The default is nil which means that the limit is undefined. More info: https://cloud.google.com/run/docs/configuring/in-memory-volumes#configure-volume. Info in Kubernetes: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir
            },
            &quot;name&quot;: &quot;A String&quot;, # Volume&#x27;s name. In Cloud Run Fully Managed, the name &#x27;cloudsql&#x27; is reserved.
            &quot;secret&quot;: { # A volume representing a secret stored in Google Secret Manager. The secret&#x27;s value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secret_name. The contents of the target Secret&#x27;s Data field will be presented in a volume as files using the keys in the Data field as the file names. # The secret&#x27;s value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secretName.
              &quot;defaultMode&quot;: 42, # Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0444. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
              &quot;items&quot;: [ # A list of secret versions to mount in the volume. If no items are specified, the volume will expose a file with the same name as the secret name. The contents of the file will be the data in the latest version of the secret. If items are specified, the key will be used as the version to fetch from Cloud Secret Manager and the path will be the name of the file exposed in the volume. When items are defined, they must specify both a key and a path.
                { # Maps a string key to a path within a volume.
                  &quot;key&quot;: &quot;A String&quot;, # The Cloud Secret Manager secret version. Can be &#x27;latest&#x27; for the latest value, or an integer or a secret alias for a specific version. The key to project.
                  &quot;mode&quot;: 42, # (Optional) Mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume&#x27;s default mode will be used. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                  &quot;path&quot;: &quot;A String&quot;, # The relative path of the file to map the key to. May not be an absolute path. May not contain the path element &#x27;..&#x27;. May not start with the string &#x27;..&#x27;.
                },
              ],
              &quot;optional&quot;: True or False, # Not supported by Cloud Run.
              &quot;secretName&quot;: &quot;A String&quot;, # The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. Name of the secret in the container&#x27;s namespace to use.
            },
          },
        ],
      },
    },
  },
  &quot;status&quot;: { # ExecutionStatus represents the current state of an Execution. # Output only. Current status of an execution.
    &quot;cancelledCount&quot;: 42, # Optional. The number of tasks which reached phase Cancelled.
    &quot;completionTime&quot;: &quot;A String&quot;, # Optional. Represents the time that the execution was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional
    &quot;conditions&quot;: [ # Optional. Conditions communicate information about ongoing/complete reconciliation processes that bring the &quot;spec&quot; inline with the observed state of the world. Execution-specific conditions include: * `ResourcesAvailable`: `True` when underlying resources have been provisioned. * `Started`: `True` when the execution has started to execute. * `Completed`: `True` when the execution has succeeded. `False` when the execution has failed.
      { # Conditions show the status of reconciliation progress on a given resource. Most resource use a top-level condition type &quot;Ready&quot; or &quot;Completed&quot; to show overall status with other conditions to checkpoint each stage of reconciliation. Note that if metadata.Generation does not equal status.ObservedGeneration, the conditions shown may not be relevant for the current spec.
        &quot;lastTransitionTime&quot;: &quot;A String&quot;, # Optional. Last time the condition transitioned from one status to another.
        &quot;message&quot;: &quot;A String&quot;, # Optional. Human readable message indicating details about the current status.
        &quot;reason&quot;: &quot;A String&quot;, # Optional. One-word CamelCase reason for the condition&#x27;s last transition. These are intended to be stable, unique values which the client may use to trigger error handling logic, whereas messages which may be changed later by the server.
        &quot;severity&quot;: &quot;A String&quot;, # Optional. How to interpret this condition. One of Error, Warning, or Info. Conditions of severity Info do not contribute to resource readiness.
        &quot;status&quot;: &quot;A String&quot;, # Status of the condition, one of True, False, Unknown.
        &quot;type&quot;: &quot;A String&quot;, # type is used to communicate the status of the reconciliation process. Types common to all resources include: * &quot;Ready&quot; or &quot;Completed&quot;: True when the Resource is ready.
      },
    ],
    &quot;failedCount&quot;: 42, # Optional. The number of tasks which reached phase Failed.
    &quot;logUri&quot;: &quot;A String&quot;, # Optional. URI where logs for this execution can be found in Cloud Console.
    &quot;observedGeneration&quot;: 42, # Optional. The &#x27;generation&#x27; of the execution that was last processed by the controller.
    &quot;retriedCount&quot;: 42, # Optional. The number of tasks which have retried at least once.
    &quot;runningCount&quot;: 42, # Optional. The number of actively running tasks.
    &quot;startTime&quot;: &quot;A String&quot;, # Optional. Represents the time that the execution started to run. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.
    &quot;succeededCount&quot;: 42, # Optional. The number of tasks which reached phase Succeeded.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, apiVersion=None, kind=None, propagationPolicy=None, x__xgafv=None)</code>
  <pre>Delete an execution.

Args:
  name: string, Required. The name of the execution to delete. Replace {namespace} with the project ID or number. It takes the form namespaces/{namespace}. For example: namespaces/PROJECT_ID (required)
  apiVersion: string, Optional. Cloud Run currently ignores this parameter.
  kind: string, Optional. Cloud Run currently ignores this parameter.
  propagationPolicy: string, Optional. Specifies the propagation policy of delete. Cloud Run currently ignores this setting.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Status is a return value for calls that don&#x27;t return other objects.
  &quot;code&quot;: 42, # Suggested HTTP return code for this status, 0 if not set.
  &quot;details&quot;: { # StatusDetails is a set of additional properties that MAY be set by the server to provide additional information about a response. The Reason field of a Status object defines what attributes will be set. Clients must ignore fields that do not match the defined type of each attribute, and should assume that any attribute may be empty, invalid, or under defined. # Extended data associated with the reason. Each reason may define its own extended details. This field is optional and the data returned is not guaranteed to conform to any schema except that defined by the reason type.
    &quot;causes&quot;: [ # The Causes array includes more details associated with the StatusReason failure. Not all StatusReasons may provide detailed causes.
      { # StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.
        &quot;field&quot;: &quot;A String&quot;, # The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed. Fields may appear more than once in an array of causes due to fields having multiple errors. Examples: &quot;name&quot; - the field &quot;name&quot; on the current resource &quot;items[0].name&quot; - the field &quot;name&quot; on the first array entry in &quot;items&quot;
        &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the cause of the error. This field may be presented as-is to a reader.
        &quot;reason&quot;: &quot;A String&quot;, # A machine-readable description of the cause of the error. If this value is empty there is no information available.
      },
    ],
    &quot;group&quot;: &quot;A String&quot;, # The group attribute of the resource associated with the status StatusReason.
    &quot;kind&quot;: &quot;A String&quot;, # The kind attribute of the resource associated with the status StatusReason. On some operations may differ from the requested resource Kind.
    &quot;name&quot;: &quot;A String&quot;, # The name attribute of the resource associated with the status StatusReason (when there is a single name which can be described).
    &quot;retryAfterSeconds&quot;: 42, # If specified, the time in seconds before the operation should be retried. Some errors may indicate the client must take an alternate action - for those errors this field may indicate how long to wait before taking the alternate action.
    &quot;uid&quot;: &quot;A String&quot;, # UID of the resource. (when there is a single resource which can be described).
  },
  &quot;message&quot;: &quot;A String&quot;, # A human-readable description of the status of this operation.
  &quot;metadata&quot;: { # Metadata for synthetic resources like List. In Cloud Run, all List Resources Responses will have a ListMeta instead of ObjectMeta. # Standard list metadata.
    &quot;continue&quot;: &quot;A String&quot;, # Continuation token is a value emitted when the count of items is larger than the user/system limit. To retrieve the next page of items, pass the value of `continue` as the next request&#x27;s `page_token`.
    &quot;resourceVersion&quot;: &quot;A String&quot;, # Opaque string that identifies the server&#x27;s internal version of this object. It can be used by clients to determine when objects have changed. If the message is passed back to the server, it must be left unmodified.
    &quot;selfLink&quot;: &quot;A String&quot;, # URL representing this object.
  },
  &quot;reason&quot;: &quot;A String&quot;, # A machine-readable description of why this operation is in the &quot;Failure&quot; status. If this value is empty there is no information available. A Reason clarifies an HTTP status code but does not override it.
  &quot;status&quot;: &quot;A String&quot;, # Status of the operation. One of: &quot;Success&quot; or &quot;Failure&quot;.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Get information about an execution.

Args:
  name: string, Required. The name of the execution to retrieve. Replace {namespace} with the project ID or number. It takes the form namespaces/{namespace}. For example: namespaces/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:

    { # Execution represents the configuration of a single execution. An execution is an immutable resource that references a container image which is run to completion.
  &quot;apiVersion&quot;: &quot;A String&quot;, # Optional. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values.
  &quot;kind&quot;: &quot;A String&quot;, # Optional. Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.
  &quot;metadata&quot;: { # google.cloud.run.meta.v1.ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Optional. Standard object&#x27;s metadata.
    &quot;annotations&quot;: { # Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. In Cloud Run, annotations with &#x27;run.googleapis.com/&#x27; and &#x27;autoscaling.knative.dev&#x27; are restricted, and the accepted annotations will be different depending on the resource type. * `autoscaling.knative.dev/maxScale`: Revision. * `autoscaling.knative.dev/minScale`: Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/client-name`: All resources. * `run.googleapis.com/cloudsql-instances`: Revision, Execution. * `run.googleapis.com/container-dependencies`: Revision. * `run.googleapis.com/cpu-throttling`: Revision. * `run.googleapis.com/custom-audiences`: Service. * `run.googleapis.com/description`: Service. * `run.googleapis.com/encryption-key-shutdown-hours`: Revision * `run.googleapis.com/encryption-key`: Revision, Execution. * `run.googleapis.com/execution-environment`: Revision, Execution. * `run.googleapis.com/gc-traffic-tags`: Service. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service (ALPHA) * `run.googleapis.com/network-interfaces`: Revision, Execution. * `run.googleapis.com/post-key-revocation-action-type`: Revision. * `run.googleapis.com/secrets`: Revision, Execution. * `run.googleapis.com/secure-session-agent`: Revision. * `run.googleapis.com/sessionAffinity`: Revision. * `run.googleapis.com/startup-cpu-boost`: Revision. * `run.googleapis.com/vpc-access-connector`: Revision, Execution. * `run.googleapis.com/vpc-access-egress`: Revision, Execution.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;clusterName&quot;: &quot;A String&quot;, # Not supported by Cloud Run
    &quot;creationTimestamp&quot;: &quot;A String&quot;, # UTC timestamp representing the server time when this object was created.
    &quot;deletionGracePeriodSeconds&quot;: 42, # Not supported by Cloud Run
    &quot;deletionTimestamp&quot;: &quot;A String&quot;, # The read-only soft deletion timestamp for this resource. In Cloud Run, users are not able to set this field. Instead, they must call the corresponding Delete API.
    &quot;finalizers&quot;: [ # Not supported by Cloud Run
      &quot;A String&quot;,
    ],
    &quot;generateName&quot;: &quot;A String&quot;, # Not supported by Cloud Run
    &quot;generation&quot;: 42, # A system-provided sequence number representing a specific generation of the desired state.
    &quot;labels&quot;: { # Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and routes.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;name&quot;: &quot;A String&quot;, # Required. The name of the resource. Name is required when creating top-level resources (Service, Job), must be unique within a Cloud Run project/region, and cannot be changed once created.
    &quot;namespace&quot;: &quot;A String&quot;, # Required. Defines the space within each name must be unique within a Cloud Run region. In Cloud Run, it must be project ID or number.
    &quot;ownerReferences&quot;: [ # Not supported by Cloud Run
      { # This is not supported or used by Cloud Run.
        &quot;apiVersion&quot;: &quot;A String&quot;, # This is not supported or used by Cloud Run.
        &quot;blockOwnerDeletion&quot;: True or False, # This is not supported or used by Cloud Run.
        &quot;controller&quot;: True or False, # This is not supported or used by Cloud Run.
        &quot;kind&quot;: &quot;A String&quot;, # This is not supported or used by Cloud Run.
        &quot;name&quot;: &quot;A String&quot;, # This is not supported or used by Cloud Run.
        &quot;uid&quot;: &quot;A String&quot;, # This is not supported or used by Cloud Run.
      },
    ],
    &quot;resourceVersion&quot;: &quot;A String&quot;, # Opaque, system-generated value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server or omit the value to disable conflict-detection.
    &quot;selfLink&quot;: &quot;A String&quot;, # URL representing this object.
    &quot;uid&quot;: &quot;A String&quot;, # Unique, system-generated identifier for this resource.
  },
  &quot;spec&quot;: { # ExecutionSpec describes how the execution will look. # Optional. Specification of the desired behavior of an execution.
    &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of tasks the execution should run at given time. Must be &lt;= task_count. When the job is run, if this field is 0 or unset, the maximum possible value will be used for that execution. The actual number of tasks running in steady state will be less than this number when there are fewer tasks waiting to be completed, i.e. when the work left to do is less than max parallelism.
    &quot;taskCount&quot;: 42, # Optional. Specifies the desired number of tasks the execution should run. Setting to 1 means that parallelism is limited to 1 and the success of that task signals the success of the execution. Defaults to 1.
    &quot;template&quot;: { # TaskTemplateSpec describes the data a task should have when created from a template. # Optional. The template used to create tasks for this execution.
      &quot;spec&quot;: { # TaskSpec is a description of a task. # Optional. Specification of the desired behavior of the task.
        &quot;containers&quot;: [ # Optional. List of containers belonging to the task. We disallow a number of fields on this Container.
          { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
            &quot;args&quot;: [ # Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references are not supported in Cloud Run.
              &quot;A String&quot;,
            ],
            &quot;command&quot;: [ # Entrypoint array. Not executed within a shell. The docker image&#x27;s ENTRYPOINT is used if this is not provided. Variable references are not supported in Cloud Run.
              &quot;A String&quot;,
            ],
            &quot;env&quot;: [ # List of environment variables to set in the container. EnvVar with duplicate names are generally allowed; if referencing a secret, the name must be unique for the container. For non-secret EnvVar names, the Container will only get the last-declared one.
              { # EnvVar represents an environment variable present in a Container.
                &quot;name&quot;: &quot;A String&quot;, # Required. Name of the environment variable.
                &quot;value&quot;: &quot;A String&quot;, # Value of the environment variable. Defaults to &quot;&quot;. Variable references are not supported in Cloud Run.
                &quot;valueFrom&quot;: { # EnvVarSource represents a source for the value of an EnvVar. # Source for the environment variable&#x27;s value. Only supports secret_key_ref. Cannot be used if value is not empty.
                  &quot;configMapKeyRef&quot;: { # Not supported by Cloud Run. # Not supported by Cloud Run. Not supported in Cloud Run.
                    &quot;key&quot;: &quot;A String&quot;, # Required. Not supported by Cloud Run.
                    &quot;localObjectReference&quot;: { # Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # Not supported by Cloud Run.
                      &quot;name&quot;: &quot;A String&quot;, # Name of the referent.
                    },
                    &quot;name&quot;: &quot;A String&quot;, # Required. Not supported by Cloud Run.
                    &quot;optional&quot;: True or False, # Not supported by Cloud Run.
                  },
                  &quot;secretKeyRef&quot;: { # SecretKeySelector selects a key of a Secret. # Selects a key (version) of a secret in Secret Manager.
                    &quot;key&quot;: &quot;A String&quot;, # Required. A Cloud Secret Manager secret version. Must be &#x27;latest&#x27; for the latest version, an integer for a specific version, or a version alias. The key of the secret to select from. Must be a valid secret key.
                    &quot;localObjectReference&quot;: { # Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                      &quot;name&quot;: &quot;A String&quot;, # Name of the referent.
                    },
                    &quot;name&quot;: &quot;A String&quot;, # The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. The name of the secret in the pod&#x27;s namespace to select from.
                    &quot;optional&quot;: True or False, # Specify whether the Secret or its key must be defined.
                  },
                },
              },
            ],
            &quot;envFrom&quot;: [ # Not supported by Cloud Run.
              { # Not supported by Cloud Run. EnvFromSource represents the source of a set of ConfigMaps
                &quot;configMapRef&quot;: { # Not supported by Cloud Run. ConfigMapEnvSource selects a ConfigMap to populate the environment variables with. The contents of the target ConfigMap&#x27;s Data field will represent the key-value pairs as environment variables. # The ConfigMap to select from
                  &quot;localObjectReference&quot;: { # Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                    &quot;name&quot;: &quot;A String&quot;, # Name of the referent.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                  &quot;optional&quot;: True or False, # Specify whether the ConfigMap must be defined.
                },
                &quot;prefix&quot;: &quot;A String&quot;, # An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
                &quot;secretRef&quot;: { # Not supported by Cloud Run. SecretEnvSource selects a Secret to populate the environment variables with. The contents of the target Secret&#x27;s Data field will represent the key-value pairs as environment variables. # The Secret to select from
                  &quot;localObjectReference&quot;: { # Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                    &quot;name&quot;: &quot;A String&quot;, # Name of the referent.
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The Secret to select from.
                  &quot;optional&quot;: True or False, # Specify whether the Secret must be defined
                },
              },
            ],
            &quot;image&quot;: &quot;A String&quot;, # Required. Name of the container image in Dockerhub, Google Artifact Registry, or Google Container Registry. If the host is not provided, Dockerhub is assumed.
            &quot;imagePullPolicy&quot;: &quot;A String&quot;, # Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
            &quot;livenessProbe&quot;: { # Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # Periodic probe of container liveness. Container will be restarted if the probe fails.
              &quot;exec&quot;: { # Not supported by Cloud Run. ExecAction describes a &quot;run in container&quot; action. # Not supported by Cloud Run.
                &quot;command&quot;: [ # Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                  &quot;A String&quot;,
                ],
              },
              &quot;failureThreshold&quot;: 42, # Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;grpc&quot;: { # GRPCAction describes an action involving a GRPC port. # GRPCAction specifies an action involving a GRPC port.
                &quot;port&quot;: 42, # Port number of the gRPC service. Number must be in the range 1 to 65535.
                &quot;service&quot;: &quot;A String&quot;, # Service is the name of the service to place in the gRPC HealthCheckRequest. If this is not specified, the default behavior is defined by gRPC.
              },
              &quot;httpGet&quot;: { # HTTPGetAction describes an action based on HTTP Get requests. # HTTPGet specifies the http request to perform.
                &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                &quot;httpHeaders&quot;: [ # Custom headers to set in the request. HTTP allows repeated headers.
                  { # HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # Required. The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # Path to access on the HTTP server.
                &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
                &quot;scheme&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
              },
              &quot;initialDelaySeconds&quot;: 42, # Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240.
              &quot;periodSeconds&quot;: 42, # How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.
              &quot;successThreshold&quot;: 42, # Minimum consecutive successes for the probe to be considered successful after having failed. Must be 1 if set.
              &quot;tcpSocket&quot;: { # TCPSocketAction describes an action based on opening a socket # TCPSocket specifies an action involving a TCP port.
                &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
              },
              &quot;timeoutSeconds&quot;: 42, # Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds; if period_seconds is not set, must be less or equal than 10.
            },
            &quot;name&quot;: &quot;A String&quot;, # Name of the container specified as a DNS_LABEL (RFC 1123).
            &quot;ports&quot;: [ # List of ports to expose from the container. Only a single port can be specified. The specified ports must be listening on all interfaces (0.0.0.0) within the container to be accessible. If omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on.
              { # ContainerPort represents a network port in a single container.
                &quot;containerPort&quot;: 42, # Port number the container listens on. If present, this must be a valid port number, 0 &lt; x &lt; 65536. If not present, it will default to port 8080. For more information, see https://cloud.google.com/run/docs/container-contract#port
                &quot;name&quot;: &quot;A String&quot;, # If specified, used to specify which protocol to use. Allowed values are &quot;http1&quot; and &quot;h2c&quot;.
                &quot;protocol&quot;: &quot;A String&quot;, # Protocol for port. Must be &quot;TCP&quot;. Defaults to &quot;TCP&quot;.
              },
            ],
            &quot;readinessProbe&quot;: { # Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # Not supported by Cloud Run.
              &quot;exec&quot;: { # Not supported by Cloud Run. ExecAction describes a &quot;run in container&quot; action. # Not supported by Cloud Run.
                &quot;command&quot;: [ # Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                  &quot;A String&quot;,
                ],
              },
              &quot;failureThreshold&quot;: 42, # Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;grpc&quot;: { # GRPCAction describes an action involving a GRPC port. # GRPCAction specifies an action involving a GRPC port.
                &quot;port&quot;: 42, # Port number of the gRPC service. Number must be in the range 1 to 65535.
                &quot;service&quot;: &quot;A String&quot;, # Service is the name of the service to place in the gRPC HealthCheckRequest. If this is not specified, the default behavior is defined by gRPC.
              },
              &quot;httpGet&quot;: { # HTTPGetAction describes an action based on HTTP Get requests. # HTTPGet specifies the http request to perform.
                &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                &quot;httpHeaders&quot;: [ # Custom headers to set in the request. HTTP allows repeated headers.
                  { # HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # Required. The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # Path to access on the HTTP server.
                &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
                &quot;scheme&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
              },
              &quot;initialDelaySeconds&quot;: 42, # Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240.
              &quot;periodSeconds&quot;: 42, # How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.
              &quot;successThreshold&quot;: 42, # Minimum consecutive successes for the probe to be considered successful after having failed. Must be 1 if set.
              &quot;tcpSocket&quot;: { # TCPSocketAction describes an action based on opening a socket # TCPSocket specifies an action involving a TCP port.
                &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
              },
              &quot;timeoutSeconds&quot;: 42, # Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds; if period_seconds is not set, must be less or equal than 10.
            },
            &quot;resources&quot;: { # ResourceRequirements describes the compute resource requirements. # Compute Resources required by this container.
              &quot;limits&quot;: { # Limits describes the maximum amount of compute resources allowed. Only &#x27;cpu&#x27; and &#x27;memory&#x27; keys are supported. * For supported &#x27;cpu&#x27; values, go to https://cloud.google.com/run/docs/configuring/cpu. * For supported &#x27;memory&#x27; values and syntax, go to https://cloud.google.com/run/docs/configuring/memory-limits
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;requests&quot;: { # Requests describes the minimum amount of compute resources required. Only `cpu` and `memory` are supported. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. * For supported &#x27;cpu&#x27; values, go to https://cloud.google.com/run/docs/configuring/cpu. * For supported &#x27;memory&#x27; values and syntax, go to https://cloud.google.com/run/docs/configuring/memory-limits
                &quot;a_key&quot;: &quot;A String&quot;,
              },
            },
            &quot;securityContext&quot;: { # Not supported by Cloud Run. SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence. # Not supported by Cloud Run.
              &quot;runAsUser&quot;: 42, # The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
            },
            &quot;startupProbe&quot;: { # Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not receive traffic if the probe fails. If not provided, a default startup probe with TCP socket action is used.
              &quot;exec&quot;: { # Not supported by Cloud Run. ExecAction describes a &quot;run in container&quot; action. # Not supported by Cloud Run.
                &quot;command&quot;: [ # Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                  &quot;A String&quot;,
                ],
              },
              &quot;failureThreshold&quot;: 42, # Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;grpc&quot;: { # GRPCAction describes an action involving a GRPC port. # GRPCAction specifies an action involving a GRPC port.
                &quot;port&quot;: 42, # Port number of the gRPC service. Number must be in the range 1 to 65535.
                &quot;service&quot;: &quot;A String&quot;, # Service is the name of the service to place in the gRPC HealthCheckRequest. If this is not specified, the default behavior is defined by gRPC.
              },
              &quot;httpGet&quot;: { # HTTPGetAction describes an action based on HTTP Get requests. # HTTPGet specifies the http request to perform.
                &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                &quot;httpHeaders&quot;: [ # Custom headers to set in the request. HTTP allows repeated headers.
                  { # HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # Required. The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # Path to access on the HTTP server.
                &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
                &quot;scheme&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
              },
              &quot;initialDelaySeconds&quot;: 42, # Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240.
              &quot;periodSeconds&quot;: 42, # How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.
              &quot;successThreshold&quot;: 42, # Minimum consecutive successes for the probe to be considered successful after having failed. Must be 1 if set.
              &quot;tcpSocket&quot;: { # TCPSocketAction describes an action based on opening a socket # TCPSocket specifies an action involving a TCP port.
                &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
              },
              &quot;timeoutSeconds&quot;: 42, # Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds; if period_seconds is not set, must be less or equal than 10.
            },
            &quot;terminationMessagePath&quot;: &quot;A String&quot;, # Path at which the file to which the container&#x27;s termination message will be written is mounted into the container&#x27;s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log.
            &quot;terminationMessagePolicy&quot;: &quot;A String&quot;, # Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.
            &quot;volumeMounts&quot;: [ # Volume to mount into the container&#x27;s filesystem. Only supports SecretVolumeSources. Pod volumes to mount into the container&#x27;s filesystem.
              { # VolumeMount describes a mounting of a Volume within a container.
                &quot;mountPath&quot;: &quot;A String&quot;, # Required. Path within the container at which the volume should be mounted. Must not contain &#x27;:&#x27;.
                &quot;name&quot;: &quot;A String&quot;, # Required. The name of the volume. There must be a corresponding Volume with the same name.
                &quot;readOnly&quot;: True or False, # Sets the mount to be read-only or read-write. Not used by Cloud Run.
                &quot;subPath&quot;: &quot;A String&quot;, # Path within the volume from which the container&#x27;s volume should be mounted. Defaults to &quot;&quot; (volume&#x27;s root).
              },
            ],
            &quot;workingDir&quot;: &quot;A String&quot;, # Container&#x27;s working directory. If not specified, the container runtime&#x27;s default will be used, which might be configured in the container image.
          },
        ],
        &quot;maxRetries&quot;: 42, # Optional. Number of retries allowed per task, before marking this job failed. Defaults to 3.
        &quot;serviceAccountName&quot;: &quot;A String&quot;, # Optional. Email address of the IAM service account associated with the task of a job execution. The service account represents the identity of the running task, and determines what permissions the task has. If not provided, the task will use the project&#x27;s default service account.
        &quot;timeoutSeconds&quot;: &quot;A String&quot;, # Optional. Duration in seconds the task may be active before the system will actively try to mark it failed and kill associated containers. This applies per attempt of a task, meaning each retry can run for the full timeout. Defaults to 600 seconds.
        &quot;volumes&quot;: [ # Optional. List of volumes that can be mounted by containers belonging to the task.
          { # Volume represents a named volume in a container.
            &quot;configMap&quot;: { # Not supported by Cloud Run. Adapts a ConfigMap into a volume. The contents of the target ConfigMap&#x27;s Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. # Not supported in Cloud Run.
              &quot;defaultMode&quot;: 42, # (Optional) Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0644. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
              &quot;items&quot;: [ # (Optional) If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified that is not present in the Secret, the volume setup will error unless it is marked optional.
                { # Maps a string key to a path within a volume.
                  &quot;key&quot;: &quot;A String&quot;, # The Cloud Secret Manager secret version. Can be &#x27;latest&#x27; for the latest value, or an integer or a secret alias for a specific version. The key to project.
                  &quot;mode&quot;: 42, # (Optional) Mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume&#x27;s default mode will be used. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                  &quot;path&quot;: &quot;A String&quot;, # The relative path of the file to map the key to. May not be an absolute path. May not contain the path element &#x27;..&#x27;. May not start with the string &#x27;..&#x27;.
                },
              ],
              &quot;name&quot;: &quot;A String&quot;, # Name of the config.
              &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret or its keys must be defined.
            },
            &quot;emptyDir&quot;: { # In memory (tmpfs) ephemeral storage. It is ephemeral in the sense that when the sandbox is taken down, the data is destroyed with it (it does not persist across sandbox runs). # Ephemeral storage used as a shared volume.
              &quot;medium&quot;: &quot;A String&quot;, # The medium on which the data is stored. The default is &quot;&quot; which means to use the node&#x27;s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
              &quot;sizeLimit&quot;: &quot;A String&quot;, # Limit on the storage usable by this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers. The default is nil which means that the limit is undefined. More info: https://cloud.google.com/run/docs/configuring/in-memory-volumes#configure-volume. Info in Kubernetes: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir
            },
            &quot;name&quot;: &quot;A String&quot;, # Volume&#x27;s name. In Cloud Run Fully Managed, the name &#x27;cloudsql&#x27; is reserved.
            &quot;secret&quot;: { # A volume representing a secret stored in Google Secret Manager. The secret&#x27;s value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secret_name. The contents of the target Secret&#x27;s Data field will be presented in a volume as files using the keys in the Data field as the file names. # The secret&#x27;s value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secretName.
              &quot;defaultMode&quot;: 42, # Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0444. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
              &quot;items&quot;: [ # A list of secret versions to mount in the volume. If no items are specified, the volume will expose a file with the same name as the secret name. The contents of the file will be the data in the latest version of the secret. If items are specified, the key will be used as the version to fetch from Cloud Secret Manager and the path will be the name of the file exposed in the volume. When items are defined, they must specify both a key and a path.
                { # Maps a string key to a path within a volume.
                  &quot;key&quot;: &quot;A String&quot;, # The Cloud Secret Manager secret version. Can be &#x27;latest&#x27; for the latest value, or an integer or a secret alias for a specific version. The key to project.
                  &quot;mode&quot;: 42, # (Optional) Mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume&#x27;s default mode will be used. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                  &quot;path&quot;: &quot;A String&quot;, # The relative path of the file to map the key to. May not be an absolute path. May not contain the path element &#x27;..&#x27;. May not start with the string &#x27;..&#x27;.
                },
              ],
              &quot;optional&quot;: True or False, # Not supported by Cloud Run.
              &quot;secretName&quot;: &quot;A String&quot;, # The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. Name of the secret in the container&#x27;s namespace to use.
            },
          },
        ],
      },
    },
  },
  &quot;status&quot;: { # ExecutionStatus represents the current state of an Execution. # Output only. Current status of an execution.
    &quot;cancelledCount&quot;: 42, # Optional. The number of tasks which reached phase Cancelled.
    &quot;completionTime&quot;: &quot;A String&quot;, # Optional. Represents the time that the execution was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional
    &quot;conditions&quot;: [ # Optional. Conditions communicate information about ongoing/complete reconciliation processes that bring the &quot;spec&quot; inline with the observed state of the world. Execution-specific conditions include: * `ResourcesAvailable`: `True` when underlying resources have been provisioned. * `Started`: `True` when the execution has started to execute. * `Completed`: `True` when the execution has succeeded. `False` when the execution has failed.
      { # Conditions show the status of reconciliation progress on a given resource. Most resource use a top-level condition type &quot;Ready&quot; or &quot;Completed&quot; to show overall status with other conditions to checkpoint each stage of reconciliation. Note that if metadata.Generation does not equal status.ObservedGeneration, the conditions shown may not be relevant for the current spec.
        &quot;lastTransitionTime&quot;: &quot;A String&quot;, # Optional. Last time the condition transitioned from one status to another.
        &quot;message&quot;: &quot;A String&quot;, # Optional. Human readable message indicating details about the current status.
        &quot;reason&quot;: &quot;A String&quot;, # Optional. One-word CamelCase reason for the condition&#x27;s last transition. These are intended to be stable, unique values which the client may use to trigger error handling logic, whereas messages which may be changed later by the server.
        &quot;severity&quot;: &quot;A String&quot;, # Optional. How to interpret this condition. One of Error, Warning, or Info. Conditions of severity Info do not contribute to resource readiness.
        &quot;status&quot;: &quot;A String&quot;, # Status of the condition, one of True, False, Unknown.
        &quot;type&quot;: &quot;A String&quot;, # type is used to communicate the status of the reconciliation process. Types common to all resources include: * &quot;Ready&quot; or &quot;Completed&quot;: True when the Resource is ready.
      },
    ],
    &quot;failedCount&quot;: 42, # Optional. The number of tasks which reached phase Failed.
    &quot;logUri&quot;: &quot;A String&quot;, # Optional. URI where logs for this execution can be found in Cloud Console.
    &quot;observedGeneration&quot;: 42, # Optional. The &#x27;generation&#x27; of the execution that was last processed by the controller.
    &quot;retriedCount&quot;: 42, # Optional. The number of tasks which have retried at least once.
    &quot;runningCount&quot;: 42, # Optional. The number of actively running tasks.
    &quot;startTime&quot;: &quot;A String&quot;, # Optional. Represents the time that the execution started to run. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.
    &quot;succeededCount&quot;: 42, # Optional. The number of tasks which reached phase Succeeded.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, continue=None, fieldSelector=None, includeUninitialized=None, labelSelector=None, limit=None, resourceVersion=None, watch=None, x__xgafv=None)</code>
  <pre>List executions.

Args:
  parent: string, Required. The namespace from which the executions should be listed. Replace {namespace} with the project ID or number. It takes the form namespaces/{namespace}. For example: namespaces/PROJECT_ID (required)
  continue: string, Optional. Optional encoded string to continue paging.
  fieldSelector: string, Optional. Not supported by Cloud Run.
  includeUninitialized: boolean, Optional. Not supported by Cloud Run.
  labelSelector: string, Optional. Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.
  limit: integer, Optional. The maximum number of the records that should be returned.
  resourceVersion: string, Optional. Not supported by Cloud Run.
  watch: boolean, Optional. Not supported by Cloud Run.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # ListExecutionsResponse is a list of Executions resources.
  &quot;apiVersion&quot;: &quot;A String&quot;, # The API version for this call such as &quot;run.googleapis.com/v1&quot;.
  &quot;items&quot;: [ # List of Executions.
    { # Execution represents the configuration of a single execution. An execution is an immutable resource that references a container image which is run to completion.
      &quot;apiVersion&quot;: &quot;A String&quot;, # Optional. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values.
      &quot;kind&quot;: &quot;A String&quot;, # Optional. Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase.
      &quot;metadata&quot;: { # google.cloud.run.meta.v1.ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Optional. Standard object&#x27;s metadata.
        &quot;annotations&quot;: { # Unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. In Cloud Run, annotations with &#x27;run.googleapis.com/&#x27; and &#x27;autoscaling.knative.dev&#x27; are restricted, and the accepted annotations will be different depending on the resource type. * `autoscaling.knative.dev/maxScale`: Revision. * `autoscaling.knative.dev/minScale`: Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/client-name`: All resources. * `run.googleapis.com/cloudsql-instances`: Revision, Execution. * `run.googleapis.com/container-dependencies`: Revision. * `run.googleapis.com/cpu-throttling`: Revision. * `run.googleapis.com/custom-audiences`: Service. * `run.googleapis.com/description`: Service. * `run.googleapis.com/encryption-key-shutdown-hours`: Revision * `run.googleapis.com/encryption-key`: Revision, Execution. * `run.googleapis.com/execution-environment`: Revision, Execution. * `run.googleapis.com/gc-traffic-tags`: Service. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service (ALPHA) * `run.googleapis.com/network-interfaces`: Revision, Execution. * `run.googleapis.com/post-key-revocation-action-type`: Revision. * `run.googleapis.com/secrets`: Revision, Execution. * `run.googleapis.com/secure-session-agent`: Revision. * `run.googleapis.com/sessionAffinity`: Revision. * `run.googleapis.com/startup-cpu-boost`: Revision. * `run.googleapis.com/vpc-access-connector`: Revision, Execution. * `run.googleapis.com/vpc-access-egress`: Revision, Execution.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;clusterName&quot;: &quot;A String&quot;, # Not supported by Cloud Run
        &quot;creationTimestamp&quot;: &quot;A String&quot;, # UTC timestamp representing the server time when this object was created.
        &quot;deletionGracePeriodSeconds&quot;: 42, # Not supported by Cloud Run
        &quot;deletionTimestamp&quot;: &quot;A String&quot;, # The read-only soft deletion timestamp for this resource. In Cloud Run, users are not able to set this field. Instead, they must call the corresponding Delete API.
        &quot;finalizers&quot;: [ # Not supported by Cloud Run
          &quot;A String&quot;,
        ],
        &quot;generateName&quot;: &quot;A String&quot;, # Not supported by Cloud Run
        &quot;generation&quot;: 42, # A system-provided sequence number representing a specific generation of the desired state.
        &quot;labels&quot;: { # Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and routes.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;name&quot;: &quot;A String&quot;, # Required. The name of the resource. Name is required when creating top-level resources (Service, Job), must be unique within a Cloud Run project/region, and cannot be changed once created.
        &quot;namespace&quot;: &quot;A String&quot;, # Required. Defines the space within each name must be unique within a Cloud Run region. In Cloud Run, it must be project ID or number.
        &quot;ownerReferences&quot;: [ # Not supported by Cloud Run
          { # This is not supported or used by Cloud Run.
            &quot;apiVersion&quot;: &quot;A String&quot;, # This is not supported or used by Cloud Run.
            &quot;blockOwnerDeletion&quot;: True or False, # This is not supported or used by Cloud Run.
            &quot;controller&quot;: True or False, # This is not supported or used by Cloud Run.
            &quot;kind&quot;: &quot;A String&quot;, # This is not supported or used by Cloud Run.
            &quot;name&quot;: &quot;A String&quot;, # This is not supported or used by Cloud Run.
            &quot;uid&quot;: &quot;A String&quot;, # This is not supported or used by Cloud Run.
          },
        ],
        &quot;resourceVersion&quot;: &quot;A String&quot;, # Opaque, system-generated value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server or omit the value to disable conflict-detection.
        &quot;selfLink&quot;: &quot;A String&quot;, # URL representing this object.
        &quot;uid&quot;: &quot;A String&quot;, # Unique, system-generated identifier for this resource.
      },
      &quot;spec&quot;: { # ExecutionSpec describes how the execution will look. # Optional. Specification of the desired behavior of an execution.
        &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of tasks the execution should run at given time. Must be &lt;= task_count. When the job is run, if this field is 0 or unset, the maximum possible value will be used for that execution. The actual number of tasks running in steady state will be less than this number when there are fewer tasks waiting to be completed, i.e. when the work left to do is less than max parallelism.
        &quot;taskCount&quot;: 42, # Optional. Specifies the desired number of tasks the execution should run. Setting to 1 means that parallelism is limited to 1 and the success of that task signals the success of the execution. Defaults to 1.
        &quot;template&quot;: { # TaskTemplateSpec describes the data a task should have when created from a template. # Optional. The template used to create tasks for this execution.
          &quot;spec&quot;: { # TaskSpec is a description of a task. # Optional. Specification of the desired behavior of the task.
            &quot;containers&quot;: [ # Optional. List of containers belonging to the task. We disallow a number of fields on this Container.
              { # A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.
                &quot;args&quot;: [ # Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references are not supported in Cloud Run.
                  &quot;A String&quot;,
                ],
                &quot;command&quot;: [ # Entrypoint array. Not executed within a shell. The docker image&#x27;s ENTRYPOINT is used if this is not provided. Variable references are not supported in Cloud Run.
                  &quot;A String&quot;,
                ],
                &quot;env&quot;: [ # List of environment variables to set in the container. EnvVar with duplicate names are generally allowed; if referencing a secret, the name must be unique for the container. For non-secret EnvVar names, the Container will only get the last-declared one.
                  { # EnvVar represents an environment variable present in a Container.
                    &quot;name&quot;: &quot;A String&quot;, # Required. Name of the environment variable.
                    &quot;value&quot;: &quot;A String&quot;, # Value of the environment variable. Defaults to &quot;&quot;. Variable references are not supported in Cloud Run.
                    &quot;valueFrom&quot;: { # EnvVarSource represents a source for the value of an EnvVar. # Source for the environment variable&#x27;s value. Only supports secret_key_ref. Cannot be used if value is not empty.
                      &quot;configMapKeyRef&quot;: { # Not supported by Cloud Run. # Not supported by Cloud Run. Not supported in Cloud Run.
                        &quot;key&quot;: &quot;A String&quot;, # Required. Not supported by Cloud Run.
                        &quot;localObjectReference&quot;: { # Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # Not supported by Cloud Run.
                          &quot;name&quot;: &quot;A String&quot;, # Name of the referent.
                        },
                        &quot;name&quot;: &quot;A String&quot;, # Required. Not supported by Cloud Run.
                        &quot;optional&quot;: True or False, # Not supported by Cloud Run.
                      },
                      &quot;secretKeyRef&quot;: { # SecretKeySelector selects a key of a Secret. # Selects a key (version) of a secret in Secret Manager.
                        &quot;key&quot;: &quot;A String&quot;, # Required. A Cloud Secret Manager secret version. Must be &#x27;latest&#x27; for the latest version, an integer for a specific version, or a version alias. The key of the secret to select from. Must be a valid secret key.
                        &quot;localObjectReference&quot;: { # Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                          &quot;name&quot;: &quot;A String&quot;, # Name of the referent.
                        },
                        &quot;name&quot;: &quot;A String&quot;, # The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. The name of the secret in the pod&#x27;s namespace to select from.
                        &quot;optional&quot;: True or False, # Specify whether the Secret or its key must be defined.
                      },
                    },
                  },
                ],
                &quot;envFrom&quot;: [ # Not supported by Cloud Run.
                  { # Not supported by Cloud Run. EnvFromSource represents the source of a set of ConfigMaps
                    &quot;configMapRef&quot;: { # Not supported by Cloud Run. ConfigMapEnvSource selects a ConfigMap to populate the environment variables with. The contents of the target ConfigMap&#x27;s Data field will represent the key-value pairs as environment variables. # The ConfigMap to select from
                      &quot;localObjectReference&quot;: { # Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                        &quot;name&quot;: &quot;A String&quot;, # Name of the referent.
                      },
                      &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                      &quot;optional&quot;: True or False, # Specify whether the ConfigMap must be defined.
                    },
                    &quot;prefix&quot;: &quot;A String&quot;, # An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.
                    &quot;secretRef&quot;: { # Not supported by Cloud Run. SecretEnvSource selects a Secret to populate the environment variables with. The contents of the target Secret&#x27;s Data field will represent the key-value pairs as environment variables. # The Secret to select from
                      &quot;localObjectReference&quot;: { # Not supported by Cloud Run. LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. # This field should not be used directly as it is meant to be inlined directly into the message. Use the &quot;name&quot; field instead.
                        &quot;name&quot;: &quot;A String&quot;, # Name of the referent.
                      },
                      &quot;name&quot;: &quot;A String&quot;, # The Secret to select from.
                      &quot;optional&quot;: True or False, # Specify whether the Secret must be defined
                    },
                  },
                ],
                &quot;image&quot;: &quot;A String&quot;, # Required. Name of the container image in Dockerhub, Google Artifact Registry, or Google Container Registry. If the host is not provided, Dockerhub is assumed.
                &quot;imagePullPolicy&quot;: &quot;A String&quot;, # Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise.
                &quot;livenessProbe&quot;: { # Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # Periodic probe of container liveness. Container will be restarted if the probe fails.
                  &quot;exec&quot;: { # Not supported by Cloud Run. ExecAction describes a &quot;run in container&quot; action. # Not supported by Cloud Run.
                    &quot;command&quot;: [ # Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;failureThreshold&quot;: 42, # Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                  &quot;grpc&quot;: { # GRPCAction describes an action involving a GRPC port. # GRPCAction specifies an action involving a GRPC port.
                    &quot;port&quot;: 42, # Port number of the gRPC service. Number must be in the range 1 to 65535.
                    &quot;service&quot;: &quot;A String&quot;, # Service is the name of the service to place in the gRPC HealthCheckRequest. If this is not specified, the default behavior is defined by gRPC.
                  },
                  &quot;httpGet&quot;: { # HTTPGetAction describes an action based on HTTP Get requests. # HTTPGet specifies the http request to perform.
                    &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                    &quot;httpHeaders&quot;: [ # Custom headers to set in the request. HTTP allows repeated headers.
                      { # HTTPHeader describes a custom header to be used in HTTP probes
                        &quot;name&quot;: &quot;A String&quot;, # Required. The header field name
                        &quot;value&quot;: &quot;A String&quot;, # The header field value
                      },
                    ],
                    &quot;path&quot;: &quot;A String&quot;, # Path to access on the HTTP server.
                    &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
                    &quot;scheme&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                  },
                  &quot;initialDelaySeconds&quot;: 42, # Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240.
                  &quot;periodSeconds&quot;: 42, # How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.
                  &quot;successThreshold&quot;: 42, # Minimum consecutive successes for the probe to be considered successful after having failed. Must be 1 if set.
                  &quot;tcpSocket&quot;: { # TCPSocketAction describes an action based on opening a socket # TCPSocket specifies an action involving a TCP port.
                    &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                    &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
                  },
                  &quot;timeoutSeconds&quot;: 42, # Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds; if period_seconds is not set, must be less or equal than 10.
                },
                &quot;name&quot;: &quot;A String&quot;, # Name of the container specified as a DNS_LABEL (RFC 1123).
                &quot;ports&quot;: [ # List of ports to expose from the container. Only a single port can be specified. The specified ports must be listening on all interfaces (0.0.0.0) within the container to be accessible. If omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on.
                  { # ContainerPort represents a network port in a single container.
                    &quot;containerPort&quot;: 42, # Port number the container listens on. If present, this must be a valid port number, 0 &lt; x &lt; 65536. If not present, it will default to port 8080. For more information, see https://cloud.google.com/run/docs/container-contract#port
                    &quot;name&quot;: &quot;A String&quot;, # If specified, used to specify which protocol to use. Allowed values are &quot;http1&quot; and &quot;h2c&quot;.
                    &quot;protocol&quot;: &quot;A String&quot;, # Protocol for port. Must be &quot;TCP&quot;. Defaults to &quot;TCP&quot;.
                  },
                ],
                &quot;readinessProbe&quot;: { # Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # Not supported by Cloud Run.
                  &quot;exec&quot;: { # Not supported by Cloud Run. ExecAction describes a &quot;run in container&quot; action. # Not supported by Cloud Run.
                    &quot;command&quot;: [ # Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;failureThreshold&quot;: 42, # Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                  &quot;grpc&quot;: { # GRPCAction describes an action involving a GRPC port. # GRPCAction specifies an action involving a GRPC port.
                    &quot;port&quot;: 42, # Port number of the gRPC service. Number must be in the range 1 to 65535.
                    &quot;service&quot;: &quot;A String&quot;, # Service is the name of the service to place in the gRPC HealthCheckRequest. If this is not specified, the default behavior is defined by gRPC.
                  },
                  &quot;httpGet&quot;: { # HTTPGetAction describes an action based on HTTP Get requests. # HTTPGet specifies the http request to perform.
                    &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                    &quot;httpHeaders&quot;: [ # Custom headers to set in the request. HTTP allows repeated headers.
                      { # HTTPHeader describes a custom header to be used in HTTP probes
                        &quot;name&quot;: &quot;A String&quot;, # Required. The header field name
                        &quot;value&quot;: &quot;A String&quot;, # The header field value
                      },
                    ],
                    &quot;path&quot;: &quot;A String&quot;, # Path to access on the HTTP server.
                    &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
                    &quot;scheme&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                  },
                  &quot;initialDelaySeconds&quot;: 42, # Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240.
                  &quot;periodSeconds&quot;: 42, # How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.
                  &quot;successThreshold&quot;: 42, # Minimum consecutive successes for the probe to be considered successful after having failed. Must be 1 if set.
                  &quot;tcpSocket&quot;: { # TCPSocketAction describes an action based on opening a socket # TCPSocket specifies an action involving a TCP port.
                    &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                    &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
                  },
                  &quot;timeoutSeconds&quot;: 42, # Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds; if period_seconds is not set, must be less or equal than 10.
                },
                &quot;resources&quot;: { # ResourceRequirements describes the compute resource requirements. # Compute Resources required by this container.
                  &quot;limits&quot;: { # Limits describes the maximum amount of compute resources allowed. Only &#x27;cpu&#x27; and &#x27;memory&#x27; keys are supported. * For supported &#x27;cpu&#x27; values, go to https://cloud.google.com/run/docs/configuring/cpu. * For supported &#x27;memory&#x27; values and syntax, go to https://cloud.google.com/run/docs/configuring/memory-limits
                    &quot;a_key&quot;: &quot;A String&quot;,
                  },
                  &quot;requests&quot;: { # Requests describes the minimum amount of compute resources required. Only `cpu` and `memory` are supported. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. * For supported &#x27;cpu&#x27; values, go to https://cloud.google.com/run/docs/configuring/cpu. * For supported &#x27;memory&#x27; values and syntax, go to https://cloud.google.com/run/docs/configuring/memory-limits
                    &quot;a_key&quot;: &quot;A String&quot;,
                  },
                },
                &quot;securityContext&quot;: { # Not supported by Cloud Run. SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence. # Not supported by Cloud Run.
                  &quot;runAsUser&quot;: 42, # The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.
                },
                &quot;startupProbe&quot;: { # Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not receive traffic if the probe fails. If not provided, a default startup probe with TCP socket action is used.
                  &quot;exec&quot;: { # Not supported by Cloud Run. ExecAction describes a &quot;run in container&quot; action. # Not supported by Cloud Run.
                    &quot;command&quot;: [ # Command is the command line to execute inside the container, the working directory for the command is root (&#x27;/&#x27;) in the container&#x27;s filesystem. The command is simply exec&#x27;d, it is not run inside a shell, so traditional shell instructions (&#x27;|&#x27;, etc) won&#x27;t work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
                      &quot;A String&quot;,
                    ],
                  },
                  &quot;failureThreshold&quot;: 42, # Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                  &quot;grpc&quot;: { # GRPCAction describes an action involving a GRPC port. # GRPCAction specifies an action involving a GRPC port.
                    &quot;port&quot;: 42, # Port number of the gRPC service. Number must be in the range 1 to 65535.
                    &quot;service&quot;: &quot;A String&quot;, # Service is the name of the service to place in the gRPC HealthCheckRequest. If this is not specified, the default behavior is defined by gRPC.
                  },
                  &quot;httpGet&quot;: { # HTTPGetAction describes an action based on HTTP Get requests. # HTTPGet specifies the http request to perform.
                    &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                    &quot;httpHeaders&quot;: [ # Custom headers to set in the request. HTTP allows repeated headers.
                      { # HTTPHeader describes a custom header to be used in HTTP probes
                        &quot;name&quot;: &quot;A String&quot;, # Required. The header field name
                        &quot;value&quot;: &quot;A String&quot;, # The header field value
                      },
                    ],
                    &quot;path&quot;: &quot;A String&quot;, # Path to access on the HTTP server.
                    &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
                    &quot;scheme&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                  },
                  &quot;initialDelaySeconds&quot;: 42, # Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240.
                  &quot;periodSeconds&quot;: 42, # How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.
                  &quot;successThreshold&quot;: 42, # Minimum consecutive successes for the probe to be considered successful after having failed. Must be 1 if set.
                  &quot;tcpSocket&quot;: { # TCPSocketAction describes an action based on opening a socket # TCPSocket specifies an action involving a TCP port.
                    &quot;host&quot;: &quot;A String&quot;, # Not supported by Cloud Run.
                    &quot;port&quot;: 42, # Port number to access on the container. Number must be in the range 1 to 65535.
                  },
                  &quot;timeoutSeconds&quot;: 42, # Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds; if period_seconds is not set, must be less or equal than 10.
                },
                &quot;terminationMessagePath&quot;: &quot;A String&quot;, # Path at which the file to which the container&#x27;s termination message will be written is mounted into the container&#x27;s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log.
                &quot;terminationMessagePolicy&quot;: &quot;A String&quot;, # Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.
                &quot;volumeMounts&quot;: [ # Volume to mount into the container&#x27;s filesystem. Only supports SecretVolumeSources. Pod volumes to mount into the container&#x27;s filesystem.
                  { # VolumeMount describes a mounting of a Volume within a container.
                    &quot;mountPath&quot;: &quot;A String&quot;, # Required. Path within the container at which the volume should be mounted. Must not contain &#x27;:&#x27;.
                    &quot;name&quot;: &quot;A String&quot;, # Required. The name of the volume. There must be a corresponding Volume with the same name.
                    &quot;readOnly&quot;: True or False, # Sets the mount to be read-only or read-write. Not used by Cloud Run.
                    &quot;subPath&quot;: &quot;A String&quot;, # Path within the volume from which the container&#x27;s volume should be mounted. Defaults to &quot;&quot; (volume&#x27;s root).
                  },
                ],
                &quot;workingDir&quot;: &quot;A String&quot;, # Container&#x27;s working directory. If not specified, the container runtime&#x27;s default will be used, which might be configured in the container image.
              },
            ],
            &quot;maxRetries&quot;: 42, # Optional. Number of retries allowed per task, before marking this job failed. Defaults to 3.
            &quot;serviceAccountName&quot;: &quot;A String&quot;, # Optional. Email address of the IAM service account associated with the task of a job execution. The service account represents the identity of the running task, and determines what permissions the task has. If not provided, the task will use the project&#x27;s default service account.
            &quot;timeoutSeconds&quot;: &quot;A String&quot;, # Optional. Duration in seconds the task may be active before the system will actively try to mark it failed and kill associated containers. This applies per attempt of a task, meaning each retry can run for the full timeout. Defaults to 600 seconds.
            &quot;volumes&quot;: [ # Optional. List of volumes that can be mounted by containers belonging to the task.
              { # Volume represents a named volume in a container.
                &quot;configMap&quot;: { # Not supported by Cloud Run. Adapts a ConfigMap into a volume. The contents of the target ConfigMap&#x27;s Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. # Not supported in Cloud Run.
                  &quot;defaultMode&quot;: 42, # (Optional) Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0644. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                  &quot;items&quot;: [ # (Optional) If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified that is not present in the Secret, the volume setup will error unless it is marked optional.
                    { # Maps a string key to a path within a volume.
                      &quot;key&quot;: &quot;A String&quot;, # The Cloud Secret Manager secret version. Can be &#x27;latest&#x27; for the latest value, or an integer or a secret alias for a specific version. The key to project.
                      &quot;mode&quot;: 42, # (Optional) Mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume&#x27;s default mode will be used. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                      &quot;path&quot;: &quot;A String&quot;, # The relative path of the file to map the key to. May not be an absolute path. May not contain the path element &#x27;..&#x27;. May not start with the string &#x27;..&#x27;.
                    },
                  ],
                  &quot;name&quot;: &quot;A String&quot;, # Name of the config.
                  &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret or its keys must be defined.
                },
                &quot;emptyDir&quot;: { # In memory (tmpfs) ephemeral storage. It is ephemeral in the sense that when the sandbox is taken down, the data is destroyed with it (it does not persist across sandbox runs). # Ephemeral storage used as a shared volume.
                  &quot;medium&quot;: &quot;A String&quot;, # The medium on which the data is stored. The default is &quot;&quot; which means to use the node&#x27;s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
                  &quot;sizeLimit&quot;: &quot;A String&quot;, # Limit on the storage usable by this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers. The default is nil which means that the limit is undefined. More info: https://cloud.google.com/run/docs/configuring/in-memory-volumes#configure-volume. Info in Kubernetes: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir
                },
                &quot;name&quot;: &quot;A String&quot;, # Volume&#x27;s name. In Cloud Run Fully Managed, the name &#x27;cloudsql&#x27; is reserved.
                &quot;secret&quot;: { # A volume representing a secret stored in Google Secret Manager. The secret&#x27;s value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secret_name. The contents of the target Secret&#x27;s Data field will be presented in a volume as files using the keys in the Data field as the file names. # The secret&#x27;s value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secretName.
                  &quot;defaultMode&quot;: 42, # Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0444. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                  &quot;items&quot;: [ # A list of secret versions to mount in the volume. If no items are specified, the volume will expose a file with the same name as the secret name. The contents of the file will be the data in the latest version of the secret. If items are specified, the key will be used as the version to fetch from Cloud Secret Manager and the path will be the name of the file exposed in the volume. When items are defined, they must specify both a key and a path.
                    { # Maps a string key to a path within a volume.
                      &quot;key&quot;: &quot;A String&quot;, # The Cloud Secret Manager secret version. Can be &#x27;latest&#x27; for the latest value, or an integer or a secret alias for a specific version. The key to project.
                      &quot;mode&quot;: 42, # (Optional) Mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume&#x27;s default mode will be used. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.
                      &quot;path&quot;: &quot;A String&quot;, # The relative path of the file to map the key to. May not be an absolute path. May not contain the path element &#x27;..&#x27;. May not start with the string &#x27;..&#x27;.
                    },
                  ],
                  &quot;optional&quot;: True or False, # Not supported by Cloud Run.
                  &quot;secretName&quot;: &quot;A String&quot;, # The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. Name of the secret in the container&#x27;s namespace to use.
                },
              },
            ],
          },
        },
      },
      &quot;status&quot;: { # ExecutionStatus represents the current state of an Execution. # Output only. Current status of an execution.
        &quot;cancelledCount&quot;: 42, # Optional. The number of tasks which reached phase Cancelled.
        &quot;completionTime&quot;: &quot;A String&quot;, # Optional. Represents the time that the execution was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional
        &quot;conditions&quot;: [ # Optional. Conditions communicate information about ongoing/complete reconciliation processes that bring the &quot;spec&quot; inline with the observed state of the world. Execution-specific conditions include: * `ResourcesAvailable`: `True` when underlying resources have been provisioned. * `Started`: `True` when the execution has started to execute. * `Completed`: `True` when the execution has succeeded. `False` when the execution has failed.
          { # Conditions show the status of reconciliation progress on a given resource. Most resource use a top-level condition type &quot;Ready&quot; or &quot;Completed&quot; to show overall status with other conditions to checkpoint each stage of reconciliation. Note that if metadata.Generation does not equal status.ObservedGeneration, the conditions shown may not be relevant for the current spec.
            &quot;lastTransitionTime&quot;: &quot;A String&quot;, # Optional. Last time the condition transitioned from one status to another.
            &quot;message&quot;: &quot;A String&quot;, # Optional. Human readable message indicating details about the current status.
            &quot;reason&quot;: &quot;A String&quot;, # Optional. One-word CamelCase reason for the condition&#x27;s last transition. These are intended to be stable, unique values which the client may use to trigger error handling logic, whereas messages which may be changed later by the server.
            &quot;severity&quot;: &quot;A String&quot;, # Optional. How to interpret this condition. One of Error, Warning, or Info. Conditions of severity Info do not contribute to resource readiness.
            &quot;status&quot;: &quot;A String&quot;, # Status of the condition, one of True, False, Unknown.
            &quot;type&quot;: &quot;A String&quot;, # type is used to communicate the status of the reconciliation process. Types common to all resources include: * &quot;Ready&quot; or &quot;Completed&quot;: True when the Resource is ready.
          },
        ],
        &quot;failedCount&quot;: 42, # Optional. The number of tasks which reached phase Failed.
        &quot;logUri&quot;: &quot;A String&quot;, # Optional. URI where logs for this execution can be found in Cloud Console.
        &quot;observedGeneration&quot;: 42, # Optional. The &#x27;generation&#x27; of the execution that was last processed by the controller.
        &quot;retriedCount&quot;: 42, # Optional. The number of tasks which have retried at least once.
        &quot;runningCount&quot;: 42, # Optional. The number of actively running tasks.
        &quot;startTime&quot;: &quot;A String&quot;, # Optional. Represents the time that the execution started to run. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC.
        &quot;succeededCount&quot;: 42, # Optional. The number of tasks which reached phase Succeeded.
      },
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # The kind of this resource, in this case &quot;ExecutionsList&quot;.
  &quot;metadata&quot;: { # Metadata for synthetic resources like List. In Cloud Run, all List Resources Responses will have a ListMeta instead of ObjectMeta. # Metadata associated with this executions list.
    &quot;continue&quot;: &quot;A String&quot;, # Continuation token is a value emitted when the count of items is larger than the user/system limit. To retrieve the next page of items, pass the value of `continue` as the next request&#x27;s `page_token`.
    &quot;resourceVersion&quot;: &quot;A String&quot;, # Opaque string that identifies the server&#x27;s internal version of this object. It can be used by clients to determine when objects have changed. If the message is passed back to the server, it must be left unmodified.
    &quot;selfLink&quot;: &quot;A String&quot;, # URL representing this object.
  },
  &quot;unreachable&quot;: [ # Locations that could not be reached.
    &quot;A String&quot;,
  ],
}</pre>
</div>

</body></html>