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
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.
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
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 operationsDTS_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
capabilitiesDTS_JDP_SECRET
: a string containing a shared secret that allows the DTS to
authenticate with the JGI Data Portal