<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;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;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;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>