<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_v1alpha1.html">Cloud Run Admin API</a> . <a href="run_v1alpha1.namespaces.html">namespaces</a> . <a href="run_v1alpha1.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.</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_id} with the project ID or number. (required)
  body: object, The request body.
    The object takes the form of:

{ # Job represents the configuration of a single job. A job 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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources +optional
  &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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds +optional
  &quot;metadata&quot;: { # k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Optional. Standard object&#x27;s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata +optional
    &quot;annotations&quot;: { # (Optional) Annotations is an 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. More info: http://kubernetes.io/docs/user-guide/annotations
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;clusterName&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
    &quot;creationTimestamp&quot;: &quot;A String&quot;, # (Optional) CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
    &quot;deletionGracePeriodSeconds&quot;: 42, # (Optional) Not supported by Cloud Run Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.
    &quot;deletionTimestamp&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
    &quot;finalizers&quot;: [ # (Optional) Not supported by Cloud Run Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. +patchStrategy=merge
      &quot;A String&quot;,
    ],
    &quot;generateName&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency string generateName = 2;
    &quot;generation&quot;: 42, # (Optional) A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.
    &quot;labels&quot;: { # (Optional) 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. More info: http://kubernetes.io/docs/user-guide/labels
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;name&quot;: &quot;A String&quot;, # Name must be unique within a namespace, within a Cloud Run region. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names +optional
    &quot;namespace&quot;: &quot;A String&quot;, # Namespace defines the space within each name must be unique, within a Cloud Run region. In Cloud Run the namespace must be equal to either the project ID or project number.
    &quot;ownerReferences&quot;: [ # (Optional) Not supported by Cloud Run List of objects that own this object. If ALL objects in the list have been deleted, this object will be garbage collected.
      { # OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.
        &quot;apiVersion&quot;: &quot;A String&quot;, # API version of the referent.
        &quot;blockOwnerDeletion&quot;: True or False, # If true, AND if the owner has the &quot;foregroundDeletion&quot; finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs &quot;delete&quot; permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. +optional
        &quot;controller&quot;: True or False, # If true, this reference points to the managing controller. +optional
        &quot;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
        &quot;name&quot;: &quot;A String&quot;, # Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names
        &quot;uid&quot;: &quot;A String&quot;, # UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
      },
    ],
    &quot;resourceVersion&quot;: &quot;A String&quot;, # Optional. An opaque 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. They may only be valid for a particular resource or set of resources. Populated by the system. Read-only. Value must be treated as opaque by clients or omitted. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
    &quot;selfLink&quot;: &quot;A String&quot;, # (Optional) SelfLink is a URL representing this object. Populated by the system. Read-only. string selfLink = 4;
    &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
  },
  &quot;spec&quot;: { # JobSpec describes how the job execution will look like. # Optional. Specification of the desired behavior of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional
    &quot;activeDeadlineSeconds&quot;: &quot;A String&quot;, # Optional. Not supported. Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it. If set to zero, the system will never attempt to terminate the job based on time. Otherwise, the value must be positive integer. +optional
    &quot;backoffLimit&quot;: 42, # Optional. Specifies the number of retries per instance, before marking this job failed. If set to zero, instances will never retry on failure. +optional
    &quot;completions&quot;: 42, # Optional. Specifies the desired number of successfully finished instances the job should be run with. Setting to 1 means that parallelism is limited to 1 and the success of that instance signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
    &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of instances the job should run at any given time. Must be &lt;= completions. The actual number of instances running in steady state will be less than this number when ((.spec.completions - .status.successful) &lt; .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
    &quot;template&quot;: { # InstanceTemplateSpec describes the data an instance should have when created from a template. # Optional. Describes the instance that will be created when executing a job.
      &quot;spec&quot;: { # InstanceSpec is a description of an instance. # Optional. Specification of the desired behavior of the instance. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status +optional
        &quot;activeDeadlineSeconds&quot;: &quot;A String&quot;, # Optional. Optional duration in seconds the instance may be active relative to StartTime before the system will actively try to mark it failed and kill associated containers. If set to zero, the system will never attempt to kill an instance based on time. Otherwise, value must be a positive integer. +optional
        &quot;containers&quot;: [ # Optional. List of containers belonging to the instance. We disallow a number of fields on this Container. Only a single container may be provided.
          { # 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;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
              &quot;A String&quot;,
            ],
            &quot;command&quot;: [
              &quot;A String&quot;,
            ],
            &quot;env&quot;: [ # (Optional) List of environment variables to set in the container.
              { # EnvVar represents an environment variable present in a Container.
                &quot;name&quot;: &quot;A String&quot;, # Name of the environment variable. Must be a C_IDENTIFIER.
                &quot;value&quot;: &quot;A String&quot;, # (Optional) Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any route environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to &quot;&quot;.
                &quot;valueFrom&quot;: { # EnvVarSource represents a source for the value of an EnvVar. # (Optional) Source for the environment variable&#x27;s value. Only supports secret_key_ref. Source for the environment variable&#x27;s value. Cannot be used if value is not empty.
                  &quot;configMapKeyRef&quot;: { # Not supported by Cloud Run Selects a key from a ConfigMap. # (Optional) Not supported by Cloud Run Selects a key of a ConfigMap.
                    &quot;key&quot;: &quot;A String&quot;, # The key to select.
                    &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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    },
                    &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                    &quot;optional&quot;: True or False, # (Optional) Specify whether the ConfigMap or its key must be defined
                  },
                  &quot;secretKeyRef&quot;: { # SecretKeySelector selects a key of a Secret. # (Optional) Selects a key (version) of a secret in Secret Manager.
                    &quot;key&quot;: &quot;A String&quot;, # A Cloud Secret Manager secret version. Must be &#x27;latest&#x27; for the latest version or an integer for a specific version. 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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    },
                    &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, # (Optional) Specify whether the Secret or its key must be defined
                  },
                },
              },
            ],
            &quot;envFrom&quot;: [ # (Optional) List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.
              { # 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. # (Optional) 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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                  &quot;optional&quot;: True or False, # (Optional) Specify whether the ConfigMap must be defined
                },
                &quot;prefix&quot;: &quot;A String&quot;, # (Optional) 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. # (Optional) 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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The Secret to select from.
                  &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret must be defined
                },
              },
            ],
            &quot;image&quot;: &quot;A String&quot;, # Only supports containers from Google Container Registry or Artifact Registry URL of the Container image. More info: https://kubernetes.io/docs/concepts/containers/images
            &quot;imagePullPolicy&quot;: &quot;A String&quot;, # (Optional) Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
            &quot;livenessProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Periodic probe of container liveness. Container will be restarted if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                &quot;command&quot;: [ # (Optional) 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, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                  { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
              },
              &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
              &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
              &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
              },
              &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
            },
            &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the container specified as a DNS_LABEL. Currently unused in Cloud Run. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names
            &quot;ports&quot;: [ # (Optional) 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, # (Optional) Port number the container listens on. This must be a valid port number, 0 &lt; x &lt; 65536.
                &quot;name&quot;: &quot;A String&quot;, # (Optional) 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;, # (Optional) Protocol for port. Must be &quot;TCP&quot;. Defaults to &quot;TCP&quot;.
              },
            ],
            &quot;readinessProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                &quot;command&quot;: [ # (Optional) 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, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                  { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
              },
              &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
              &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
              &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
              },
              &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
            },
            &quot;resources&quot;: { # ResourceRequirements describes the compute resource requirements. # (Optional) Compute Resources required by this container. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
              &quot;limits&quot;: { # (Optional) Only memory and CPU are supported. Note: The only supported values for CPU are &#x27;1&#x27;, &#x27;2&#x27;, and &#x27;4&#x27;. Setting 4 CPU requires at least 2Gi of memory. Limits describes the maximum amount of compute resources allowed. The values of the map is string form of the &#x27;quantity&#x27; k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;requests&quot;: { # (Optional) Only memory and CPU are supported. Note: The only supported values for CPU are &#x27;1&#x27;, &#x27;2&#x27;, and &#x27;4&#x27;. Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. The values of the map is string form of the &#x27;quantity&#x27; k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
                &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. # (Optional) Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
              &quot;runAsUser&quot;: 42, # (Optional) 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;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not be added to service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                &quot;command&quot;: [ # (Optional) 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, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                  { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
              },
              &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
              &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
              &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
              },
              &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
            },
            &quot;terminationMessagePath&quot;: &quot;A String&quot;, # (Optional) 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;, # (Optional) 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;: [ # (Optional) 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;, # Path within the container at which the volume should be mounted. Must not contain &#x27;:&#x27;.
                &quot;name&quot;: &quot;A String&quot;, # The name of the volume. There must be a corresponding Volume with the same name.
                &quot;readOnly&quot;: True or False, # (Optional) Only true is accepted. Defaults to true.
                &quot;subPath&quot;: &quot;A String&quot;, # (Optional) 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;, # (Optional) 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;restartPolicy&quot;: &quot;A String&quot;, # Optional. Restart policy for all containers within the instance. Allowed values are: - OnFailure: Instances will always be restarted on failure if the backoffLimit has not been reached. - Never: Instances are never restarted and all failures are permanent. Cannot be used if backoffLimit is set. +optional
        &quot;serviceAccountName&quot;: &quot;A String&quot;, # Optional. Email address of the IAM service account associated with the instance of a Job. The service account represents the identity of the running instance, and determines what permissions the instance has. If not provided, the instance will use the project&#x27;s default service account. +optional
        &quot;terminationGracePeriodSeconds&quot;: &quot;A String&quot;, # Optional. Optional duration in seconds the instance needs to terminate gracefully. Value must be non-negative integer. The value zero indicates delete immediately. The grace period is the duration in seconds after the processes running in the instance are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. +optional
        &quot;volumes&quot;: [ # Optional. List of volumes that can be mounted by containers belonging to the instance. More info: https://kubernetes.io/docs/concepts/storage/volumes +optional
          { # 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.
              &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 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;name&quot;: &quot;A String&quot;, # Volume&#x27;s name. In Cloud Run Fully Managed, the name &#x27;cloudsql&#x27; is reserved.
            &quot;secret&quot;: { # 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.
              &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 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, the volume will expose a file whose name is the secret_name. If 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 a key and a path. 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 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, # (Optional) Specify whether the Secret or its keys must be defined.
              &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;ttlSecondsAfterFinished&quot;: 42, # Optional. Not supported. ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is set to zero, the Job won&#x27;t be automatically deleted. +optional
  },
  &quot;status&quot;: { # JobStatus represents the current state of a Job. # Optional. Current status of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional
    &quot;active&quot;: 42, # Optional. The number of actively running instances. +optional
    &quot;completionTime&quot;: &quot;A String&quot;, # Optional. Represents time when the job 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. The latest available observations of a job&#x27;s current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
      { # JobCondition defines a readiness condition for a Revision.
        &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.
        &quot;severity&quot;: &quot;A String&quot;, # Optional. How to interpret failures of this condition, one of Error, Warning, Info
        &quot;status&quot;: &quot;A String&quot;, # Required. Status of the condition, one of True, False, Unknown.
        &quot;type&quot;: &quot;A String&quot;, # Required. Type is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types include: * &quot;Completed&quot;: True when the Job has successfully completed. * &quot;Started&quot;: True when the Job has successfully started running. * &quot;ResourcesAvailable&quot;: True when underlying resources have been provisioned.
      },
    ],
    &quot;failed&quot;: 42, # Optional. The number of instances which reached phase Failed. +optional
    &quot;imageDigest&quot;: &quot;A String&quot;, # Optional. ImageDigest holds the resolved digest for the image specified within .Spec.Template.Spec.Container.Image. The digest is resolved during the creation of the Job. This field holds the digest value regardless of whether a tag or digest was originally specified in the Container object.
    &quot;instances&quot;: [ # Optional. Status of completed, failed, and running instances. +optional
      { # Instance represents the status of an instance of a Job.
        &quot;completionTime&quot;: &quot;A String&quot;, # Optional. Represents time when the instance 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;failed&quot;: 42, # Optional. The number of times this instance exited with code &gt; 0; +optional
        &quot;index&quot;: 42, # Required. Index of the instance, unique per Job, and beginning at 0.
        &quot;lastAttemptResult&quot;: { # Result of an instance attempt. # Optional. Result of the last attempt of this instance. +optional
          &quot;exitCode&quot;: 42, # Optional. The exit code of this attempt. This may be unset if the container was unable to exit cleanly with a code due to some other failure. See status field for possible failure details.
          &quot;status&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Optional. The status of this attempt. If the status code is OK, then the attempt succeeded.
            &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
            &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
            &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
          },
        },
        &quot;lastExitCode&quot;: 42, # Optional. Last exit code seen for this instance. +optional
        &quot;restarted&quot;: 42, # Optional. The number of times this instance was restarted. Instances are restarted according the restartPolicy configured in the Job template. +optional
        &quot;startTime&quot;: &quot;A String&quot;, # Optional. Represents time when the instance was created by the job controller. 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;succeeded&quot;: 42, # Optional. The number of times this instance exited with code == 0. +optional
      },
    ],
    &quot;observedGeneration&quot;: 42, # Optional. The &#x27;generation&#x27; of the job that was last processed by the controller.
    &quot;startTime&quot;: &quot;A String&quot;, # Optional. Represents time when the job was acknowledged by the job controller. 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;succeeded&quot;: 42, # Optional. The number of instances which reached phase Succeeded. +optional
  },
}

  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. A job 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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources +optional
  &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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds +optional
  &quot;metadata&quot;: { # k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Optional. Standard object&#x27;s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata +optional
    &quot;annotations&quot;: { # (Optional) Annotations is an 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. More info: http://kubernetes.io/docs/user-guide/annotations
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;clusterName&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
    &quot;creationTimestamp&quot;: &quot;A String&quot;, # (Optional) CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
    &quot;deletionGracePeriodSeconds&quot;: 42, # (Optional) Not supported by Cloud Run Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.
    &quot;deletionTimestamp&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
    &quot;finalizers&quot;: [ # (Optional) Not supported by Cloud Run Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. +patchStrategy=merge
      &quot;A String&quot;,
    ],
    &quot;generateName&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency string generateName = 2;
    &quot;generation&quot;: 42, # (Optional) A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.
    &quot;labels&quot;: { # (Optional) 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. More info: http://kubernetes.io/docs/user-guide/labels
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;name&quot;: &quot;A String&quot;, # Name must be unique within a namespace, within a Cloud Run region. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names +optional
    &quot;namespace&quot;: &quot;A String&quot;, # Namespace defines the space within each name must be unique, within a Cloud Run region. In Cloud Run the namespace must be equal to either the project ID or project number.
    &quot;ownerReferences&quot;: [ # (Optional) Not supported by Cloud Run List of objects that own this object. If ALL objects in the list have been deleted, this object will be garbage collected.
      { # OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.
        &quot;apiVersion&quot;: &quot;A String&quot;, # API version of the referent.
        &quot;blockOwnerDeletion&quot;: True or False, # If true, AND if the owner has the &quot;foregroundDeletion&quot; finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs &quot;delete&quot; permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. +optional
        &quot;controller&quot;: True or False, # If true, this reference points to the managing controller. +optional
        &quot;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
        &quot;name&quot;: &quot;A String&quot;, # Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names
        &quot;uid&quot;: &quot;A String&quot;, # UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
      },
    ],
    &quot;resourceVersion&quot;: &quot;A String&quot;, # Optional. An opaque 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. They may only be valid for a particular resource or set of resources. Populated by the system. Read-only. Value must be treated as opaque by clients or omitted. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
    &quot;selfLink&quot;: &quot;A String&quot;, # (Optional) SelfLink is a URL representing this object. Populated by the system. Read-only. string selfLink = 4;
    &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
  },
  &quot;spec&quot;: { # JobSpec describes how the job execution will look like. # Optional. Specification of the desired behavior of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional
    &quot;activeDeadlineSeconds&quot;: &quot;A String&quot;, # Optional. Not supported. Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it. If set to zero, the system will never attempt to terminate the job based on time. Otherwise, the value must be positive integer. +optional
    &quot;backoffLimit&quot;: 42, # Optional. Specifies the number of retries per instance, before marking this job failed. If set to zero, instances will never retry on failure. +optional
    &quot;completions&quot;: 42, # Optional. Specifies the desired number of successfully finished instances the job should be run with. Setting to 1 means that parallelism is limited to 1 and the success of that instance signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
    &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of instances the job should run at any given time. Must be &lt;= completions. The actual number of instances running in steady state will be less than this number when ((.spec.completions - .status.successful) &lt; .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
    &quot;template&quot;: { # InstanceTemplateSpec describes the data an instance should have when created from a template. # Optional. Describes the instance that will be created when executing a job.
      &quot;spec&quot;: { # InstanceSpec is a description of an instance. # Optional. Specification of the desired behavior of the instance. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status +optional
        &quot;activeDeadlineSeconds&quot;: &quot;A String&quot;, # Optional. Optional duration in seconds the instance may be active relative to StartTime before the system will actively try to mark it failed and kill associated containers. If set to zero, the system will never attempt to kill an instance based on time. Otherwise, value must be a positive integer. +optional
        &quot;containers&quot;: [ # Optional. List of containers belonging to the instance. We disallow a number of fields on this Container. Only a single container may be provided.
          { # 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;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
              &quot;A String&quot;,
            ],
            &quot;command&quot;: [
              &quot;A String&quot;,
            ],
            &quot;env&quot;: [ # (Optional) List of environment variables to set in the container.
              { # EnvVar represents an environment variable present in a Container.
                &quot;name&quot;: &quot;A String&quot;, # Name of the environment variable. Must be a C_IDENTIFIER.
                &quot;value&quot;: &quot;A String&quot;, # (Optional) Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any route environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to &quot;&quot;.
                &quot;valueFrom&quot;: { # EnvVarSource represents a source for the value of an EnvVar. # (Optional) Source for the environment variable&#x27;s value. Only supports secret_key_ref. Source for the environment variable&#x27;s value. Cannot be used if value is not empty.
                  &quot;configMapKeyRef&quot;: { # Not supported by Cloud Run Selects a key from a ConfigMap. # (Optional) Not supported by Cloud Run Selects a key of a ConfigMap.
                    &quot;key&quot;: &quot;A String&quot;, # The key to select.
                    &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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    },
                    &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                    &quot;optional&quot;: True or False, # (Optional) Specify whether the ConfigMap or its key must be defined
                  },
                  &quot;secretKeyRef&quot;: { # SecretKeySelector selects a key of a Secret. # (Optional) Selects a key (version) of a secret in Secret Manager.
                    &quot;key&quot;: &quot;A String&quot;, # A Cloud Secret Manager secret version. Must be &#x27;latest&#x27; for the latest version or an integer for a specific version. 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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    },
                    &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, # (Optional) Specify whether the Secret or its key must be defined
                  },
                },
              },
            ],
            &quot;envFrom&quot;: [ # (Optional) List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.
              { # 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. # (Optional) 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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                  &quot;optional&quot;: True or False, # (Optional) Specify whether the ConfigMap must be defined
                },
                &quot;prefix&quot;: &quot;A String&quot;, # (Optional) 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. # (Optional) 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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The Secret to select from.
                  &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret must be defined
                },
              },
            ],
            &quot;image&quot;: &quot;A String&quot;, # Only supports containers from Google Container Registry or Artifact Registry URL of the Container image. More info: https://kubernetes.io/docs/concepts/containers/images
            &quot;imagePullPolicy&quot;: &quot;A String&quot;, # (Optional) Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
            &quot;livenessProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Periodic probe of container liveness. Container will be restarted if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                &quot;command&quot;: [ # (Optional) 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, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                  { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
              },
              &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
              &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
              &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
              },
              &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
            },
            &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the container specified as a DNS_LABEL. Currently unused in Cloud Run. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names
            &quot;ports&quot;: [ # (Optional) 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, # (Optional) Port number the container listens on. This must be a valid port number, 0 &lt; x &lt; 65536.
                &quot;name&quot;: &quot;A String&quot;, # (Optional) 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;, # (Optional) Protocol for port. Must be &quot;TCP&quot;. Defaults to &quot;TCP&quot;.
              },
            ],
            &quot;readinessProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                &quot;command&quot;: [ # (Optional) 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, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                  { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
              },
              &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
              &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
              &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
              },
              &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
            },
            &quot;resources&quot;: { # ResourceRequirements describes the compute resource requirements. # (Optional) Compute Resources required by this container. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
              &quot;limits&quot;: { # (Optional) Only memory and CPU are supported. Note: The only supported values for CPU are &#x27;1&#x27;, &#x27;2&#x27;, and &#x27;4&#x27;. Setting 4 CPU requires at least 2Gi of memory. Limits describes the maximum amount of compute resources allowed. The values of the map is string form of the &#x27;quantity&#x27; k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;requests&quot;: { # (Optional) Only memory and CPU are supported. Note: The only supported values for CPU are &#x27;1&#x27;, &#x27;2&#x27;, and &#x27;4&#x27;. Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. The values of the map is string form of the &#x27;quantity&#x27; k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
                &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. # (Optional) Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
              &quot;runAsUser&quot;: 42, # (Optional) 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;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not be added to service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                &quot;command&quot;: [ # (Optional) 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, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                  { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
              },
              &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
              &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
              &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
              },
              &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
            },
            &quot;terminationMessagePath&quot;: &quot;A String&quot;, # (Optional) 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;, # (Optional) 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;: [ # (Optional) 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;, # Path within the container at which the volume should be mounted. Must not contain &#x27;:&#x27;.
                &quot;name&quot;: &quot;A String&quot;, # The name of the volume. There must be a corresponding Volume with the same name.
                &quot;readOnly&quot;: True or False, # (Optional) Only true is accepted. Defaults to true.
                &quot;subPath&quot;: &quot;A String&quot;, # (Optional) 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;, # (Optional) 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;restartPolicy&quot;: &quot;A String&quot;, # Optional. Restart policy for all containers within the instance. Allowed values are: - OnFailure: Instances will always be restarted on failure if the backoffLimit has not been reached. - Never: Instances are never restarted and all failures are permanent. Cannot be used if backoffLimit is set. +optional
        &quot;serviceAccountName&quot;: &quot;A String&quot;, # Optional. Email address of the IAM service account associated with the instance of a Job. The service account represents the identity of the running instance, and determines what permissions the instance has. If not provided, the instance will use the project&#x27;s default service account. +optional
        &quot;terminationGracePeriodSeconds&quot;: &quot;A String&quot;, # Optional. Optional duration in seconds the instance needs to terminate gracefully. Value must be non-negative integer. The value zero indicates delete immediately. The grace period is the duration in seconds after the processes running in the instance are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. +optional
        &quot;volumes&quot;: [ # Optional. List of volumes that can be mounted by containers belonging to the instance. More info: https://kubernetes.io/docs/concepts/storage/volumes +optional
          { # 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.
              &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 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;name&quot;: &quot;A String&quot;, # Volume&#x27;s name. In Cloud Run Fully Managed, the name &#x27;cloudsql&#x27; is reserved.
            &quot;secret&quot;: { # 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.
              &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 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, the volume will expose a file whose name is the secret_name. If 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 a key and a path. 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 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, # (Optional) Specify whether the Secret or its keys must be defined.
              &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;ttlSecondsAfterFinished&quot;: 42, # Optional. Not supported. ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is set to zero, the Job won&#x27;t be automatically deleted. +optional
  },
  &quot;status&quot;: { # JobStatus represents the current state of a Job. # Optional. Current status of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional
    &quot;active&quot;: 42, # Optional. The number of actively running instances. +optional
    &quot;completionTime&quot;: &quot;A String&quot;, # Optional. Represents time when the job 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. The latest available observations of a job&#x27;s current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
      { # JobCondition defines a readiness condition for a Revision.
        &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.
        &quot;severity&quot;: &quot;A String&quot;, # Optional. How to interpret failures of this condition, one of Error, Warning, Info
        &quot;status&quot;: &quot;A String&quot;, # Required. Status of the condition, one of True, False, Unknown.
        &quot;type&quot;: &quot;A String&quot;, # Required. Type is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types include: * &quot;Completed&quot;: True when the Job has successfully completed. * &quot;Started&quot;: True when the Job has successfully started running. * &quot;ResourcesAvailable&quot;: True when underlying resources have been provisioned.
      },
    ],
    &quot;failed&quot;: 42, # Optional. The number of instances which reached phase Failed. +optional
    &quot;imageDigest&quot;: &quot;A String&quot;, # Optional. ImageDigest holds the resolved digest for the image specified within .Spec.Template.Spec.Container.Image. The digest is resolved during the creation of the Job. This field holds the digest value regardless of whether a tag or digest was originally specified in the Container object.
    &quot;instances&quot;: [ # Optional. Status of completed, failed, and running instances. +optional
      { # Instance represents the status of an instance of a Job.
        &quot;completionTime&quot;: &quot;A String&quot;, # Optional. Represents time when the instance 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;failed&quot;: 42, # Optional. The number of times this instance exited with code &gt; 0; +optional
        &quot;index&quot;: 42, # Required. Index of the instance, unique per Job, and beginning at 0.
        &quot;lastAttemptResult&quot;: { # Result of an instance attempt. # Optional. Result of the last attempt of this instance. +optional
          &quot;exitCode&quot;: 42, # Optional. The exit code of this attempt. This may be unset if the container was unable to exit cleanly with a code due to some other failure. See status field for possible failure details.
          &quot;status&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Optional. The status of this attempt. If the status code is OK, then the attempt succeeded.
            &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
            &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
            &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
          },
        },
        &quot;lastExitCode&quot;: 42, # Optional. Last exit code seen for this instance. +optional
        &quot;restarted&quot;: 42, # Optional. The number of times this instance was restarted. Instances are restarted according the restartPolicy configured in the Job template. +optional
        &quot;startTime&quot;: &quot;A String&quot;, # Optional. Represents time when the instance was created by the job controller. 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;succeeded&quot;: 42, # Optional. The number of times this instance exited with code == 0. +optional
      },
    ],
    &quot;observedGeneration&quot;: 42, # Optional. The &#x27;generation&#x27; of the job that was last processed by the controller.
    &quot;startTime&quot;: &quot;A String&quot;, # Optional. Represents time when the job was acknowledged by the job controller. 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;succeeded&quot;: 42, # Optional. The number of instances which reached phase Succeeded. +optional
  },
}</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. For Cloud Run (fully managed), replace {namespace_id} with the project ID or number. (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:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
}</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. For Cloud Run (fully managed), replace {namespace_id} 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. A job 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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources +optional
  &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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds +optional
  &quot;metadata&quot;: { # k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Optional. Standard object&#x27;s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata +optional
    &quot;annotations&quot;: { # (Optional) Annotations is an 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. More info: http://kubernetes.io/docs/user-guide/annotations
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;clusterName&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
    &quot;creationTimestamp&quot;: &quot;A String&quot;, # (Optional) CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
    &quot;deletionGracePeriodSeconds&quot;: 42, # (Optional) Not supported by Cloud Run Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.
    &quot;deletionTimestamp&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
    &quot;finalizers&quot;: [ # (Optional) Not supported by Cloud Run Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. +patchStrategy=merge
      &quot;A String&quot;,
    ],
    &quot;generateName&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency string generateName = 2;
    &quot;generation&quot;: 42, # (Optional) A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.
    &quot;labels&quot;: { # (Optional) 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. More info: http://kubernetes.io/docs/user-guide/labels
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;name&quot;: &quot;A String&quot;, # Name must be unique within a namespace, within a Cloud Run region. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names +optional
    &quot;namespace&quot;: &quot;A String&quot;, # Namespace defines the space within each name must be unique, within a Cloud Run region. In Cloud Run the namespace must be equal to either the project ID or project number.
    &quot;ownerReferences&quot;: [ # (Optional) Not supported by Cloud Run List of objects that own this object. If ALL objects in the list have been deleted, this object will be garbage collected.
      { # OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.
        &quot;apiVersion&quot;: &quot;A String&quot;, # API version of the referent.
        &quot;blockOwnerDeletion&quot;: True or False, # If true, AND if the owner has the &quot;foregroundDeletion&quot; finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs &quot;delete&quot; permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. +optional
        &quot;controller&quot;: True or False, # If true, this reference points to the managing controller. +optional
        &quot;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
        &quot;name&quot;: &quot;A String&quot;, # Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names
        &quot;uid&quot;: &quot;A String&quot;, # UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
      },
    ],
    &quot;resourceVersion&quot;: &quot;A String&quot;, # Optional. An opaque 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. They may only be valid for a particular resource or set of resources. Populated by the system. Read-only. Value must be treated as opaque by clients or omitted. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
    &quot;selfLink&quot;: &quot;A String&quot;, # (Optional) SelfLink is a URL representing this object. Populated by the system. Read-only. string selfLink = 4;
    &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
  },
  &quot;spec&quot;: { # JobSpec describes how the job execution will look like. # Optional. Specification of the desired behavior of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional
    &quot;activeDeadlineSeconds&quot;: &quot;A String&quot;, # Optional. Not supported. Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it. If set to zero, the system will never attempt to terminate the job based on time. Otherwise, the value must be positive integer. +optional
    &quot;backoffLimit&quot;: 42, # Optional. Specifies the number of retries per instance, before marking this job failed. If set to zero, instances will never retry on failure. +optional
    &quot;completions&quot;: 42, # Optional. Specifies the desired number of successfully finished instances the job should be run with. Setting to 1 means that parallelism is limited to 1 and the success of that instance signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
    &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of instances the job should run at any given time. Must be &lt;= completions. The actual number of instances running in steady state will be less than this number when ((.spec.completions - .status.successful) &lt; .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
    &quot;template&quot;: { # InstanceTemplateSpec describes the data an instance should have when created from a template. # Optional. Describes the instance that will be created when executing a job.
      &quot;spec&quot;: { # InstanceSpec is a description of an instance. # Optional. Specification of the desired behavior of the instance. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status +optional
        &quot;activeDeadlineSeconds&quot;: &quot;A String&quot;, # Optional. Optional duration in seconds the instance may be active relative to StartTime before the system will actively try to mark it failed and kill associated containers. If set to zero, the system will never attempt to kill an instance based on time. Otherwise, value must be a positive integer. +optional
        &quot;containers&quot;: [ # Optional. List of containers belonging to the instance. We disallow a number of fields on this Container. Only a single container may be provided.
          { # 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;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
              &quot;A String&quot;,
            ],
            &quot;command&quot;: [
              &quot;A String&quot;,
            ],
            &quot;env&quot;: [ # (Optional) List of environment variables to set in the container.
              { # EnvVar represents an environment variable present in a Container.
                &quot;name&quot;: &quot;A String&quot;, # Name of the environment variable. Must be a C_IDENTIFIER.
                &quot;value&quot;: &quot;A String&quot;, # (Optional) Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any route environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to &quot;&quot;.
                &quot;valueFrom&quot;: { # EnvVarSource represents a source for the value of an EnvVar. # (Optional) Source for the environment variable&#x27;s value. Only supports secret_key_ref. Source for the environment variable&#x27;s value. Cannot be used if value is not empty.
                  &quot;configMapKeyRef&quot;: { # Not supported by Cloud Run Selects a key from a ConfigMap. # (Optional) Not supported by Cloud Run Selects a key of a ConfigMap.
                    &quot;key&quot;: &quot;A String&quot;, # The key to select.
                    &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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    },
                    &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                    &quot;optional&quot;: True or False, # (Optional) Specify whether the ConfigMap or its key must be defined
                  },
                  &quot;secretKeyRef&quot;: { # SecretKeySelector selects a key of a Secret. # (Optional) Selects a key (version) of a secret in Secret Manager.
                    &quot;key&quot;: &quot;A String&quot;, # A Cloud Secret Manager secret version. Must be &#x27;latest&#x27; for the latest version or an integer for a specific version. 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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    },
                    &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, # (Optional) Specify whether the Secret or its key must be defined
                  },
                },
              },
            ],
            &quot;envFrom&quot;: [ # (Optional) List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.
              { # 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. # (Optional) 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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                  &quot;optional&quot;: True or False, # (Optional) Specify whether the ConfigMap must be defined
                },
                &quot;prefix&quot;: &quot;A String&quot;, # (Optional) 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. # (Optional) 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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                  },
                  &quot;name&quot;: &quot;A String&quot;, # The Secret to select from.
                  &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret must be defined
                },
              },
            ],
            &quot;image&quot;: &quot;A String&quot;, # Only supports containers from Google Container Registry or Artifact Registry URL of the Container image. More info: https://kubernetes.io/docs/concepts/containers/images
            &quot;imagePullPolicy&quot;: &quot;A String&quot;, # (Optional) Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
            &quot;livenessProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Periodic probe of container liveness. Container will be restarted if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                &quot;command&quot;: [ # (Optional) 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, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                  { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
              },
              &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
              &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
              &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
              },
              &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
            },
            &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the container specified as a DNS_LABEL. Currently unused in Cloud Run. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names
            &quot;ports&quot;: [ # (Optional) 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, # (Optional) Port number the container listens on. This must be a valid port number, 0 &lt; x &lt; 65536.
                &quot;name&quot;: &quot;A String&quot;, # (Optional) 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;, # (Optional) Protocol for port. Must be &quot;TCP&quot;. Defaults to &quot;TCP&quot;.
              },
            ],
            &quot;readinessProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                &quot;command&quot;: [ # (Optional) 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, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                  { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
              },
              &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
              &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
              &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
              },
              &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
            },
            &quot;resources&quot;: { # ResourceRequirements describes the compute resource requirements. # (Optional) Compute Resources required by this container. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
              &quot;limits&quot;: { # (Optional) Only memory and CPU are supported. Note: The only supported values for CPU are &#x27;1&#x27;, &#x27;2&#x27;, and &#x27;4&#x27;. Setting 4 CPU requires at least 2Gi of memory. Limits describes the maximum amount of compute resources allowed. The values of the map is string form of the &#x27;quantity&#x27; k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;requests&quot;: { # (Optional) Only memory and CPU are supported. Note: The only supported values for CPU are &#x27;1&#x27;, &#x27;2&#x27;, and &#x27;4&#x27;. Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. The values of the map is string form of the &#x27;quantity&#x27; k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
                &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. # (Optional) Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
              &quot;runAsUser&quot;: 42, # (Optional) 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;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not be added to service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                &quot;command&quot;: [ # (Optional) 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, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
              &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                  { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                    &quot;name&quot;: &quot;A String&quot;, # The header field name
                    &quot;value&quot;: &quot;A String&quot;, # The header field value
                  },
                ],
                &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
              },
              &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
              &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
              &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
              &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
              },
              &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
            },
            &quot;terminationMessagePath&quot;: &quot;A String&quot;, # (Optional) 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;, # (Optional) 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;: [ # (Optional) 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;, # Path within the container at which the volume should be mounted. Must not contain &#x27;:&#x27;.
                &quot;name&quot;: &quot;A String&quot;, # The name of the volume. There must be a corresponding Volume with the same name.
                &quot;readOnly&quot;: True or False, # (Optional) Only true is accepted. Defaults to true.
                &quot;subPath&quot;: &quot;A String&quot;, # (Optional) 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;, # (Optional) 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;restartPolicy&quot;: &quot;A String&quot;, # Optional. Restart policy for all containers within the instance. Allowed values are: - OnFailure: Instances will always be restarted on failure if the backoffLimit has not been reached. - Never: Instances are never restarted and all failures are permanent. Cannot be used if backoffLimit is set. +optional
        &quot;serviceAccountName&quot;: &quot;A String&quot;, # Optional. Email address of the IAM service account associated with the instance of a Job. The service account represents the identity of the running instance, and determines what permissions the instance has. If not provided, the instance will use the project&#x27;s default service account. +optional
        &quot;terminationGracePeriodSeconds&quot;: &quot;A String&quot;, # Optional. Optional duration in seconds the instance needs to terminate gracefully. Value must be non-negative integer. The value zero indicates delete immediately. The grace period is the duration in seconds after the processes running in the instance are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. +optional
        &quot;volumes&quot;: [ # Optional. List of volumes that can be mounted by containers belonging to the instance. More info: https://kubernetes.io/docs/concepts/storage/volumes +optional
          { # 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.
              &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 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;name&quot;: &quot;A String&quot;, # Volume&#x27;s name. In Cloud Run Fully Managed, the name &#x27;cloudsql&#x27; is reserved.
            &quot;secret&quot;: { # 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.
              &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 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, the volume will expose a file whose name is the secret_name. If 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 a key and a path. 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 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, # (Optional) Specify whether the Secret or its keys must be defined.
              &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;ttlSecondsAfterFinished&quot;: 42, # Optional. Not supported. ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is set to zero, the Job won&#x27;t be automatically deleted. +optional
  },
  &quot;status&quot;: { # JobStatus represents the current state of a Job. # Optional. Current status of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional
    &quot;active&quot;: 42, # Optional. The number of actively running instances. +optional
    &quot;completionTime&quot;: &quot;A String&quot;, # Optional. Represents time when the job 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. The latest available observations of a job&#x27;s current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
      { # JobCondition defines a readiness condition for a Revision.
        &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.
        &quot;severity&quot;: &quot;A String&quot;, # Optional. How to interpret failures of this condition, one of Error, Warning, Info
        &quot;status&quot;: &quot;A String&quot;, # Required. Status of the condition, one of True, False, Unknown.
        &quot;type&quot;: &quot;A String&quot;, # Required. Type is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types include: * &quot;Completed&quot;: True when the Job has successfully completed. * &quot;Started&quot;: True when the Job has successfully started running. * &quot;ResourcesAvailable&quot;: True when underlying resources have been provisioned.
      },
    ],
    &quot;failed&quot;: 42, # Optional. The number of instances which reached phase Failed. +optional
    &quot;imageDigest&quot;: &quot;A String&quot;, # Optional. ImageDigest holds the resolved digest for the image specified within .Spec.Template.Spec.Container.Image. The digest is resolved during the creation of the Job. This field holds the digest value regardless of whether a tag or digest was originally specified in the Container object.
    &quot;instances&quot;: [ # Optional. Status of completed, failed, and running instances. +optional
      { # Instance represents the status of an instance of a Job.
        &quot;completionTime&quot;: &quot;A String&quot;, # Optional. Represents time when the instance 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;failed&quot;: 42, # Optional. The number of times this instance exited with code &gt; 0; +optional
        &quot;index&quot;: 42, # Required. Index of the instance, unique per Job, and beginning at 0.
        &quot;lastAttemptResult&quot;: { # Result of an instance attempt. # Optional. Result of the last attempt of this instance. +optional
          &quot;exitCode&quot;: 42, # Optional. The exit code of this attempt. This may be unset if the container was unable to exit cleanly with a code due to some other failure. See status field for possible failure details.
          &quot;status&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Optional. The status of this attempt. If the status code is OK, then the attempt succeeded.
            &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
            &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
              {
                &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
              },
            ],
            &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
          },
        },
        &quot;lastExitCode&quot;: 42, # Optional. Last exit code seen for this instance. +optional
        &quot;restarted&quot;: 42, # Optional. The number of times this instance was restarted. Instances are restarted according the restartPolicy configured in the Job template. +optional
        &quot;startTime&quot;: &quot;A String&quot;, # Optional. Represents time when the instance was created by the job controller. 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;succeeded&quot;: 42, # Optional. The number of times this instance exited with code == 0. +optional
      },
    ],
    &quot;observedGeneration&quot;: 42, # Optional. The &#x27;generation&#x27; of the job that was last processed by the controller.
    &quot;startTime&quot;: &quot;A String&quot;, # Optional. Represents time when the job was acknowledged by the job controller. 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;succeeded&quot;: 42, # Optional. The number of instances which reached phase Succeeded. +optional
  },
}</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.

