Conversation
ADR: Adopt GA4GH DRS Server as the canonical metadata and transfer surfaceBranch: ContextGen3 data-client historically coupled multiple concerns: metadata resolution through Indexd, presigned URL orchestration through Fence, and bespoke download/upload flows wired directly to those services. That architecture made it difficult to:
As new projects adopt GA4GH-native endpoints and non-Gen3 storage, we need the client to speak DRS natively, generate API bindings from the published schema, and encapsulate transfer orchestration behind a stable interface. We also need a local/runtime abstraction so that the same CLI can target either a Gen3 commons or a standalone DRS service. Decision
Implementation DetailsGA4GH DRS metadata layer
Transfer backend abstraction & runtime selection
CLI, download, and upload workflows
Tooling, dependencies, and tests
Consequences
Alternatives Considered
Follow-Up
|
PR Review:
|
|
Failing test: |
|
I moved syfon client out of this repo so your feedbacks for this repo are no longer relevant. I will still address these feedbacks in syfon repo though. |
big architectural refactor to support drs server changelog:
Full Metadata Migration: The entire indexd package (1,158 lines) has been deprecated and removed, replaced by a native GA4GH-compliant drs registry system.
Universal Cloud Storage: Added gocloud.dev integration, enabling native S3, Google Storage, and Azure Blob support via a unified transfer backend.
Client-Side Orchestration: Shifted multipart upload management from server-side to a robust client-driven orchestrator, capable of handling enterprise-scale files (5GB+).
Type-Safe Infrastructure: Integrated 18.5k lines of OpenAPI-generated model code (apigen) to ensure 100% fidelity with the latest DRS specifications.