# Engine API Server ## Overview The Project serves the Engine API and handles state management of multiple Engine instances. This project is based on a swagger-enabled Flask server using an *API First* approach. It also uses the [Connexion](https://github.com/zalando/connexion) library on top of Flask. ## Requirements Python 3.7+ MariaDB (or similar Database) # Setup Install the required dependencies: ```bash pip3 install -r requirements.txt # Additional requirements for the chosen database pip3 install -r contrib/mariadb-requirements.txt # Create database and user (change password in script) sudo mysql -u root -p < contrib/mariadb-database.sql ``` ## Getting started To run the server, please execute the following from the root directory: ``` ./run.sh api ``` To run the API in an local development server execute: ``` ./run.sh api-dev ``` You can access the interactive documentation here: ``` http://localhost:8008/api/v1/ui/ ``` Your OpenAPI definition lives here: ``` http://localhost:8008/api/v1/openapi.json ``` ## Testing To launch the integration tests, use tox: ``` sudo pip install tox ./run.sh test ``` ## Running with Docker To run the server on a Docker container, please execute the following from the root directory: ```bash # Building the image ./run.sh docker:build # Push the current image to dockerhub.com ./run.sh docker:push # Starting up a container ./run.sh docker:api ```