Releases: aiidateam/aiida-optimade
v0.5.0
Highlight:
- Close AiiDA SQLA sessions after an endpoint has collected its data from the AiiDA database (#34).
This fixes the issue of theQueuePool
being filled up, since the connections were never released.
Changes:
- Add
optimade-python-tools
version toDockerfile
(#45) aiida-core
version compatibility badge (#46)- Use versioned base URLs for endpoint prefixes (#51)
- Further minimize code-reproduction and reuse code from
optimade
(#51) - Use
RedirectSlashedURLs
fromoptimade
(#51) - Move mapper aliases to config.json file (#51)
- Subclass
ResourceMapper
fromoptimade
and incorporate new REQUIRED levels from the spec (#52)
v0.4.1
v0.4.0
Due to rebase and commit for v0.3.0, some commits will be redone. This
cannot be undone without losing pointers to the v0.3.0 published commit.
One should either merge with --ff-only from command line or make a merge
commit and then merge back into develop
using a merge commit as well.
This update is considered from commit 12d2237.
Updates:
- OPTiMaDe spec v0.10.1.
- optimade-python-tools v0.3.1 (with grammar for v0.10.1).
- Redone HTTP middleware to handle session per request.
- Update to pydantic v1.
- Add implementation information, i.e., information about which version
ofaiida-optimade
the server is using, to allmeta
responses. - Use server.cfg.
- Fix broken Docker build, and add it to CI (@ltalirz)
v0.3.0
Minimum AiiDA version: 1.0.0
Recommended AiiDA version: 1.0.1
Updates:
- CI with GitHub Actions
- Avoid unwilling loading of CONFIG from
optimade-python-tools
- Add codecov coverage and update README with various badges
server.cfg
config file to tellconfig.py
where to find a configuration file for the server- This is needed due to a recent update to
optimade-python-tools
and a re-configuration of itsconfig.py
- This is needed due to a recent update to
v0.2.0
Minimum AiiDA version: 1.0.0
First public release of aiida-optimade
: An OPTiMaDe API implementation for AiiDA.
README:
Optimade API implementation for AiiDA
This is a RESTful API server created with FastAPI that exposes an AiiDA database according to the OPTiMaDe specification.
The server is based on the test server "template" used in the optimade-python-tools
package.
Indeed, the filter grammar and parser and pydantic
models from optimade-python-tools
are used directly here.
Lastly, the server utilizes the FastAPI concept of routers, which means each endpoint can be "setup" several times, allowing multiple base URLs and more flexibility.
Prerequisites
Environment where AiiDA is installed.
AiiDA database containing StructureData
nodes, since these are the only AiiDA nodes that are currently exposed with this API (under the /structures
endpoint).
Note: At the moment,
aiida-optimade
works most optimally with an AiiDA database using the SQLAlchemy backend.
Installation
git clone https://github.com/Materials-Consortia/optimade-python-tools
pip install -e optimade-python-tools/
git clone https://github.com/aiidateam/aiida-optimade
pip install -e aiida-optimade/
Running the server locally
# specify AiiDA profile (will use default otherwise)
export AIIDA_PROFILE=optimade
sh run.sh
Navigate to http://127.0.0.1:5000/optimade/info
Running via docker
Adapt profiles/quicksetup.json
and profiles/docker-compose.yml
appropriately.
docker-compose -f profiles/docker-compose.yml up --build
Navigate to http://127.0.0.1:3253/optimade/info
Stop by using
docker-compose -f profiles/docker-compose.yml down
Design choices
Q: Why create an individual config.json
file instead of just mounting an existing .aiida
directory and using that directly?
A: This, currently, wouldn't work because the REPOSITORY_URI
needs to point to the right path inside the container, not on the host. Furthermore, storing all configurations in the same file can be fragile.