<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="lifesciences_v2beta.html">Cloud Life Sciences API</a> . <a href="lifesciences_v2beta.projects.html">projects</a> . <a href="lifesciences_v2beta.projects.locations.html">locations</a> . <a href="lifesciences_v2beta.projects.locations.pipelines.html">pipelines</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="#run">run(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Runs a pipeline. The returned Operation's metadata field will contain a google.cloud.lifesciences.v2beta.Metadata object describing the status of the pipeline execution. The response field will contain a google.cloud.lifesciences.v2beta.RunPipelineResponse object if the pipeline completes successfully. **Note:** Before you can use this method, the *Life Sciences Service Agent* must have access to your project. This is done automatically when the Cloud Life Sciences API is first enabled, but if you delete this permission you must disable and re-enable the API to grant the Life Sciences Service Agent the required permissions. Authorization requires the following [Google IAM](https://cloud.google.com/iam/) permission: * `lifesciences.workflows.run`</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="run">run(parent, body=None, x__xgafv=None)</code>
  <pre>Runs a pipeline. The returned Operation&#x27;s metadata field will contain a google.cloud.lifesciences.v2beta.Metadata object describing the status of the pipeline execution. The response field will contain a google.cloud.lifesciences.v2beta.RunPipelineResponse object if the pipeline completes successfully. **Note:** Before you can use this method, the *Life Sciences Service Agent* must have access to your project. This is done automatically when the Cloud Life Sciences API is first enabled, but if you delete this permission you must disable and re-enable the API to grant the Life Sciences Service Agent the required permissions. Authorization requires the following [Google IAM](https://cloud.google.com/iam/) permission: * `lifesciences.workflows.run`

Args:
  parent: string, The project and location that this request should be executed against. (required)
  body: object, The request body.
    The object takes the form of:

{ # The arguments to the `RunPipeline` method. The requesting user must have the `iam.serviceAccounts.actAs` permission for the Cloud Life Sciences service account or the request will fail.
  &quot;labels&quot;: { # User-defined labels to associate with the returned operation. These labels are not propagated to any Google Cloud Platform resources used by the operation, and can be modified at any time. To associate labels with resources created while executing the operation, see the appropriate resource message (for example, `VirtualMachine`).
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;pipeline&quot;: { # Specifies a series of actions to execute, expressed as Docker containers. # Required. The description of the pipeline to run.
    &quot;actions&quot;: [ # The list of actions to execute, in the order they are specified.
      { # Specifies a single action that runs a Docker container.
        &quot;alwaysRun&quot;: True or False, # By default, after an action fails, no further actions are run. This flag indicates that this action must be run even if the pipeline has already failed. This is useful for actions that copy output files off of the VM or for debugging. Note that no actions will be run if image prefetching fails.
        &quot;blockExternalNetwork&quot;: True or False, # Prevents the container from accessing the external network.
        &quot;commands&quot;: [ # If specified, overrides the `CMD` specified in the container. If the container also has an `ENTRYPOINT` the values are used as entrypoint arguments. Otherwise, they are used as a command and arguments to run inside the container.
          &quot;A String&quot;,
        ],
        &quot;containerName&quot;: &quot;A String&quot;, # An optional name for the container. The container hostname will be set to this name, making it useful for inter-container communication. The name must contain only upper and lowercase alphanumeric characters and hyphens and cannot start with a hyphen.
        &quot;credentials&quot;: { # Holds encrypted information that is only decrypted and stored in RAM by the worker VM when running the pipeline. # If the specified image is hosted on a private registry other than Google Container Registry, the credentials required to pull the image must be specified here as an encrypted secret. The secret must decrypt to a JSON-encoded dictionary containing both `username` and `password` keys.
          &quot;cipherText&quot;: &quot;A String&quot;, # The value of the cipherText response from the `encrypt` method. This field is intentionally unaudited.
          &quot;keyName&quot;: &quot;A String&quot;, # The name of the Cloud KMS key that will be used to decrypt the secret value. The VM service account must have the required permissions and authentication scopes to invoke the `decrypt` method on the specified key.
        },
        &quot;disableImagePrefetch&quot;: True or False, # All container images are typically downloaded before any actions are executed. This helps prevent typos in URIs or issues like lack of disk space from wasting large amounts of compute resources. If set, this flag prevents the worker from downloading the image until just before the action is executed.
        &quot;disableStandardErrorCapture&quot;: True or False, # A small portion of the container&#x27;s standard error stream is typically captured and returned inside the `ContainerStoppedEvent`. Setting this flag disables this functionality.
        &quot;enableFuse&quot;: True or False, # Enable access to the FUSE device for this action. Filesystems can then be mounted into disks shared with other actions. The other actions do not need the `enable_fuse` flag to access the mounted filesystem. This has the effect of causing the container to be executed with `CAP_SYS_ADMIN` and exposes `/dev/fuse` to the container, so use it only for containers you trust.
        &quot;encryptedEnvironment&quot;: { # Holds encrypted information that is only decrypted and stored in RAM by the worker VM when running the pipeline. # The encrypted environment to pass into the container. This environment is merged with values specified in the google.cloud.lifesciences.v2beta.Pipeline message, overwriting any duplicate values. The secret must decrypt to a JSON-encoded dictionary where key-value pairs serve as environment variable names and their values. The decoded environment variables can overwrite the values specified by the `environment` field.
          &quot;cipherText&quot;: &quot;A String&quot;, # The value of the cipherText response from the `encrypt` method. This field is intentionally unaudited.
          &quot;keyName&quot;: &quot;A String&quot;, # The name of the Cloud KMS key that will be used to decrypt the secret value. The VM service account must have the required permissions and authentication scopes to invoke the `decrypt` method on the specified key.
        },
        &quot;entrypoint&quot;: &quot;A String&quot;, # If specified, overrides the `ENTRYPOINT` specified in the container.
        &quot;environment&quot;: { # The environment to pass into the container. This environment is merged with values specified in the google.cloud.lifesciences.v2beta.Pipeline message, overwriting any duplicate values. In addition to the values passed here, a few other values are automatically injected into the environment. These cannot be hidden or overwritten. `GOOGLE_PIPELINE_FAILED` will be set to &quot;1&quot; if the pipeline failed because an action has exited with a non-zero status (and did not have the `IGNORE_EXIT_STATUS` flag set). This can be used to determine if additional debug or logging actions should execute. `GOOGLE_LAST_EXIT_STATUS` will be set to the exit status of the last non-background action that executed. This can be used by workflow engine authors to determine whether an individual action has succeeded or failed.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;ignoreExitStatus&quot;: True or False, # Normally, a non-zero exit status causes the pipeline to fail. This flag allows execution of other actions to continue instead.
        &quot;imageUri&quot;: &quot;A String&quot;, # Required. The URI to pull the container image from. Note that all images referenced by actions in the pipeline are pulled before the first action runs. If multiple actions reference the same image, it is only pulled once, ensuring that the same image is used for all actions in a single pipeline. The image URI can be either a complete host and image specification (e.g., quay.io/biocontainers/samtools), a library and image name (e.g., google/cloud-sdk) or a bare image name (&#x27;bash&#x27;) to pull from the default library. No schema is required in any of these cases. If the specified image is not public, the service account specified for the Virtual Machine must have access to pull the images from GCR, or appropriate credentials must be specified in the google.cloud.lifesciences.v2beta.Action.credentials field.
        &quot;labels&quot;: { # Labels to associate with the action. This field is provided to assist workflow engine authors in identifying actions (for example, to indicate what sort of action they perform, such as localization or debugging). They are returned in the operation metadata, but are otherwise ignored.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;mounts&quot;: [ # A list of mounts to make available to the action. In addition to the values specified here, every action has a special virtual disk mounted under `/google` that contains log files and other operational components. - /google/logs All logs written during the pipeline execution. - /google/logs/output The combined standard output and standard error of all actions run as part of the pipeline execution. - /google/logs/action/*/stdout The complete contents of each individual action&#x27;s standard output. - /google/logs/action/*/stderr The complete contents of each individual action&#x27;s standard error output.
          { # Carries information about a particular disk mount inside a container.
            &quot;disk&quot;: &quot;A String&quot;, # The name of the disk to mount, as specified in the resources section.
            &quot;path&quot;: &quot;A String&quot;, # The path to mount the disk inside the container.
            &quot;readOnly&quot;: True or False, # If true, the disk is mounted read-only inside the container.
          },
        ],
        &quot;pidNamespace&quot;: &quot;A String&quot;, # An optional identifier for a PID namespace to run the action inside. Multiple actions should use the same string to share a namespace. If unspecified, a separate isolated namespace is used.
        &quot;portMappings&quot;: { # A map of containers to host port mappings for this container. If the container already specifies exposed ports, use the `PUBLISH_EXPOSED_PORTS` flag instead. The host port number must be less than 65536. If it is zero, an unused random port is assigned. To determine the resulting port number, consult the `ContainerStartedEvent` in the operation metadata.
          &quot;a_key&quot;: 42,
        },
        &quot;publishExposedPorts&quot;: True or False, # Exposes all ports specified by `EXPOSE` statements in the container. To discover the host side port numbers, consult the `ACTION_STARTED` event in the operation metadata.
        &quot;runInBackground&quot;: True or False, # This flag allows an action to continue running in the background while executing subsequent actions. This is useful to provide services to other actions (or to provide debugging support tools like SSH servers).
        &quot;timeout&quot;: &quot;A String&quot;, # The maximum amount of time to give the action to complete. If the action fails to complete before the timeout, it will be terminated and the exit status will be non-zero. The pipeline will continue or terminate based on the rules defined by the `ALWAYS_RUN` and `IGNORE_EXIT_STATUS` flags.
      },
    ],
    &quot;encryptedEnvironment&quot;: { # Holds encrypted information that is only decrypted and stored in RAM by the worker VM when running the pipeline. # The encrypted environment to pass into every action. Each action can also specify its own encrypted environment. The secret must decrypt to a JSON-encoded dictionary where key-value pairs serve as environment variable names and their values. The decoded environment variables can overwrite the values specified by the `environment` field.
      &quot;cipherText&quot;: &quot;A String&quot;, # The value of the cipherText response from the `encrypt` method. This field is intentionally unaudited.
      &quot;keyName&quot;: &quot;A String&quot;, # The name of the Cloud KMS key that will be used to decrypt the secret value. The VM service account must have the required permissions and authentication scopes to invoke the `decrypt` method on the specified key.
    },
    &quot;environment&quot;: { # The environment to pass into every action. Each action can also specify additional environment variables but cannot delete an entry from this map (though they can overwrite it with a different value).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;resources&quot;: { # The system resources for the pipeline run. At least one zone or region must be specified or the pipeline run will fail. # The resources required for execution.
      &quot;regions&quot;: [ # The list of regions allowed for VM allocation. If set, the `zones` field must not be set.
        &quot;A String&quot;,
      ],
      &quot;virtualMachine&quot;: { # Carries information about a Compute Engine VM resource. # The virtual machine specification.
        &quot;accelerators&quot;: [ # The list of accelerators to attach to the VM.
          { # Carries information about an accelerator that can be attached to a VM.
            &quot;count&quot;: &quot;A String&quot;, # How many accelerators of this type to attach.
            &quot;type&quot;: &quot;A String&quot;, # The accelerator type string (for example, &quot;nvidia-tesla-k80&quot;). Only NVIDIA GPU accelerators are currently supported. If an NVIDIA GPU is attached, the required runtime libraries will be made available to all containers under `/usr/local/nvidia`. The driver version to install must be specified using the NVIDIA driver version parameter on the virtual machine specification. Note that attaching a GPU increases the worker VM startup time by a few minutes.
          },
        ],
        &quot;bootDiskSizeGb&quot;: 42, # The size of the boot disk, in GB. The boot disk must be large enough to accommodate all of the Docker images from each action in the pipeline at the same time. If not specified, a small but reasonable default value is used.
        &quot;bootImage&quot;: &quot;A String&quot;, # The host operating system image to use. Currently, only Container-Optimized OS images can be used. The default value is `projects/cos-cloud/global/images/family/cos-stable`, which selects the latest stable release of Container-Optimized OS. This option is provided to allow testing against the beta release of the operating system to ensure that the new version does not interact negatively with production pipelines. To test a pipeline against the beta release of Container-Optimized OS, use the value `projects/cos-cloud/global/images/family/cos-beta`.
        &quot;cpuPlatform&quot;: &quot;A String&quot;, # The CPU platform to request. An instance based on a newer platform can be allocated, but never one with fewer capabilities. The value of this parameter must be a valid Compute Engine CPU platform name (such as &quot;Intel Skylake&quot;). This parameter is only useful for carefully optimized work loads where the CPU platform has a significant impact. For more information about the effect of this parameter, see https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform.
        &quot;disks&quot;: [ # The list of disks to create and attach to the VM. Specify either the `volumes[]` field or the `disks[]` field, but not both.
          { # Carries information about a disk that can be attached to a VM. See https://cloud.google.com/compute/docs/disks/performance for more information about disk type, size, and performance considerations. Specify either `Volume` or `Disk`, but not both.
            &quot;name&quot;: &quot;A String&quot;, # A user-supplied name for the disk. Used when mounting the disk into actions. The name must contain only upper and lowercase alphanumeric characters and hyphens and cannot start with a hyphen.
            &quot;sizeGb&quot;: 42, # The size, in GB, of the disk to attach. If the size is not specified, a default is chosen to ensure reasonable I/O performance. If the disk type is specified as `local-ssd`, multiple local drives are automatically combined to provide the requested size. Note, however, that each physical SSD is 375GB in size, and no more than 8 drives can be attached to a single instance.
            &quot;sourceImage&quot;: &quot;A String&quot;, # An optional image to put on the disk before attaching it to the VM.
            &quot;type&quot;: &quot;A String&quot;, # The Compute Engine disk type. If unspecified, `pd-standard` is used.
          },
        ],
        &quot;dockerCacheImages&quot;: [ # The Compute Engine Disk Images to use as a Docker cache. The disks will be mounted into the Docker folder in a way that the images present in the cache will not need to be pulled. The digests of the cached images must match those of the tags used or the latest version will still be pulled. The root directory of the ext4 image must contain `image` and `overlay2` directories copied from the Docker directory of a VM where the desired Docker images have already been pulled. Any images pulled that are not cached will be stored on the first cache disk instead of the boot disk. Only a single image is supported.
          &quot;A String&quot;,
        ],
        &quot;enableStackdriverMonitoring&quot;: True or False, # Whether Stackdriver monitoring should be enabled on the VM.
        &quot;labels&quot;: { # Optional set of labels to apply to the VM and any attached disk resources. These labels must adhere to the [name and value restrictions](https://cloud.google.com/compute/docs/labeling-resources) on VM labels imposed by Compute Engine. Labels keys with the prefix &#x27;google-&#x27; are reserved for use by Google. Labels applied at creation time to the VM. Applied on a best-effort basis to attached disk resources shortly after VM creation.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;machineType&quot;: &quot;A String&quot;, # Required. The machine type of the virtual machine to create. Must be the short name of a standard machine type (such as &quot;n1-standard-1&quot;) or a custom machine type (such as &quot;custom-1-4096&quot;, where &quot;1&quot; indicates the number of vCPUs and &quot;4096&quot; indicates the memory in MB). See [Creating an instance with a custom machine type](https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type#create) for more specifications on creating a custom machine type.
        &quot;network&quot;: { # VM networking options. # The VM network configuration.
          &quot;network&quot;: &quot;A String&quot;, # The network name to attach the VM&#x27;s network interface to. The value will be prefixed with `global/networks/` unless it contains a `/`, in which case it is assumed to be a fully specified network resource URL. If unspecified, the global default network is used.
          &quot;subnetwork&quot;: &quot;A String&quot;, # If the specified network is configured for custom subnet creation, the name of the subnetwork to attach the instance to must be specified here. The value is prefixed with `regions/*/subnetworks/` unless it contains a `/`, in which case it is assumed to be a fully specified subnetwork resource URL. If the `*` character appears in the value, it is replaced with the region that the virtual machine has been allocated in.
          &quot;usePrivateAddress&quot;: True or False, # If set to true, do not attach a public IP address to the VM. Note that without a public IP address, additional configuration is required to allow the VM to access Google services. See https://cloud.google.com/vpc/docs/configure-private-google-access for more information.
        },
        &quot;nvidiaDriverVersion&quot;: &quot;A String&quot;, # The NVIDIA driver version to use when attaching an NVIDIA GPU accelerator. The version specified here must be compatible with the GPU libraries contained in the container being executed, and must be one of the drivers hosted in the `nvidia-drivers-us-public` bucket on Google Cloud Storage.
        &quot;preemptible&quot;: True or False, # If true, allocate a preemptible VM.
        &quot;reservation&quot;: &quot;A String&quot;, # If specified, the VM will only be allocated inside the matching reservation. It will fail if the VM parameters don&#x27;t match the reservation.
        &quot;serviceAccount&quot;: { # Carries information about a Google Cloud service account. # The service account to install on the VM. This account does not need any permissions other than those required by the pipeline.
          &quot;email&quot;: &quot;A String&quot;, # Email address of the service account. If not specified, the default Compute Engine service account for the project will be used.
          &quot;scopes&quot;: [ # List of scopes to be enabled for this service account on the VM, in addition to the cloud-platform API scope that will be added by default.
            &quot;A String&quot;,
          ],
        },
        &quot;volumes&quot;: [ # The list of disks and other storage to create or attach to the VM. Specify either the `volumes[]` field or the `disks[]` field, but not both.
          { # Carries information about storage that can be attached to a VM. Specify either `Volume` or `Disk`, but not both.
            &quot;existingDisk&quot;: { # Configuration for an existing disk to be attached to the VM. # Configuration for a existing disk.
              &quot;disk&quot;: &quot;A String&quot;, # If `disk` contains slashes, the Cloud Life Sciences API assumes that it is a complete URL for the disk. If `disk` does not contain slashes, the Cloud Life Sciences API assumes that the disk is a zonal disk and a URL will be generated of the form `zones//disks/`, where `` is the zone in which the instance is allocated. The disk must be ext4 formatted. If all `Mount` references to this disk have the `read_only` flag set to true, the disk will be attached in `read-only` mode and can be shared with other instances. Otherwise, the disk will be available for writing but cannot be shared.
            },
            &quot;nfsMount&quot;: { # Configuration for an `NFSMount` to be attached to the VM. # Configuration for an NFS mount.
              &quot;target&quot;: &quot;A String&quot;, # A target NFS mount. The target must be specified as `address:/mount&quot;.
            },
            &quot;persistentDisk&quot;: { # Configuration for a persistent disk to be attached to the VM. See https://cloud.google.com/compute/docs/disks/performance for more information about disk type, size, and performance considerations. # Configuration for a persistent disk.
              &quot;sizeGb&quot;: 42, # The size, in GB, of the disk to attach. If the size is not specified, a default is chosen to ensure reasonable I/O performance. If the disk type is specified as `local-ssd`, multiple local drives are automatically combined to provide the requested size. Note, however, that each physical SSD is 375GB in size, and no more than 8 drives can be attached to a single instance.
              &quot;sourceImage&quot;: &quot;A String&quot;, # An image to put on the disk before attaching it to the VM.
              &quot;type&quot;: &quot;A String&quot;, # The Compute Engine disk type. If unspecified, `pd-standard` is used.
            },
            &quot;volume&quot;: &quot;A String&quot;, # A user-supplied name for the volume. Used when mounting the volume into `Actions`. The name must contain only upper and lowercase alphanumeric characters and hyphens and cannot start with a hyphen.
          },
        ],
      },
      &quot;zones&quot;: [ # The list of zones allowed for VM allocation. If set, the `regions` field must not be set.
        &quot;A String&quot;,
      ],
    },
    &quot;timeout&quot;: &quot;A String&quot;, # The maximum amount of time to give the pipeline to complete. This includes the time spent waiting for a worker to be allocated. If the pipeline fails to complete before the timeout, it will be cancelled and the error code will be set to DEADLINE_EXCEEDED. If unspecified, it will default to 7 days.
  },
  &quot;pubSubTopic&quot;: &quot;A String&quot;, # The name of an existing Pub/Sub topic. The server will publish messages to this topic whenever the status of the operation changes. The Life Sciences Service Agent account must have publisher permissions to the specified topic or notifications will not be sent.
}

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

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;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;metadata&quot;: { # An Metadata object. This will always be returned with the Operation.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name for the operation. This may be passed to the other operation methods to retrieve information about the operation&#x27;s status.
  &quot;response&quot;: { # An Empty object.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

</body></html>