An open API service indexing awesome lists of open source software.

https://github.com/simonsobs/librarian

The Simons Observatory Librarian, previously forked from the HERA Librarian and completely re-written for the needs of (A)SO
https://github.com/simonsobs/librarian

Last synced: 5 months ago
JSON representation

The Simons Observatory Librarian, previously forked from the HERA Librarian and completely re-written for the needs of (A)SO

Awesome Lists containing this project

README

          

# The Librarian

[![Coverage Status](https://coveralls.io/repos/github/simonsobs/librarian/badge.svg?branch=main)](https://coveralls.io/github/simonsobs/librarian?branch=main)
[![Docs Status](https://readthedocs.org/projects/solibrarian/badge/?version=latest&style=flat)](https://solibrarian.readthedocs.io)

The Librarian is a system for data transfer orchestration designed for the
Simons Observatory. The Librarian is based upon the HERA Librarian framework
(and even retains its namesake for the client library), but was entirely
re-written for this new workload. The Librarian's architechture is documented
in the Scipy 2024 proceeding describing the software.

The goal of the Librarian is to track and transfer primary data products
generated at remote sites through a push-based system. The first push is
from a client using the `librarian upload` command, ingesting files into
the system. From there, redundant copies may be made locally or remotely,
with support for SneakerNet (i.e. by movement of physical media) transfers.

There are a number of sub-packages in this repository:

- `hera_librarian`, containing the client code for the system. This is how
most users communicate with the librarian.
- `librarain_server`, containing the main HTTP REST API server and database
models.
- `librarian_background`, containing the code for background tasks that
run on a fixed cadence, and have direct database access.
- `librarian_server_scripts`, containing the initialization and example
run scripts that are used for the persistent service.
- `tests` containing a large suite of tests for the application.
- `alembic` containing database migration scripts.

These individual components are all documented separately.