Metadata-Version: 2.1
Name: moon-engine
Version: 0.7
Summary: UNKNOWN
Home-page: UNKNOWN
Author: Thomas Duval
Author-email: thomas.duval@orange.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Development Status :: 1 - Planning
Classifier: License :: OSI Approved
Classifier: Natural Language :: French
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Dist: hug
Requires-Dist: pyaml
Requires-Dist: moon-utilities
Requires-Dist: moon-cache
Requires-Dist: gunicorn
Requires-Dist: sqlalchemy
Requires-Dist: pymysql

# moon_engine

## Installation

If you want a stable version:

```bash
sudo python -m pip install moon_engine
```

If you want a development version:

```bash
ARTIFACTORY=https://artifactory-iva.si.francetelecom.fr/artifactory/api/pypi/python-virt-orange-product-devops/simple
sudo python -m pip install --pre moon_engine -i $ARTIFACTORY
```
Use it at your own risk, this is an unstable version.

If you want to be in development mode, and get the code:

```bash
git clone git@gitlab.forge.orange-labs.fr:moon/moon_utilities.git
cd moon_utilities
sudo pip install -e .
cd ..
git clone git@gitlab.forge.orange-labs.fr:moon/moon_cache.git
cd moon_cache
sudo pip install -e .
cd ..
git clone git@gitlab.forge.orange-labs.fr:moon/moon_engine.git
cd moon_engine
sudo pip install -e .
```

## Configuration

You need to create 3 configuration files.

### config.cfg::

    # configuration for Gunicorn
    bind = "127.0.0.1:8081"
    workers = 2

    # configuration for moon_engine
    moon = "moon.yaml"


### moon.yaml (feel free to update the configuration file to your need...)::


    type: "pipeline"
    uuid:
    manager_url: ""
    incremental_updates: false
    api_token:
    data: policy.json
    debug: true

    management:
      password: admin
      url: http://127.0.0.1:8000
      user: admin
      token_file: moon_engine_users.json

    orchestration:
      driver: moon_engine.plugins.pyorchestrator
      connection: local
      port: 20000...20100
      config_dir: /tmp

    authorization:
      driver: moon_engine.plugins.authz

    plugins:
      directory: /tmp

    logging:
      version: 1

      formatters:
        brief:
          format: "%(levelname)s %(name)s %(message)-30s"
        custom:
          format: "%(asctime)-15s %(levelname)s %(name)s %(message)s"

      handlers:
        console:
          class : logging.StreamHandler
          formatter: custom
          level   : INFO
          stream  : ext://sys.stdout
        file:
          class : logging.handlers.RotatingFileHandler
          formatter: custom
          level   : DEBUG
          filename: /tmp/moon_engine.log
          maxBytes: 1048576
          backupCount: 3

      loggers:
        moon:
          level: DEBUG
          handlers: [console, file]
          propagate: no

      root:
        level: ERROR
        handlers: [console]

### policy.json

This file contains all data that will be imported in the Engine. As we cannot update the cache after the creation of the Engine, all data must be in this file.
Example files lie in the conf directory.

## Web server execution

Execution when library is installed:

For a development server:

```bash
hug -m moon_engine.server config.cfg
```

For a production server:

```bash
gunicorn moon_engine.server:__hug_wsgi__ -c config.cfg
```

or

```bash
moon_engine start config.cfg
```

If library is not installed:

```bash
gunicorn moon_engine/server:__hug_wsgi__ -c config.cfg
```

This will install an autonomous engine server.
If you need to connect to a Manager, you must update the `moon.yaml` accordingly.



