Skip to main content

Automate creation of Nextflow Tower resources

Project description

twkit logotwkit

twkit is a Python wrapper for the Nextflow Tower CLI. It can be leveraged to automate the creation of all of the entities in Nextflow Tower via a simple configuration file in YAML format.

The key features are:

  • Simple configuration: All of the command-line options available when using the Nextflow Tower CLI can be defined in simple YAML format.
  • Infrastructure as Code: Enable users to manage and provision their infrastructure specifications.
  • Automation: End-to-end creation of entities within Nextflow Tower, all the way from adding an Organization to launching pipeline(s) within that Organization.

Prerequisites

You will need to have an account on Nextflow Tower (see Plans and pricing).

1. Dependencies

twkit requires the following dependencies:

  1. Nextflow Tower CLI

  2. Python (>=3.8)

  3. PyYAML

Alternatively, you can install the dependencies via Conda by downloading and using the Conda environment file that has been supplied in this repository:

conda env create -f environment.yml
conda activate twkit

2. Installation

The scripts in this repository are packaged and available on PyPI. They can be installed via pip:

pip install twkit

You can force overwrite the installation to use the latest changes with the command below:

pip install --upgrade --force-reinstall twkit

3. Configuration

Create a Tower access token using the Nextflow Tower web interface via the Your Tokens page in your profile.

twkit reads this token from the environment variable TOWER_ACCESS_TOKEN. Please export it into your terminal as shown below:

export TOWER_ACCESS_TOKEN=<your access token>

Quick start

You must provide a YAML file that defines the options for each of the entities you would like to create in Nextflow Tower.

You will need to have an account on Nextflow Tower (see Plans and pricing). You will also need access to a Workspace and a pre-defined Compute Environment where you can launch a pipeline.

Launch via YAML

  1. Create a YAML file called hello-world-config.yml with the contents below, and customise the <YOUR_WORKSPACE> and <YOUR_COMPUTE_ENVIRONMENT> entries as required:

    launch:
      - name: 'hello-world'                               # Workflow name
        workspace: '<YOUR_WORKSPACE>'                     # Workspace name
        compute-env: '<YOUR_COMPUTE_ENVIRONMENT>'         # Compute environment
        revision: 'master'                                # Pipeline revision
        pipeline: 'https://github.com/nextflow-io/hello'  # Pipeline URL
    
  2. Launch the pipeline with twkit:

    twkit hello-world-config.yml
    
  3. Login to your Tower instance and check the Runs page in the appropriate Workspace for the pipeline you just launched!

Launch via a Python script

You can also launch the same pipeline via a Python script. This will essentially allow you to extend the functionality on offer within the Tower CLI by leveraging the flexibility and customisation options available in Python.

  1. Download the launch_hello_world.py Python script and customise the <YOUR_WORKSPACE> and <YOUR_COMPUTE_ENVIRONMENT> entries as required.

  2. Launch the pipeline with twkit:

    python launch_hello_world.py
    
  3. Login to your Tower instance and check the Runs page in the appropriate Workspace for the pipeline you just launched!

Real world example

Please see twkit-e2e.yml for an end-to-end example that highlights how you can use twkit to create everything sequentially in Nextflow Tower all the way from creating a new Organization to launching a pipeline.

Templates

We have provided template YAML files for each of the entities that can be created on Tower. These can be found in the templates/ directory and should form a good starting point for you to add your own customization:

Contributions and Support

If you would like to contribute to twkit, please see the contributing guidelines.

For further information or help, please don't hesitate to create an issue in this repository.

Credits

twkit was written by Esha Joshi, Adam Talbot and Harshil Patel from the Scientific Development Team at Seqera Labs.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

twkit-0.2.0.tar.gz (35.0 kB view hashes)

Uploaded Source

Built Distribution

twkit-0.2.0-py3-none-any.whl (22.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page