Skip to content
Snippets Groups Projects
README.md 1.42 KiB
Newer Older
  • Learn to ignore specific revisions
  • David Trattnig's avatar
    David Trattnig committed
    # Engine API Server
    
    David Trattnig's avatar
    David Trattnig committed
    
    ## Overview
    
    
    David Trattnig's avatar
    David Trattnig committed
    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.
    
    David Trattnig's avatar
    David Trattnig committed
    
    ## Requirements
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    Python 3.7+
    
    David Trattnig's avatar
    David Trattnig committed
    MariaDB (or similar Database)
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    ## Installation
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    Install the required dependencies:
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    ```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
    
    David Trattnig's avatar
    David Trattnig committed
    ```
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    ## Getting started
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    To run the server, please execute the following from the root directory:
    
    
    David Trattnig's avatar
    David Trattnig committed
    ```bash
    
    David Trattnig's avatar
    David Trattnig committed
    ./run.sh api
    ```
    
    To run the API in an local development server execute:
    
    
    David Trattnig's avatar
    David Trattnig committed
    ```bash
    
    David Trattnig's avatar
    David Trattnig committed
    ./run.sh api-dev
    ```
    
    You can access the interactive documentation here:
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    ```bash
    
    David Trattnig's avatar
    David Trattnig committed
    http://localhost:8008/api/v1/ui/
    
    David Trattnig's avatar
    David Trattnig committed
    ```
    
    
    David Trattnig's avatar
    David Trattnig committed
    Your OpenAPI definition lives here:
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    ```bash
    
    David Trattnig's avatar
    David Trattnig committed
    http://localhost:8008/api/v1/openapi.json
    
    David Trattnig's avatar
    David Trattnig committed
    ```
    
    
    David Trattnig's avatar
    David Trattnig committed
    ## Testing
    
    
    David Trattnig's avatar
    David Trattnig committed
    To launch the integration tests, use tox:
    
    David Trattnig's avatar
    David Trattnig committed
    
    ```bash
    
    David Trattnig's avatar
    David Trattnig committed
    sudo pip install tox
    
    David Trattnig's avatar
    David Trattnig committed
    ./run.sh test
    
    David Trattnig's avatar
    David Trattnig committed
    ```
    
    ## Running with Docker
    
    To run the server on a Docker container, please execute the following from the root directory:
    
    ```bash
    
    David Trattnig's avatar
    David Trattnig committed
    # Building the image
    ./run.sh docker:build
    
    # Push the current image to dockerhub.com
    ./run.sh docker:push
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    # Starting up a container
    ./run.sh docker:api
    
    David Trattnig's avatar
    David Trattnig committed
    ```