LEXIS Backend services
The LEXIS UserOrg service was originally a service to manage the mapping between users and organizations but evolved to become a service which also contains mappings to LEXIS Computational Projects and HPC Computational Projects. The UserOrg service offers a Swagger/OpenAPI v2 interface (available at https://github.com/lexis-project/lexis-backend-services-userorg-service/blob/main/swagger.yaml) over HTTPS to support creation of users, creation of organizations, creation of projects and the various mappings between these different entities, e.g. mappings from users to organizations and mappings from users to projects. It leverages Postgres DB for storing persistance data.
The service is implemented in Golang. It uses a variant of the go-swagger code generation tool to generate stub code for the Swagger servers and go libraries for the Swagger clients; as a Swagger API is defined, libraries in other languages can easily be generated. The service uses the gorm library to map from models defined in the Swagger definition to a specific data schema used in the Postgres database. The service performs authentication and access controls using Keycloak: every valid request must provide a bearer token and the service verifies this bearer token with Keycloak to ensure that it is valid and the user has the correct authorizations.
New version
We are currently in the implementation phase of new UserOrg service with .Net Core capabilities (multi-platform, scalability, etc..). New release will have some additional features:
Re-structured database schema
API input requests validation conditions
It collects and stores information about project storages, network configuration, etc.. (for LEXIS project)
Provides general information about HPC clusters, and providers
Solve allocation differences among binaries at HPC clusters