<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.jobs.html">jobs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Create a job.</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 a job.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Get information about a job.</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 jobs. Results are sorted by creation time, descending.</p>
<p class="toc_element">
  <code><a href="#replaceJob">replaceJob(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Replace a job. Only the spec and metadata labels and annotations are modifiable. After the Replace request, Cloud Run will work to make the 'status' match the requested 'spec'. May provide metadata.resourceVersion to enforce update from last read for optimistic concurrency control.</p>
<p class="toc_element">
  <code><a href="#run">run(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Trigger creation of a new execution of this job.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Create a job.

Args:
  parent: string, Required. The namespace in which the job should be created. 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:

{ # Job represents the configuration of a single job, which 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/base-images`: Service, Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/build-base-image`: Service. * `run.googleapis.com/build-enable-automatic-updates`: Service. * `run.googleapis.com/build-environment-variables`: Service. * `run.googleapis.com/build-function-target`: Service. * `run.googleapis.com/build-id`: Service. * `run.googleapis.com/build-image-uri`: Service. * `run.googleapis.com/build-name`: Service. * `run.googleapis.com/build-service-account`: Service. * `run.googleapis.com/build-source-location`: Service. * `run.googleapis.com/build-worker-pool`: Service. * `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/default-url-disabled`: 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/gpu-zonal-redundancy-disabled`: Revision. * `run.googleapis.com/health-check-disabled`: Revision. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service * `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;: { # JobSpec describes how the job will look. # Optional. Specification of the desired behavior of a job.
    &quot;runExecutionToken&quot;: &quot;A String&quot;, # A unique string used as a suffix for creating a new execution. The Job will become ready when the execution is successfully completed. The sum of job name and token length must be fewer than 63 characters.
    &quot;startExecutionToken&quot;: &quot;A String&quot;, # A unique string used as a suffix for creating a new execution. The Job will become ready when the execution is successfully started. The sum of job name and token length must be fewer than 63 characters.
    &quot;template&quot;: { # ExecutionTemplateSpec describes the metadata and spec an Execution should have when created from a job. # Optional. Describes the execution that will be created when running a job.
      &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. Optional metadata for this Execution, including labels and annotations. The following annotation keys set properties of the created execution: * `run.googleapis.com/cloudsql-instances` sets Cloud SQL connections. Multiple values should be comma separated. * `run.googleapis.com/vpc-access-connector` sets a Serverless VPC Access connector. * `run.googleapis.com/vpc-access-egress` sets VPC egress. Supported values are `all-traffic`, `all` (deprecated), and `private-ranges-only`. `all-traffic` and `all` provide the same functionality. `all` is deprecated but will continue to be supported. Prefer `all-traffic`.
        &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/base-images`: Service, Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/build-base-image`: Service. * `run.googleapis.com/build-enable-automatic-updates`: Service. * `run.googleapis.com/build-environment-variables`: Service. * `run.googleapis.com/build-function-target`: Service. * `run.googleapis.com/build-id`: Service. * `run.googleapis.com/build-image-uri`: Service. * `run.googleapis.com/build-name`: Service. * `run.googleapis.com/build-service-account`: Service. * `run.googleapis.com/build-source-location`: Service. * `run.googleapis.com/build-worker-pool`: Service. * `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/default-url-disabled`: 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/gpu-zonal-redundancy-disabled`: Revision. * `run.googleapis.com/health-check-disabled`: Revision. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service * `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. # Required. ExecutionSpec holds the desired configuration for executions of this job.
        &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of tasks the execution should run at given time. 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. # Readiness probe to be used for health checks.
                  &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;, &#x27;memory&#x27; and &#x27;nvidia.com/gpu&#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. * The only supported &#x27;nvidia.com/gpu&#x27; value is &#x27;1&#x27;.
                    &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;nodeSelector&quot;: { # Optional. The Node Selector configuration. Map of selector key to a value which matches a node.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &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;csi&quot;: { # Storage volume source using the Container Storage Interface. # Volume specified by the Container Storage Interface driver
                  &quot;driver&quot;: &quot;A String&quot;, # name of the CSI driver for the requested storage system. Cloud Run supports the following drivers: * gcsfuse.run.googleapis.com : Mount a Cloud Storage Bucket as a volume.
                  &quot;readOnly&quot;: True or False, # If true, mount the volume as read only. Defaults to false.
                  &quot;volumeAttributes&quot;: { # stores driver specific attributes. For Google Cloud Storage volumes, the following attributes are supported: * bucketName: the name of the Cloud Storage bucket to mount. The Cloud Run Service identity must have access to this bucket. * mountOptions: comma-separated list of mount options to pass to the gcsfuse.
                    &quot;a_key&quot;: &quot;A String&quot;,
                  },
                },
                &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;nfs&quot;: { # Represents a persistent volume that will be mounted using NFS. This volume will be shared between all instances of the resource and data will not be deleted when the instance is shut down.
                  &quot;path&quot;: &quot;A String&quot;, # Path that is exported by the NFS server.
                  &quot;readOnly&quot;: True or False, # If true, mount the NFS volume as read only. Defaults to false.
                  &quot;server&quot;: &quot;A String&quot;, # Hostname or IP address of the NFS server.
                },
                &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;: { # JobStatus represents the current state of a Job. # Output only. Current status of a job.
    &quot;conditions&quot;: [ # Conditions communicate information about ongoing/complete reconciliation processes that bring the &quot;spec&quot; inline with the observed state of the world. Job-specific conditions include: * `Ready`: `True` when the job is ready to be executed.
      { # 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;executionCount&quot;: 42, # Number of executions created for this job.
    &quot;latestCreatedExecution&quot;: { # Reference to an Execution. Use /Executions.GetExecution with the given name to get full execution including the latest status. # A pointer to the most recently created execution for this job. This is set regardless of the eventual state of the execution.
      &quot;completionStatus&quot;: &quot;A String&quot;, # Optional. Status for the execution completion.
      &quot;completionTimestamp&quot;: &quot;A String&quot;, # Optional. Completion timestamp of the execution.
      &quot;creationTimestamp&quot;: &quot;A String&quot;, # Optional. Creation timestamp of the execution.
      &quot;deletionTimestamp&quot;: &quot;A String&quot;, # Optional. The read-only soft deletion timestamp of the execution.
      &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the execution.
    },
    &quot;observedGeneration&quot;: 42, # The &#x27;generation&#x27; of the job that was last processed by the controller.
  },
}

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

Returns:
  An object of the form:

    { # Job represents the configuration of a single job, which 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/base-images`: Service, Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/build-base-image`: Service. * `run.googleapis.com/build-enable-automatic-updates`: Service. * `run.googleapis.com/build-environment-variables`: Service. * `run.googleapis.com/build-function-target`: Service. * `run.googleapis.com/build-id`: Service. * `run.googleapis.com/build-image-uri`: Service. * `run.googleapis.com/build-name`: Service. * `run.googleapis.com/build-service-account`: Service. * `run.googleapis.com/build-source-location`: Service. * `run.googleapis.com/build-worker-pool`: Service. * `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/default-url-disabled`: 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/gpu-zonal-redundancy-disabled`: Revision. * `run.googleapis.com/health-check-disabled`: Revision. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service * `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;: { # JobSpec describes how the job will look. # Optional. Specification of the desired behavior of a job.
    &quot;runExecutionToken&quot;: &quot;A String&quot;, # A unique string used as a suffix for creating a new execution. The Job will become ready when the execution is successfully completed. The sum of job name and token length must be fewer than 63 characters.
    &quot;startExecutionToken&quot;: &quot;A String&quot;, # A unique string used as a suffix for creating a new execution. The Job will become ready when the execution is successfully started. The sum of job name and token length must be fewer than 63 characters.
    &quot;template&quot;: { # ExecutionTemplateSpec describes the metadata and spec an Execution should have when created from a job. # Optional. Describes the execution that will be created when running a job.
      &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. Optional metadata for this Execution, including labels and annotations. The following annotation keys set properties of the created execution: * `run.googleapis.com/cloudsql-instances` sets Cloud SQL connections. Multiple values should be comma separated. * `run.googleapis.com/vpc-access-connector` sets a Serverless VPC Access connector. * `run.googleapis.com/vpc-access-egress` sets VPC egress. Supported values are `all-traffic`, `all` (deprecated), and `private-ranges-only`. `all-traffic` and `all` provide the same functionality. `all` is deprecated but will continue to be supported. Prefer `all-traffic`.
        &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/base-images`: Service, Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/build-base-image`: Service. * `run.googleapis.com/build-enable-automatic-updates`: Service. * `run.googleapis.com/build-environment-variables`: Service. * `run.googleapis.com/build-function-target`: Service. * `run.googleapis.com/build-id`: Service. * `run.googleapis.com/build-image-uri`: Service. * `run.googleapis.com/build-name`: Service. * `run.googleapis.com/build-service-account`: Service. * `run.googleapis.com/build-source-location`: Service. * `run.googleapis.com/build-worker-pool`: Service. * `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/default-url-disabled`: 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/gpu-zonal-redundancy-disabled`: Revision. * `run.googleapis.com/health-check-disabled`: Revision. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service * `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. # Required. ExecutionSpec holds the desired configuration for executions of this job.
        &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of tasks the execution should run at given time. 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. # Readiness probe to be used for health checks.
                  &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;, &#x27;memory&#x27; and &#x27;nvidia.com/gpu&#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. * The only supported &#x27;nvidia.com/gpu&#x27; value is &#x27;1&#x27;.
                    &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;nodeSelector&quot;: { # Optional. The Node Selector configuration. Map of selector key to a value which matches a node.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &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;csi&quot;: { # Storage volume source using the Container Storage Interface. # Volume specified by the Container Storage Interface driver
                  &quot;driver&quot;: &quot;A String&quot;, # name of the CSI driver for the requested storage system. Cloud Run supports the following drivers: * gcsfuse.run.googleapis.com : Mount a Cloud Storage Bucket as a volume.
                  &quot;readOnly&quot;: True or False, # If true, mount the volume as read only. Defaults to false.
                  &quot;volumeAttributes&quot;: { # stores driver specific attributes. For Google Cloud Storage volumes, the following attributes are supported: * bucketName: the name of the Cloud Storage bucket to mount. The Cloud Run Service identity must have access to this bucket. * mountOptions: comma-separated list of mount options to pass to the gcsfuse.
                    &quot;a_key&quot;: &quot;A String&quot;,
                  },
                },
                &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;nfs&quot;: { # Represents a persistent volume that will be mounted using NFS. This volume will be shared between all instances of the resource and data will not be deleted when the instance is shut down.
                  &quot;path&quot;: &quot;A String&quot;, # Path that is exported by the NFS server.
                  &quot;readOnly&quot;: True or False, # If true, mount the NFS volume as read only. Defaults to false.
                  &quot;server&quot;: &quot;A String&quot;, # Hostname or IP address of the NFS server.
                },
                &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;: { # JobStatus represents the current state of a Job. # Output only. Current status of a job.
    &quot;conditions&quot;: [ # Conditions communicate information about ongoing/complete reconciliation processes that bring the &quot;spec&quot; inline with the observed state of the world. Job-specific conditions include: * `Ready`: `True` when the job is ready to be executed.
      { # 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;executionCount&quot;: 42, # Number of executions created for this job.
    &quot;latestCreatedExecution&quot;: { # Reference to an Execution. Use /Executions.GetExecution with the given name to get full execution including the latest status. # A pointer to the most recently created execution for this job. This is set regardless of the eventual state of the execution.
      &quot;completionStatus&quot;: &quot;A String&quot;, # Optional. Status for the execution completion.
      &quot;completionTimestamp&quot;: &quot;A String&quot;, # Optional. Completion timestamp of the execution.
      &quot;creationTimestamp&quot;: &quot;A String&quot;, # Optional. Creation timestamp of the execution.
      &quot;deletionTimestamp&quot;: &quot;A String&quot;, # Optional. The read-only soft deletion timestamp of the execution.
      &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the execution.
    },
    &quot;observedGeneration&quot;: 42, # The &#x27;generation&#x27; of the job that was last processed by the controller.
  },
}</pre>
</div>

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

Args:
  name: string, Required. The name of the job 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, and deletes in the background. Please see kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/ for more information.
  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 a job.

Args:
  name: string, Required. The name of the job to retrieve. It takes the form namespaces/{namespace}/jobs/{job_name} and the `endpoint` must be regional. Replace {namespace} with the project ID or number. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Job represents the configuration of a single job, which 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/base-images`: Service, Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/build-base-image`: Service. * `run.googleapis.com/build-enable-automatic-updates`: Service. * `run.googleapis.com/build-environment-variables`: Service. * `run.googleapis.com/build-function-target`: Service. * `run.googleapis.com/build-id`: Service. * `run.googleapis.com/build-image-uri`: Service. * `run.googleapis.com/build-name`: Service. * `run.googleapis.com/build-service-account`: Service. * `run.googleapis.com/build-source-location`: Service. * `run.googleapis.com/build-worker-pool`: Service. * `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/default-url-disabled`: 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/gpu-zonal-redundancy-disabled`: Revision. * `run.googleapis.com/health-check-disabled`: Revision. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service * `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;: { # JobSpec describes how the job will look. # Optional. Specification of the desired behavior of a job.
    &quot;runExecutionToken&quot;: &quot;A String&quot;, # A unique string used as a suffix for creating a new execution. The Job will become ready when the execution is successfully completed. The sum of job name and token length must be fewer than 63 characters.
    &quot;startExecutionToken&quot;: &quot;A String&quot;, # A unique string used as a suffix for creating a new execution. The Job will become ready when the execution is successfully started. The sum of job name and token length must be fewer than 63 characters.
    &quot;template&quot;: { # ExecutionTemplateSpec describes the metadata and spec an Execution should have when created from a job. # Optional. Describes the execution that will be created when running a job.
      &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. Optional metadata for this Execution, including labels and annotations. The following annotation keys set properties of the created execution: * `run.googleapis.com/cloudsql-instances` sets Cloud SQL connections. Multiple values should be comma separated. * `run.googleapis.com/vpc-access-connector` sets a Serverless VPC Access connector. * `run.googleapis.com/vpc-access-egress` sets VPC egress. Supported values are `all-traffic`, `all` (deprecated), and `private-ranges-only`. `all-traffic` and `all` provide the same functionality. `all` is deprecated but will continue to be supported. Prefer `all-traffic`.
        &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/base-images`: Service, Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/build-base-image`: Service. * `run.googleapis.com/build-enable-automatic-updates`: Service. * `run.googleapis.com/build-environment-variables`: Service. * `run.googleapis.com/build-function-target`: Service. * `run.googleapis.com/build-id`: Service. * `run.googleapis.com/build-image-uri`: Service. * `run.googleapis.com/build-name`: Service. * `run.googleapis.com/build-service-account`: Service. * `run.googleapis.com/build-source-location`: Service. * `run.googleapis.com/build-worker-pool`: Service. * `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/default-url-disabled`: 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/gpu-zonal-redundancy-disabled`: Revision. * `run.googleapis.com/health-check-disabled`: Revision. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service * `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. # Required. ExecutionSpec holds the desired configuration for executions of this job.
        &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of tasks the execution should run at given time. 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. # Readiness probe to be used for health checks.
                  &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;, &#x27;memory&#x27; and &#x27;nvidia.com/gpu&#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. * The only supported &#x27;nvidia.com/gpu&#x27; value is &#x27;1&#x27;.
                    &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;nodeSelector&quot;: { # Optional. The Node Selector configuration. Map of selector key to a value which matches a node.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &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;csi&quot;: { # Storage volume source using the Container Storage Interface. # Volume specified by the Container Storage Interface driver
                  &quot;driver&quot;: &quot;A String&quot;, # name of the CSI driver for the requested storage system. Cloud Run supports the following drivers: * gcsfuse.run.googleapis.com : Mount a Cloud Storage Bucket as a volume.
                  &quot;readOnly&quot;: True or False, # If true, mount the volume as read only. Defaults to false.
                  &quot;volumeAttributes&quot;: { # stores driver specific attributes. For Google Cloud Storage volumes, the following attributes are supported: * bucketName: the name of the Cloud Storage bucket to mount. The Cloud Run Service identity must have access to this bucket. * mountOptions: comma-separated list of mount options to pass to the gcsfuse.
                    &quot;a_key&quot;: &quot;A String&quot;,
                  },
                },
                &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;nfs&quot;: { # Represents a persistent volume that will be mounted using NFS. This volume will be shared between all instances of the resource and data will not be deleted when the instance is shut down.
                  &quot;path&quot;: &quot;A String&quot;, # Path that is exported by the NFS server.
                  &quot;readOnly&quot;: True or False, # If true, mount the NFS volume as read only. Defaults to false.
                  &quot;server&quot;: &quot;A String&quot;, # Hostname or IP address of the NFS server.
                },
                &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;: { # JobStatus represents the current state of a Job. # Output only. Current status of a job.
    &quot;conditions&quot;: [ # Conditions communicate information about ongoing/complete reconciliation processes that bring the &quot;spec&quot; inline with the observed state of the world. Job-specific conditions include: * `Ready`: `True` when the job is ready to be executed.
      { # 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;executionCount&quot;: 42, # Number of executions created for this job.
    &quot;latestCreatedExecution&quot;: { # Reference to an Execution. Use /Executions.GetExecution with the given name to get full execution including the latest status. # A pointer to the most recently created execution for this job. This is set regardless of the eventual state of the execution.
      &quot;completionStatus&quot;: &quot;A String&quot;, # Optional. Status for the execution completion.
      &quot;completionTimestamp&quot;: &quot;A String&quot;, # Optional. Completion timestamp of the execution.
      &quot;creationTimestamp&quot;: &quot;A String&quot;, # Optional. Creation timestamp of the execution.
      &quot;deletionTimestamp&quot;: &quot;A String&quot;, # Optional. The read-only soft deletion timestamp of the execution.
      &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the execution.
    },
    &quot;observedGeneration&quot;: 42, # The &#x27;generation&#x27; of the job that was last processed by the controller.
  },
}</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 jobs. Results are sorted by creation time, descending.

Args:
  parent: string, Required. The namespace from which the jobs 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 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:

    { # ListJobsResponse is a list of Jobs 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 Jobs.
    { # Job represents the configuration of a single job, which 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/base-images`: Service, Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/build-base-image`: Service. * `run.googleapis.com/build-enable-automatic-updates`: Service. * `run.googleapis.com/build-environment-variables`: Service. * `run.googleapis.com/build-function-target`: Service. * `run.googleapis.com/build-id`: Service. * `run.googleapis.com/build-image-uri`: Service. * `run.googleapis.com/build-name`: Service. * `run.googleapis.com/build-service-account`: Service. * `run.googleapis.com/build-source-location`: Service. * `run.googleapis.com/build-worker-pool`: Service. * `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/default-url-disabled`: 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/gpu-zonal-redundancy-disabled`: Revision. * `run.googleapis.com/health-check-disabled`: Revision. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service * `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;: { # JobSpec describes how the job will look. # Optional. Specification of the desired behavior of a job.
        &quot;runExecutionToken&quot;: &quot;A String&quot;, # A unique string used as a suffix for creating a new execution. The Job will become ready when the execution is successfully completed. The sum of job name and token length must be fewer than 63 characters.
        &quot;startExecutionToken&quot;: &quot;A String&quot;, # A unique string used as a suffix for creating a new execution. The Job will become ready when the execution is successfully started. The sum of job name and token length must be fewer than 63 characters.
        &quot;template&quot;: { # ExecutionTemplateSpec describes the metadata and spec an Execution should have when created from a job. # Optional. Describes the execution that will be created when running a job.
          &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. Optional metadata for this Execution, including labels and annotations. The following annotation keys set properties of the created execution: * `run.googleapis.com/cloudsql-instances` sets Cloud SQL connections. Multiple values should be comma separated. * `run.googleapis.com/vpc-access-connector` sets a Serverless VPC Access connector. * `run.googleapis.com/vpc-access-egress` sets VPC egress. Supported values are `all-traffic`, `all` (deprecated), and `private-ranges-only`. `all-traffic` and `all` provide the same functionality. `all` is deprecated but will continue to be supported. Prefer `all-traffic`.
            &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/base-images`: Service, Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/build-base-image`: Service. * `run.googleapis.com/build-enable-automatic-updates`: Service. * `run.googleapis.com/build-environment-variables`: Service. * `run.googleapis.com/build-function-target`: Service. * `run.googleapis.com/build-id`: Service. * `run.googleapis.com/build-image-uri`: Service. * `run.googleapis.com/build-name`: Service. * `run.googleapis.com/build-service-account`: Service. * `run.googleapis.com/build-source-location`: Service. * `run.googleapis.com/build-worker-pool`: Service. * `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/default-url-disabled`: 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/gpu-zonal-redundancy-disabled`: Revision. * `run.googleapis.com/health-check-disabled`: Revision. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service * `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. # Required. ExecutionSpec holds the desired configuration for executions of this job.
            &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of tasks the execution should run at given time. 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. # Readiness probe to be used for health checks.
                      &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;, &#x27;memory&#x27; and &#x27;nvidia.com/gpu&#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. * The only supported &#x27;nvidia.com/gpu&#x27; value is &#x27;1&#x27;.
                        &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;nodeSelector&quot;: { # Optional. The Node Selector configuration. Map of selector key to a value which matches a node.
                  &quot;a_key&quot;: &quot;A String&quot;,
                },
                &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;csi&quot;: { # Storage volume source using the Container Storage Interface. # Volume specified by the Container Storage Interface driver
                      &quot;driver&quot;: &quot;A String&quot;, # name of the CSI driver for the requested storage system. Cloud Run supports the following drivers: * gcsfuse.run.googleapis.com : Mount a Cloud Storage Bucket as a volume.
                      &quot;readOnly&quot;: True or False, # If true, mount the volume as read only. Defaults to false.
                      &quot;volumeAttributes&quot;: { # stores driver specific attributes. For Google Cloud Storage volumes, the following attributes are supported: * bucketName: the name of the Cloud Storage bucket to mount. The Cloud Run Service identity must have access to this bucket. * mountOptions: comma-separated list of mount options to pass to the gcsfuse.
                        &quot;a_key&quot;: &quot;A String&quot;,
                      },
                    },
                    &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;nfs&quot;: { # Represents a persistent volume that will be mounted using NFS. This volume will be shared between all instances of the resource and data will not be deleted when the instance is shut down.
                      &quot;path&quot;: &quot;A String&quot;, # Path that is exported by the NFS server.
                      &quot;readOnly&quot;: True or False, # If true, mount the NFS volume as read only. Defaults to false.
                      &quot;server&quot;: &quot;A String&quot;, # Hostname or IP address of the NFS server.
                    },
                    &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;: { # JobStatus represents the current state of a Job. # Output only. Current status of a job.
        &quot;conditions&quot;: [ # Conditions communicate information about ongoing/complete reconciliation processes that bring the &quot;spec&quot; inline with the observed state of the world. Job-specific conditions include: * `Ready`: `True` when the job is ready to be executed.
          { # 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;executionCount&quot;: 42, # Number of executions created for this job.
        &quot;latestCreatedExecution&quot;: { # Reference to an Execution. Use /Executions.GetExecution with the given name to get full execution including the latest status. # A pointer to the most recently created execution for this job. This is set regardless of the eventual state of the execution.
          &quot;completionStatus&quot;: &quot;A String&quot;, # Optional. Status for the execution completion.
          &quot;completionTimestamp&quot;: &quot;A String&quot;, # Optional. Completion timestamp of the execution.
          &quot;creationTimestamp&quot;: &quot;A String&quot;, # Optional. Creation timestamp of the execution.
          &quot;deletionTimestamp&quot;: &quot;A String&quot;, # Optional. The read-only soft deletion timestamp of the execution.
          &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the execution.
        },
        &quot;observedGeneration&quot;: 42, # The &#x27;generation&#x27; of the job that was last processed by the controller.
      },
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # The kind of this resource, in this case &quot;JobsList&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 jobs 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>

<div class="method">
    <code class="details" id="replaceJob">replaceJob(name, body=None, x__xgafv=None)</code>
  <pre>Replace a job. Only the spec and metadata labels and annotations are modifiable. After the Replace request, Cloud Run will work to make the &#x27;status&#x27; match the requested &#x27;spec&#x27;. May provide metadata.resourceVersion to enforce update from last read for optimistic concurrency control.

Args:
  name: string, Required. The name of the job being replaced. 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:

{ # Job represents the configuration of a single job, which 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/base-images`: Service, Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/build-base-image`: Service. * `run.googleapis.com/build-enable-automatic-updates`: Service. * `run.googleapis.com/build-environment-variables`: Service. * `run.googleapis.com/build-function-target`: Service. * `run.googleapis.com/build-id`: Service. * `run.googleapis.com/build-image-uri`: Service. * `run.googleapis.com/build-name`: Service. * `run.googleapis.com/build-service-account`: Service. * `run.googleapis.com/build-source-location`: Service. * `run.googleapis.com/build-worker-pool`: Service. * `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/default-url-disabled`: 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/gpu-zonal-redundancy-disabled`: Revision. * `run.googleapis.com/health-check-disabled`: Revision. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service * `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;: { # JobSpec describes how the job will look. # Optional. Specification of the desired behavior of a job.
    &quot;runExecutionToken&quot;: &quot;A String&quot;, # A unique string used as a suffix for creating a new execution. The Job will become ready when the execution is successfully completed. The sum of job name and token length must be fewer than 63 characters.
    &quot;startExecutionToken&quot;: &quot;A String&quot;, # A unique string used as a suffix for creating a new execution. The Job will become ready when the execution is successfully started. The sum of job name and token length must be fewer than 63 characters.
    &quot;template&quot;: { # ExecutionTemplateSpec describes the metadata and spec an Execution should have when created from a job. # Optional. Describes the execution that will be created when running a job.
      &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. Optional metadata for this Execution, including labels and annotations. The following annotation keys set properties of the created execution: * `run.googleapis.com/cloudsql-instances` sets Cloud SQL connections. Multiple values should be comma separated. * `run.googleapis.com/vpc-access-connector` sets a Serverless VPC Access connector. * `run.googleapis.com/vpc-access-egress` sets VPC egress. Supported values are `all-traffic`, `all` (deprecated), and `private-ranges-only`. `all-traffic` and `all` provide the same functionality. `all` is deprecated but will continue to be supported. Prefer `all-traffic`.
        &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/base-images`: Service, Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/build-base-image`: Service. * `run.googleapis.com/build-enable-automatic-updates`: Service. * `run.googleapis.com/build-environment-variables`: Service. * `run.googleapis.com/build-function-target`: Service. * `run.googleapis.com/build-id`: Service. * `run.googleapis.com/build-image-uri`: Service. * `run.googleapis.com/build-name`: Service. * `run.googleapis.com/build-service-account`: Service. * `run.googleapis.com/build-source-location`: Service. * `run.googleapis.com/build-worker-pool`: Service. * `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/default-url-disabled`: 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/gpu-zonal-redundancy-disabled`: Revision. * `run.googleapis.com/health-check-disabled`: Revision. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service * `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. # Required. ExecutionSpec holds the desired configuration for executions of this job.
        &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of tasks the execution should run at given time. 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. # Readiness probe to be used for health checks.
                  &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;, &#x27;memory&#x27; and &#x27;nvidia.com/gpu&#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. * The only supported &#x27;nvidia.com/gpu&#x27; value is &#x27;1&#x27;.
                    &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;nodeSelector&quot;: { # Optional. The Node Selector configuration. Map of selector key to a value which matches a node.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &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;csi&quot;: { # Storage volume source using the Container Storage Interface. # Volume specified by the Container Storage Interface driver
                  &quot;driver&quot;: &quot;A String&quot;, # name of the CSI driver for the requested storage system. Cloud Run supports the following drivers: * gcsfuse.run.googleapis.com : Mount a Cloud Storage Bucket as a volume.
                  &quot;readOnly&quot;: True or False, # If true, mount the volume as read only. Defaults to false.
                  &quot;volumeAttributes&quot;: { # stores driver specific attributes. For Google Cloud Storage volumes, the following attributes are supported: * bucketName: the name of the Cloud Storage bucket to mount. The Cloud Run Service identity must have access to this bucket. * mountOptions: comma-separated list of mount options to pass to the gcsfuse.
                    &quot;a_key&quot;: &quot;A String&quot;,
                  },
                },
                &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;nfs&quot;: { # Represents a persistent volume that will be mounted using NFS. This volume will be shared between all instances of the resource and data will not be deleted when the instance is shut down.
                  &quot;path&quot;: &quot;A String&quot;, # Path that is exported by the NFS server.
                  &quot;readOnly&quot;: True or False, # If true, mount the NFS volume as read only. Defaults to false.
                  &quot;server&quot;: &quot;A String&quot;, # Hostname or IP address of the NFS server.
                },
                &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;: { # JobStatus represents the current state of a Job. # Output only. Current status of a job.
    &quot;conditions&quot;: [ # Conditions communicate information about ongoing/complete reconciliation processes that bring the &quot;spec&quot; inline with the observed state of the world. Job-specific conditions include: * `Ready`: `True` when the job is ready to be executed.
      { # 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;executionCount&quot;: 42, # Number of executions created for this job.
    &quot;latestCreatedExecution&quot;: { # Reference to an Execution. Use /Executions.GetExecution with the given name to get full execution including the latest status. # A pointer to the most recently created execution for this job. This is set regardless of the eventual state of the execution.
      &quot;completionStatus&quot;: &quot;A String&quot;, # Optional. Status for the execution completion.
      &quot;completionTimestamp&quot;: &quot;A String&quot;, # Optional. Completion timestamp of the execution.
      &quot;creationTimestamp&quot;: &quot;A String&quot;, # Optional. Creation timestamp of the execution.
      &quot;deletionTimestamp&quot;: &quot;A String&quot;, # Optional. The read-only soft deletion timestamp of the execution.
      &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the execution.
    },
    &quot;observedGeneration&quot;: 42, # The &#x27;generation&#x27; of the job that was last processed by the controller.
  },
}

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

Returns:
  An object of the form:

    { # Job represents the configuration of a single job, which 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/base-images`: Service, Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/build-base-image`: Service. * `run.googleapis.com/build-enable-automatic-updates`: Service. * `run.googleapis.com/build-environment-variables`: Service. * `run.googleapis.com/build-function-target`: Service. * `run.googleapis.com/build-id`: Service. * `run.googleapis.com/build-image-uri`: Service. * `run.googleapis.com/build-name`: Service. * `run.googleapis.com/build-service-account`: Service. * `run.googleapis.com/build-source-location`: Service. * `run.googleapis.com/build-worker-pool`: Service. * `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/default-url-disabled`: 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/gpu-zonal-redundancy-disabled`: Revision. * `run.googleapis.com/health-check-disabled`: Revision. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service * `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;: { # JobSpec describes how the job will look. # Optional. Specification of the desired behavior of a job.
    &quot;runExecutionToken&quot;: &quot;A String&quot;, # A unique string used as a suffix for creating a new execution. The Job will become ready when the execution is successfully completed. The sum of job name and token length must be fewer than 63 characters.
    &quot;startExecutionToken&quot;: &quot;A String&quot;, # A unique string used as a suffix for creating a new execution. The Job will become ready when the execution is successfully started. The sum of job name and token length must be fewer than 63 characters.
    &quot;template&quot;: { # ExecutionTemplateSpec describes the metadata and spec an Execution should have when created from a job. # Optional. Describes the execution that will be created when running a job.
      &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. Optional metadata for this Execution, including labels and annotations. The following annotation keys set properties of the created execution: * `run.googleapis.com/cloudsql-instances` sets Cloud SQL connections. Multiple values should be comma separated. * `run.googleapis.com/vpc-access-connector` sets a Serverless VPC Access connector. * `run.googleapis.com/vpc-access-egress` sets VPC egress. Supported values are `all-traffic`, `all` (deprecated), and `private-ranges-only`. `all-traffic` and `all` provide the same functionality. `all` is deprecated but will continue to be supported. Prefer `all-traffic`.
        &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/base-images`: Service, Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/build-base-image`: Service. * `run.googleapis.com/build-enable-automatic-updates`: Service. * `run.googleapis.com/build-environment-variables`: Service. * `run.googleapis.com/build-function-target`: Service. * `run.googleapis.com/build-id`: Service. * `run.googleapis.com/build-image-uri`: Service. * `run.googleapis.com/build-name`: Service. * `run.googleapis.com/build-service-account`: Service. * `run.googleapis.com/build-source-location`: Service. * `run.googleapis.com/build-worker-pool`: Service. * `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/default-url-disabled`: 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/gpu-zonal-redundancy-disabled`: Revision. * `run.googleapis.com/health-check-disabled`: Revision. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service * `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. # Required. ExecutionSpec holds the desired configuration for executions of this job.
        &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of tasks the execution should run at given time. 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. # Readiness probe to be used for health checks.
                  &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;, &#x27;memory&#x27; and &#x27;nvidia.com/gpu&#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. * The only supported &#x27;nvidia.com/gpu&#x27; value is &#x27;1&#x27;.
                    &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;nodeSelector&quot;: { # Optional. The Node Selector configuration. Map of selector key to a value which matches a node.
              &quot;a_key&quot;: &quot;A String&quot;,
            },
            &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;csi&quot;: { # Storage volume source using the Container Storage Interface. # Volume specified by the Container Storage Interface driver
                  &quot;driver&quot;: &quot;A String&quot;, # name of the CSI driver for the requested storage system. Cloud Run supports the following drivers: * gcsfuse.run.googleapis.com : Mount a Cloud Storage Bucket as a volume.
                  &quot;readOnly&quot;: True or False, # If true, mount the volume as read only. Defaults to false.
                  &quot;volumeAttributes&quot;: { # stores driver specific attributes. For Google Cloud Storage volumes, the following attributes are supported: * bucketName: the name of the Cloud Storage bucket to mount. The Cloud Run Service identity must have access to this bucket. * mountOptions: comma-separated list of mount options to pass to the gcsfuse.
                    &quot;a_key&quot;: &quot;A String&quot;,
                  },
                },
                &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;nfs&quot;: { # Represents a persistent volume that will be mounted using NFS. This volume will be shared between all instances of the resource and data will not be deleted when the instance is shut down.
                  &quot;path&quot;: &quot;A String&quot;, # Path that is exported by the NFS server.
                  &quot;readOnly&quot;: True or False, # If true, mount the NFS volume as read only. Defaults to false.
                  &quot;server&quot;: &quot;A String&quot;, # Hostname or IP address of the NFS server.
                },
                &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;: { # JobStatus represents the current state of a Job. # Output only. Current status of a job.
    &quot;conditions&quot;: [ # Conditions communicate information about ongoing/complete reconciliation processes that bring the &quot;spec&quot; inline with the observed state of the world. Job-specific conditions include: * `Ready`: `True` when the job is ready to be executed.
      { # 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;executionCount&quot;: 42, # Number of executions created for this job.
    &quot;latestCreatedExecution&quot;: { # Reference to an Execution. Use /Executions.GetExecution with the given name to get full execution including the latest status. # A pointer to the most recently created execution for this job. This is set regardless of the eventual state of the execution.
      &quot;completionStatus&quot;: &quot;A String&quot;, # Optional. Status for the execution completion.
      &quot;completionTimestamp&quot;: &quot;A String&quot;, # Optional. Completion timestamp of the execution.
      &quot;creationTimestamp&quot;: &quot;A String&quot;, # Optional. Creation timestamp of the execution.
      &quot;deletionTimestamp&quot;: &quot;A String&quot;, # Optional. The read-only soft deletion timestamp of the execution.
      &quot;name&quot;: &quot;A String&quot;, # Optional. Name of the execution.
    },
    &quot;observedGeneration&quot;: 42, # The &#x27;generation&#x27; of the job that was last processed by the controller.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="run">run(name, body=None, x__xgafv=None)</code>
  <pre>Trigger creation of a new execution of this job.

Args:
  name: string, Required. The name of the job to run. 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 creating a new execution of a job.
  &quot;overrides&quot;: { # RunJob Overrides that contains Execution fields to be overridden on the go. # Optional. Overrides existing job configuration for one specific new job execution only, using the specified values to update the job configuration for the new execution.
    &quot;containerOverrides&quot;: [ # Per container override specification.
      { # Per container override specification.
        &quot;args&quot;: [ # Arguments to the entrypoint. The specified arguments replace and override any existing entrypoint arguments. Must be empty if `clear_args` is set to true.
          &quot;A String&quot;,
        ],
        &quot;clearArgs&quot;: True or False, # Optional. Set to True to clear all existing arguments.
        &quot;env&quot;: [ # List of environment variables to set in the container. All specified environment variables are merged with existing environment variables. When the specified environment variables exist, these values override any existing values.
          { # 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;name&quot;: &quot;A String&quot;, # The name of the container specified as a DNS_LABEL.
      },
    ],
    &quot;taskCount&quot;: 42, # The desired number of tasks the execution should run. Will replace existing task_count value.
    &quot;timeoutSeconds&quot;: 42, # Duration in seconds the task may be active before the system will actively try to mark it failed and kill associated containers. Will replace existing timeout_seconds value.
  },
}

  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/base-images`: Service, Revision. * `run.googleapis.com/binary-authorization-breakglass`: Service, Job, * `run.googleapis.com/binary-authorization`: Service, Job, Execution. * `run.googleapis.com/build-base-image`: Service. * `run.googleapis.com/build-enable-automatic-updates`: Service. * `run.googleapis.com/build-environment-variables`: Service. * `run.googleapis.com/build-function-target`: Service. * `run.googleapis.com/build-id`: Service. * `run.googleapis.com/build-image-uri`: Service. * `run.googleapis.com/build-name`: Service. * `run.googleapis.com/build-service-account`: Service. * `run.googleapis.com/build-source-location`: Service. * `run.googleapis.com/build-worker-pool`: Service. * `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/default-url-disabled`: 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/gpu-zonal-redundancy-disabled`: Revision. * `run.googleapis.com/health-check-disabled`: Revision. * `run.googleapis.com/ingress`: Service. * `run.googleapis.com/launch-stage`: Service, Job. * `run.googleapis.com/minScale`: Service * `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. 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. # Readiness probe to be used for health checks.
              &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;, &#x27;memory&#x27; and &#x27;nvidia.com/gpu&#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. * The only supported &#x27;nvidia.com/gpu&#x27; value is &#x27;1&#x27;.
                &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;nodeSelector&quot;: { # Optional. The Node Selector configuration. Map of selector key to a value which matches a node.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &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;csi&quot;: { # Storage volume source using the Container Storage Interface. # Volume specified by the Container Storage Interface driver
              &quot;driver&quot;: &quot;A String&quot;, # name of the CSI driver for the requested storage system. Cloud Run supports the following drivers: * gcsfuse.run.googleapis.com : Mount a Cloud Storage Bucket as a volume.
              &quot;readOnly&quot;: True or False, # If true, mount the volume as read only. Defaults to false.
              &quot;volumeAttributes&quot;: { # stores driver specific attributes. For Google Cloud Storage volumes, the following attributes are supported: * bucketName: the name of the Cloud Storage bucket to mount. The Cloud Run Service identity must have access to this bucket. * mountOptions: comma-separated list of mount options to pass to the gcsfuse.
                &quot;a_key&quot;: &quot;A String&quot;,
              },
            },
            &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;nfs&quot;: { # Represents a persistent volume that will be mounted using NFS. This volume will be shared between all instances of the resource and data will not be deleted when the instance is shut down.
              &quot;path&quot;: &quot;A String&quot;, # Path that is exported by the NFS server.
              &quot;readOnly&quot;: True or False, # If true, mount the NFS volume as read only. Defaults to false.
              &quot;server&quot;: &quot;A String&quot;, # Hostname or IP address of the NFS server.
            },
            &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>

</body></html>