<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="genomics_v2alpha1.html">Genomics API</a> . <a href="genomics_v2alpha1.pipelines.html">pipelines</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#run">run(body, x__xgafv=None)</a></code></p>
<p class="firstline">Runs a pipeline.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="run">run(body, x__xgafv=None)</code>
  <pre>Runs a pipeline.

**Note:** Before you can use this method, the Genomics Service Agent
must have access to your project. This is done automatically when the
Cloud Genomics API is first enabled, but if you delete this permission,
or if you enabled the Cloud Genomics API before the v2alpha1 API
launch, you must disable and re-enable the API to grant the Genomics
Service Agent the required permissions.
Authorization requires the following [Google
IAM](https://cloud.google.com/iam/) permission:

* `genomics.operations.create`

[1]: /genomics/gsa

Args:
  body: object, The request body. (required)
    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 Genomics service
      # account or the request will fail.
    "pipeline": { # Specifies a series of actions to execute, expressed as Docker containers. # The description of the pipeline to run.
      "environment": { # 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).
        "a_key": "A String",
      },
      "actions": [ # The list of actions to execute, in the order they are specified.
        { # Specifies a single action that runs a Docker container.
          "environment": { # The environment to pass into the container. This environment is merged
              # with any values specified in the `Pipeline` message. These values
              # overwrite any in the `Pipeline` message.
              #
              # 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 "1" 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.
            "a_key": "A String",
          },
          "commands": [ # 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.
            "A String",
          ],
          "name": "A String", # 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 hypens
              # and cannot start with a hyphen.
          "labels": { # 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.
            "a_key": "A String",
          },
          "pidNamespace": "A String", # 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.
          "imageUri": "A String", # 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.
          "portMappings": { # 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.
            "a_key": 42,
          },
          "flags": [ # The set of flags to apply to this action.
            "A String",
          ],
          "timeout": "A String", # 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.
          "mounts": [ # 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.
              #
              # <ul>
              #   <li><code>/google/logs</code> All logs written during the pipeline
              #   execution.</li>
              #   <li><code>/google/logs/output</code> The combined standard output and
              #   standard error of all actions run as part of the pipeline
              #   execution.</li>
              #   <li><code>/google/logs/action/*/stdout</code> The complete contents of
              #   each individual action's standard output.</li>
              #   <li><code>/google/logs/action/*/stderr</code> The complete contents of
              #   each individual action's standard error output.</li>
              # </ul>
            { # Carries information about a particular disk mount inside a container.
              "path": "A String", # The path to mount the disk inside the container.
              "readOnly": True or False, # If true, the disk is mounted read-only inside the container.
              "disk": "A String", # The name of the disk to mount, as specified in the resources section.
            },
          ],
          "credentials": { # Holds encrypted information that is only decrypted and stored in RAM # 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.
              # by the worker VM when running the pipeline.
            "cipherText": "A String", # The value of the cipherText response from the `encrypt` method. This field
                # is intentionally unaudited.
            "keyName": "A String", # 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.
          },
          "entrypoint": "A String", # If specified, overrides the `ENTRYPOINT` specified in the container.
        },
      ],
      "resources": { # The system resources for the pipeline run. # The resources required for execution.
          #
          # At least one zone or region must be specified or the pipeline run will fail.
        "regions": [ # The list of regions allowed for VM allocation. If set, the `zones` field
            # must not be set.
          "A String",
        ],
        "projectId": "A String", # The project ID to allocate resources in.
        "zones": [ # The list of zones allowed for VM allocation. If set, the `regions` field
            # must not be set.
          "A String",
        ],
        "virtualMachine": { # Carries information about a Compute Engine VM resource. # The virtual machine specification.
          "cpuPlatform": "A String", # 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 "Intel
              # Skylake"). 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.
          "labels": { # Optional set of labels to apply to the VM and any attached disk resources.
              # These labels must adhere to the name and value restrictions on VM labels
              # imposed by Compute Engine.
              #
              # Labels applied at creation time to the VM. Applied on a best-effort basis
              # to attached disk resources shortly after VM creation.
            "a_key": "A String",
          },
          "machineType": "A String", # The machine type of the virtual machine to create. Must be the short name
              # of a standard machine type (such as "n1-standard-1") or a custom machine
              # type (such as "custom-1-4096", where "1" indicates the number of vCPUs and
              # "4096" 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.
          "network": { # VM networking options. # The VM network configuration.
            "subnetwork": "A String", # 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.
            "usePrivateAddress": 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.
            "name": "A String", # The network name to attach the VM'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.
          },
          "nvidiaDriverVersion": "A String", # 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.
          "disks": [ # The list of disks to create and attach to the VM.
            { # 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.
              "type": "A String", # The Compute Engine disk type. If unspecified, `pd-standard` is used.
              "sourceImage": "A String", # An optional image to put on the disk before attaching it to the VM.
              "sizeGb": 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.
              "name": "A String", # 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 hypens and cannot start with a hyphen.
            },
          ],
          "serviceAccount": { # 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.
            "scopes": [ # List of scopes to be enabled for this service account on the VM, in
                # addition to the Cloud Genomics API scope.
              "A String",
            ],
            "email": "A String", # Email address of the service account. If not specified, the default
                # Compute Engine service account for the project will be used.
          },
          "bootDiskSizeGb": 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.
          "bootImage": "A String", # 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`.
          "accelerators": [ # The list of accelerators to attach to the VM.
            { # Carries information about an accelerator that can be attached to a VM.
              "count": "A String", # How many accelerators of this type to attach.
              "type": "A String", # The accelerator type string (for example, "nvidia-tesla-k80").
                  #
                  # 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.
            },
          ],
          "enableStackdriverMonitoring": True or False, # Whether Stackdriver monitoring should be enabled on the VM.
          "preemptible": True or False, # If true, allocate a preemptible VM.
        },
      },
      "timeout": "A String", # 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.
    },
    "labels": { # 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`).
      "a_key": "A String",
    },
  }

  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.
    "metadata": { # An OperationMetadata or Metadata object. This will always be returned with the Operation.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "done": 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.
    "response": { # An Empty object.
      "a_key": "", # Properties of the object. Contains field @type with type URL.
    },
    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. For example&#58; `operations/CJHU7Oi_ChDrveSpBRjfuL-qzoWAgEw`
    "error": { # The `Status` type defines a logical error model that is suitable for # The error result of the operation in case of failure or cancellation.
        # 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).
      "message": "A String", # 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.
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "details": [ # A list of messages that carry the error details.  There is a common set of
          # message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
  }</pre>
</div>

</body></html>