Skip to content
This repository was archived by the owner on Sep 9, 2026. It is now read-only.

Repository files navigation

tests Coverage Status

File Services Backend

Important

This repository is archived and no longer maintained.

Development of the file services continues in the GHGA monorepo at ghga-de/ghga. Please open issues and pull requests there.

This repository is kept read-only for its history. Version 17.0.0 (August 2026) was the last release made here; everything after that has been developed in the monorepo. The documentation below describes the state of the code as of that version.

File Services Backend - monorepo housing file services

Description

This is a monorepo containing all GHGA file backend microservices.

Services:

Download Controller Service
Encryption Key Store Service
File Ingest Service
Internal File Registry Service
Purge Controller Service
Upload Controller Service

Development:

For setting up the development environment, we rely on the devcontainer feature of VS Code in combination with Docker Compose.

To use it, you have to have Docker Compose as well as VS Code with its "Remote - Containers" extension (ms-vscode-remote.remote-containers) installed. Then open this repository in VS Code and run the command Remote-Containers: Reopen in Container from the VS Code "Command Palette".

This will give you a full-fledged, pre-configured development environment including:

  • infrastructural dependencies of the services (databases, etc.)
  • all relevant VS Code extensions pre-installed
  • pre-configured linting and auto-formatting
  • a pre-configured debugger
  • automatic license-header insertion

Moreover, inside the devcontainer, a convenience command dev_install is available. It installs the services with all development dependencies and installs pre-commit.

The installation is performed automatically when you build the devcontainer. However, if you update dependencies in the ./pyproject.toml or the ./requirements-dev.txt, please run it again.

For more information on development with this monorepo, please see the Developer Guide.

Configuration:

OpenTelemetry Configuration

OpenTelemetry instrumentation is available via a set of instrumentation libraries. Both the tracer provider and the autoinstrumentation of those libraries are set up programmatically when the service starts, so no wrapper around the entrypoint is needed inside the service containers. Specific features can be configured on the service level via environment variables as documented in OpenTelemetry Environment Variable Specification and SDK Configuration.

Some of these are exposed via config options on the service level. By default, OpenTelemetry is disabled and can be enabled by setting enable_opentelemetry to true. The share of traces that get sampled can be adjusted via the otel_trace_sampling_rate config option. Traces are exported via OTLP over HTTP using the protobuf encoding. By default the services send traces to a localhost port, but for actual deployments OTEL_EXPORTER_OTLP_ENDPOINT needs to be set, pointing to the correct endpoint.

License

This repository is free to use and modify according to the Apache 2.0 License.

README Generation

This README file is auto-generated, please see readme_generation.md for details.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

7 watching

Forks

Releases

Packages

Used by

Contributors

Languages