Args:
  parent: string, Required. The namespace from which the jobs should be listed. Replace {namespace_id} with the project ID or number. (required)
  continue: string, Optional. Optional encoded string to continue paging.
  fieldSelector: string, Optional. Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. &#x27;metadata.name%3Dlorem&#x27;. Not currently used by Cloud Run.
  includeUninitialized: boolean, Optional. Not currently used 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. The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.
  watch: boolean, Optional. Flag that indicates that the client expects to watch this resource as well. Not currently used 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/v1alpha1&quot;.
  &quot;items&quot;: [ # List of Jobs.
    { # Job represents the configuration of a single job. A job 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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources +optional
      &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. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds +optional
      &quot;metadata&quot;: { # k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. # Optional. Standard object&#x27;s metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata +optional
        &quot;annotations&quot;: { # (Optional) Annotations is an 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. More info: http://kubernetes.io/docs/user-guide/annotations
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;clusterName&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.
        &quot;creationTimestamp&quot;: &quot;A String&quot;, # (Optional) CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
        &quot;deletionGracePeriodSeconds&quot;: 42, # (Optional) Not supported by Cloud Run Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.
        &quot;deletionTimestamp&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
        &quot;finalizers&quot;: [ # (Optional) Not supported by Cloud Run Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. +patchStrategy=merge
          &quot;A String&quot;,
        ],
        &quot;generateName&quot;: &quot;A String&quot;, # (Optional) Not supported by Cloud Run GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency string generateName = 2;
        &quot;generation&quot;: 42, # (Optional) A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.
        &quot;labels&quot;: { # (Optional) 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. More info: http://kubernetes.io/docs/user-guide/labels
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;name&quot;: &quot;A String&quot;, # Name must be unique within a namespace, within a Cloud Run region. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names +optional
        &quot;namespace&quot;: &quot;A String&quot;, # Namespace defines the space within each name must be unique, within a Cloud Run region. In Cloud Run the namespace must be equal to either the project ID or project number.
        &quot;ownerReferences&quot;: [ # (Optional) Not supported by Cloud Run List of objects that own this object. If ALL objects in the list have been deleted, this object will be garbage collected.
          { # OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.
            &quot;apiVersion&quot;: &quot;A String&quot;, # API version of the referent.
            &quot;blockOwnerDeletion&quot;: True or False, # If true, AND if the owner has the &quot;foregroundDeletion&quot; finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs &quot;delete&quot; permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. +optional
            &quot;controller&quot;: True or False, # If true, this reference points to the managing controller. +optional
            &quot;kind&quot;: &quot;A String&quot;, # Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            &quot;name&quot;: &quot;A String&quot;, # Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names
            &quot;uid&quot;: &quot;A String&quot;, # UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
          },
        ],
        &quot;resourceVersion&quot;: &quot;A String&quot;, # Optional. An opaque 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. They may only be valid for a particular resource or set of resources. Populated by the system. Read-only. Value must be treated as opaque by clients or omitted. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
        &quot;selfLink&quot;: &quot;A String&quot;, # (Optional) SelfLink is a URL representing this object. Populated by the system. Read-only. string selfLink = 4;
        &quot;uid&quot;: &quot;A String&quot;, # (Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids
      },
      &quot;spec&quot;: { # JobSpec describes how the job execution will look like. # Optional. Specification of the desired behavior of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional
        &quot;activeDeadlineSeconds&quot;: &quot;A String&quot;, # Optional. Not supported. Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it. If set to zero, the system will never attempt to terminate the job based on time. Otherwise, the value must be positive integer. +optional
        &quot;backoffLimit&quot;: 42, # Optional. Specifies the number of retries per instance, before marking this job failed. If set to zero, instances will never retry on failure. +optional
        &quot;completions&quot;: 42, # Optional. Specifies the desired number of successfully finished instances the job should be run with. Setting to 1 means that parallelism is limited to 1 and the success of that instance signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
        &quot;parallelism&quot;: 42, # Optional. Specifies the maximum desired number of instances the job should run at any given time. Must be &lt;= completions. The actual number of instances running in steady state will be less than this number when ((.spec.completions - .status.successful) &lt; .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
        &quot;template&quot;: { # InstanceTemplateSpec describes the data an instance should have when created from a template. # Optional. Describes the instance that will be created when executing a job.
          &quot;spec&quot;: { # InstanceSpec is a description of an instance. # Optional. Specification of the desired behavior of the instance. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status +optional
            &quot;activeDeadlineSeconds&quot;: &quot;A String&quot;, # Optional. Optional duration in seconds the instance may be active relative to StartTime before the system will actively try to mark it failed and kill associated containers. If set to zero, the system will never attempt to kill an instance based on time. Otherwise, value must be a positive integer. +optional
            &quot;containers&quot;: [ # Optional. List of containers belonging to the instance. We disallow a number of fields on this Container. Only a single container may be provided.
              { # 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;: [ # (Optional) Arguments to the entrypoint. The docker image&#x27;s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container&#x27;s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
                  &quot;A String&quot;,
                ],
                &quot;command&quot;: [
                  &quot;A String&quot;,
                ],
                &quot;env&quot;: [ # (Optional) List of environment variables to set in the container.
                  { # EnvVar represents an environment variable present in a Container.
                    &quot;name&quot;: &quot;A String&quot;, # Name of the environment variable. Must be a C_IDENTIFIER.
                    &quot;value&quot;: &quot;A String&quot;, # (Optional) Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any route environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to &quot;&quot;.
                    &quot;valueFrom&quot;: { # EnvVarSource represents a source for the value of an EnvVar. # (Optional) Source for the environment variable&#x27;s value. Only supports secret_key_ref. Source for the environment variable&#x27;s value. Cannot be used if value is not empty.
                      &quot;configMapKeyRef&quot;: { # Not supported by Cloud Run Selects a key from a ConfigMap. # (Optional) Not supported by Cloud Run Selects a key of a ConfigMap.
                        &quot;key&quot;: &quot;A String&quot;, # The key to select.
                        &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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        },
                        &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                        &quot;optional&quot;: True or False, # (Optional) Specify whether the ConfigMap or its key must be defined
                      },
                      &quot;secretKeyRef&quot;: { # SecretKeySelector selects a key of a Secret. # (Optional) Selects a key (version) of a secret in Secret Manager.
                        &quot;key&quot;: &quot;A String&quot;, # A Cloud Secret Manager secret version. Must be &#x27;latest&#x27; for the latest version or an integer for a specific version. 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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        },
                        &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, # (Optional) Specify whether the Secret or its key must be defined
                      },
                    },
                  },
                ],
                &quot;envFrom&quot;: [ # (Optional) List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.
                  { # 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. # (Optional) 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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      },
                      &quot;name&quot;: &quot;A String&quot;, # The ConfigMap to select from.
                      &quot;optional&quot;: True or False, # (Optional) Specify whether the ConfigMap must be defined
                    },
                    &quot;prefix&quot;: &quot;A String&quot;, # (Optional) 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. # (Optional) 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;, # (Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                      },
                      &quot;name&quot;: &quot;A String&quot;, # The Secret to select from.
                      &quot;optional&quot;: True or False, # (Optional) Specify whether the Secret must be defined
                    },
                  },
                ],
                &quot;image&quot;: &quot;A String&quot;, # Only supports containers from Google Container Registry or Artifact Registry URL of the Container image. More info: https://kubernetes.io/docs/concepts/containers/images
                &quot;imagePullPolicy&quot;: &quot;A String&quot;, # (Optional) Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images
                &quot;livenessProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Periodic probe of container liveness. Container will be restarted if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                  &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                    &quot;command&quot;: [ # (Optional) 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, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                  &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                    &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                    &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                      { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                        &quot;name&quot;: &quot;A String&quot;, # The header field name
                        &quot;value&quot;: &quot;A String&quot;, # The header field value
                      },
                    ],
                    &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                    &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
                  },
                  &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                  &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
                  &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
                  &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                    &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                    &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
                  },
                  &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                },
                &quot;name&quot;: &quot;A String&quot;, # (Optional) Name of the container specified as a DNS_LABEL. Currently unused in Cloud Run. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names
                &quot;ports&quot;: [ # (Optional) 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, # (Optional) Port number the container listens on. This must be a valid port number, 0 &lt; x &lt; 65536.
                    &quot;name&quot;: &quot;A String&quot;, # (Optional) 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;, # (Optional) Protocol for port. Must be &quot;TCP&quot;. Defaults to &quot;TCP&quot;.
                  },
                ],
                &quot;readinessProbe&quot;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                  &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                    &quot;command&quot;: [ # (Optional) 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, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                  &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                    &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                    &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                      { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                        &quot;name&quot;: &quot;A String&quot;, # The header field name
                        &quot;value&quot;: &quot;A String&quot;, # The header field value
                      },
                    ],
                    &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                    &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
                  },
                  &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                  &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
                  &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
                  &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                    &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                    &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
                  },
                  &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                },
                &quot;resources&quot;: { # ResourceRequirements describes the compute resource requirements. # (Optional) Compute Resources required by this container. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
                  &quot;limits&quot;: { # (Optional) Only memory and CPU are supported. Note: The only supported values for CPU are &#x27;1&#x27;, &#x27;2&#x27;, and &#x27;4&#x27;. Setting 4 CPU requires at least 2Gi of memory. Limits describes the maximum amount of compute resources allowed. The values of the map is string form of the &#x27;quantity&#x27; k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
                    &quot;a_key&quot;: &quot;A String&quot;,
                  },
                  &quot;requests&quot;: { # (Optional) Only memory and CPU are supported. Note: The only supported values for CPU are &#x27;1&#x27;, &#x27;2&#x27;, and &#x27;4&#x27;. Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. The values of the map is string form of the &#x27;quantity&#x27; k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go
                    &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. # (Optional) Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
                  &quot;runAsUser&quot;: 42, # (Optional) 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;: { # Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic. # (Optional) Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not be added to service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                  &quot;exec&quot;: { # Not supported by Cloud Run ExecAction describes a &quot;run in container&quot; action. # (Optional) One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message.
                    &quot;command&quot;: [ # (Optional) 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, # (Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
                  &quot;httpGet&quot;: { # Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests. # (Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message.
                    &quot;host&quot;: &quot;A String&quot;, # (Optional) Host name to connect to, defaults to the pod IP. You probably want to set &quot;Host&quot; in httpHeaders instead.
                    &quot;httpHeaders&quot;: [ # (Optional) Custom headers to set in the request. HTTP allows repeated headers.
                      { # Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes
                        &quot;name&quot;: &quot;A String&quot;, # The header field name
                        &quot;value&quot;: &quot;A String&quot;, # The header field value
                      },
                    ],
                    &quot;path&quot;: &quot;A String&quot;, # (Optional) Path to access on the HTTP server.
                    &quot;scheme&quot;: &quot;A String&quot;, # (Optional) Scheme to use for connecting to the host. Defaults to HTTP.
                  },
                  &quot;initialDelaySeconds&quot;: 42, # (Optional) Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                  &quot;periodSeconds&quot;: 42, # (Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
                  &quot;successThreshold&quot;: 42, # (Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.
                  &quot;tcpSocket&quot;: { # Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket # (Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message.
                    &quot;host&quot;: &quot;A String&quot;, # (Optional) Optional: Host name to connect to, defaults to the pod IP.
                    &quot;port&quot;: 42, # Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto&#x27;s inability to properly support the IntOrString golang type.
                  },
                  &quot;timeoutSeconds&quot;: 42, # (Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
                },
                &quot;terminationMessagePath&quot;: &quot;A String&quot;, # (Optional) 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;, # (Optional) 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;: [ # (Optional) 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;, # Path within the container at which the volume should be mounted. Must not contain &#x27;:&#x27;.
                    &quot;name&quot;: &quot;A String&quot;, # The name of the volume. There must be a corresponding Volume with the same name.
                    &quot;readOnly&quot;: True or False, # (Optional) Only true is accepted. Defaults to true.
                    &quot;subPath&quot;: &quot;A String&quot;, # (Optional) 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;, # (Optional) 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;restartPolicy&quot;: &quot;A String&quot;, # Optional. Restart policy for all containers within the instance. Allowed values are: - OnFailure: Instances will always be restarted on failure if the backoffLimit has not been reached. - Never: Instances are never restarted and all failures are permanent. Cannot be used if backoffLimit is set. +optional
            &quot;serviceAccountName&quot;: &quot;A String&quot;, # Optional. Email address of the IAM service account associated with the instance of a Job. The service account represents the identity of the running instance, and determines what permissions the instance has. If not provided, the instance will use the project&#x27;s default service account. +optional
            &quot;terminationGracePeriodSeconds&quot;: &quot;A String&quot;, # Optional. Optional duration in seconds the instance needs to terminate gracefully. Value must be non-negative integer. The value zero indicates delete immediately. The grace period is the duration in seconds after the processes running in the instance are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. +optional
            &quot;volumes&quot;: [ # Optional. List of volumes that can be mounted by containers belonging to the instance. More info: https://kubernetes.io/docs/concepts/storage/volumes +optional
              { # 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.
                  &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 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;name&quot;: &quot;A String&quot;, # Volume&#x27;s name. In Cloud Run Fully Managed, the name &#x27;cloudsql&#x27; is reserved.
                &quot;secret&quot;: { # 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.
                  &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 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, the volume will expose a file whose name is the secret_name. If 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 a key and a path. 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 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, # (Optional) Specify whether the Secret or its keys must be defined.
                  &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;ttlSecondsAfterFinished&quot;: 42, # Optional. Not supported. ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is set to zero, the Job won&#x27;t be automatically deleted. +optional
      },
      &quot;status&quot;: { # JobStatus represents the current state of a Job. # Optional. Current status of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional
        &quot;active&quot;: 42, # Optional. The number of actively running instances. +optional
        &quot;completionTime&quot;: &quot;A String&quot;, # Optional. Represents time when the job 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. The latest available observations of a job&#x27;s current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional
          { # JobCondition defines a readiness condition for a Revision.
            &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.
            &quot;severity&quot;: &quot;A String&quot;, # Optional. How to interpret failures of this condition, one of Error, Warning, Info
            &quot;status&quot;: &quot;A String&quot;, # Required. Status of the condition, one of True, False, Unknown.
            &quot;type&quot;: &quot;A String&quot;, # Required. Type is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types include: * &quot;Completed&quot;: True when the Job has successfully completed. * &quot;Started&quot;: True when the Job has successfully started running. * &quot;ResourcesAvailable&quot;: True when underlying resources have been provisioned.
          },
        ],
        &quot;failed&quot;: 42, # Optional. The number of instances which reached phase Failed. +optional
        &quot;imageDigest&quot;: &quot;A String&quot;, # Optional. ImageDigest holds the resolved digest for the image specified within .Spec.Template.Spec.Container.Image. The digest is resolved during the creation of the Job. This field holds the digest value regardless of whether a tag or digest was originally specified in the Container object.
        &quot;instances&quot;: [ # Optional. Status of completed, failed, and running instances. +optional
          { # Instance represents the status of an instance of a Job.
            &quot;completionTime&quot;: &quot;A String&quot;, # Optional. Represents time when the instance 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;failed&quot;: 42, # Optional. The number of times this instance exited with code &gt; 0; +optional
            &quot;index&quot;: 42, # Required. Index of the instance, unique per Job, and beginning at 0.
            &quot;lastAttemptResult&quot;: { # Result of an instance attempt. # Optional. Result of the last attempt of this instance. +optional
              &quot;exitCode&quot;: 42, # Optional. The exit code of this attempt. This may be unset if the container was unable to exit cleanly with a code due to some other failure. See status field for possible failure details.
              &quot;status&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # Optional. The status of this attempt. If the status code is OK, then the attempt succeeded.
                &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
                &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
                  {
                    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
                  },
                ],
                &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
              },
            },
            &quot;lastExitCode&quot;: 42, # Optional. Last exit code seen for this instance. +optional
            &quot;restarted&quot;: 42, # Optional. The number of times this instance was restarted. Instances are restarted according the restartPolicy configured in the Job template. +optional
            &quot;startTime&quot;: &quot;A String&quot;, # Optional. Represents time when the instance was created by the job controller. 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;succeeded&quot;: 42, # Optional. The number of times this instance exited with code == 0. +optional
          },
        ],
        &quot;observedGeneration&quot;: 42, # Optional. The &#x27;generation&#x27; of the job that was last processed by the controller.
        &quot;startTime&quot;: &quot;A String&quot;, # Optional. Represents time when the job was acknowledged by the job controller. 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;succeeded&quot;: 42, # Optional. The number of instances which reached phase Succeeded. +optional
      },
    },
  ],
  &quot;kind&quot;: &quot;A String&quot;, # The kind of this resource, in this case &quot;JobsList&quot;.
  &quot;metadata&quot;: { # ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}. # Metadata associated with this jobs list.
    &quot;continue&quot;: &quot;A String&quot;, # continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response.
    &quot;resourceVersion&quot;: &quot;A String&quot;, # String that identifies the server&#x27;s internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency +optional
    &quot;selfLink&quot;: &quot;A String&quot;, # SelfLink is a URL representing this object. Populated by the system. Read-only. +optional
  },
  &quot;nextPageToken&quot;: &quot;A String&quot;, # This field is equivalent to the metadata.continue field and is provided as a convenience for compatibility with https://google.aip.dev/158. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a list may not be possible if the server configuration has changed or more than a few minutes have passed. The metadata.resourceVersion field returned when using this field will be identical to the value in the first response.
  &quot;unreachable&quot;: [ # Locations that could not be reached.
    &quot;A String&quot;,
  ],
}</pre>
</div>

</body></html>