Skip to content

kbase/dts

Repository files navigation

Data Transfer Service (DTS)

build codecov

The Data Transfer Service is a web service that handles requests for file transfers between participating organizations interested in exchanging biological and bioinformatical data. The DTS coordinates provides a single point of access for these organizations, allowing an end user or another service to

  • search for datasets / files within any participating organization based on criteria specified in an ElasticSearch style query
  • select any or all files from a search and request a transfer from the source organization to another participating organization

In its current form, DTS is a prototype that specifically allows transfers from the JGI Data Portal to the KBase Workspace, to bring the capabilities of the latter organization to bear on the data available from the former.

DTS is designed for easy deployment and maintenance behind a gateway that provides TLS/SSL encryption. Requests to the DTS include headers with authentication information, so these requests rely on the HTTPS protocol to protect this information.

It's very easy to deploy DTS in a Docker environment and configure it using environment variables.

Building and Testing DTS

DTS is written in Go, so you'll need a working Go compiler to build, test, and run it locally. If you have a Go compiler, you can clone this repository and build it from the top-level directory:

go build

Running Unit Tests

DTS comes with several unit tests that demonstrate its capabilities, and you can run these tests as you would any other Go project:

go test ./...

You can add a -v flag to see output from the tests.

Because DTS is primarily an orchestrator of network resources, its unit tests must be able to connect to and utilize these resources. Accordingly, you must set the following environment variables to make sure DTS can do what it needs to do:

  • DTS_KBASE_DEV_TOKEN: a KBase development token (available to KBase developers used to connect to the KBase Auth Server, which provides a context for authenticating and authorizing DTS for its basic operations
  • DTS_KBASE_TEST_ORCID: an ORCID identifier that can be used to run DTS's unit test. This identifier must match a registered ORCID ID associated with a KBase user account.
  • DTS_KBASE_TEST_USER: the KBase user associated with the ORCID specified by DTS_KBASE_TEST_ORCID.
  • DTS_GLOBUS_CLIENT_ID: a client ID registered using the Globus Developers web interface. This ID must be registered specifically for an instance of DTS.
  • DTS_GLOBUS_CLIENT_SECRET: a client secret associated with the client ID specified by DTS_GLOBUS_CLIENT_ID
  • DTS_GLOBUS_TEST_ENDPOINT: a Globus endpoint used to test DTS's transfer capabilities
  • DTS_JDP_SECRET: a string containing a shared secret that allows the DTS to authenticate with the JGI Data Portal

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •