Feature #13493

Updated by Tom Clegg almost 2 years ago

From [[Federation implementation roadmap]] First step in


> When retrieving a workflow record for arvados-cwl-runner, API server notices workflow UUID is remote, and fetches it with salted token (instead of looking in local DB)

Implementation notes
Notes here:


Design questions:

* This is Is this a feature added to the current Rails API server, as a proxy in front of the new (Go) API server, or added to the SDK?
** Adding to the Rails API
server (#13497) seems complicated. Requests need to be routed before they hit regular handling. Requests to remote API servers tie up a request handler process.
* Implement ** A separate request broker can act as http handler middleware ("proxy a transparent proxy and route requests to remote cluster if applicable, otherwise fall through to next handler") the correct API server.
** Embedding in the SDK means no new infrastructure required, but is less transparent.

Configuration Proposed strategy:

* Implement request routing in the Go SDK

* Add configs (similar Write an API broker in Go that uses the SDK.

# Client contacts the API broker with GET request
# API broker inspects uuid
to Rails API's remote_hosts determine where the request should be sent.
# Sends request
and remote_hosts_via_dns) to cluster config object in source:sdk/go/arvados/config.go gets response
# Returns result or error