/discovery-api

:flashlight: Service discovery API

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Codacy Badge Build Status Maintainability Test Coverage Coverage Status

Maestro Server

Maestro Server is an open source software platform for management and discovery servers, apps and system for Hybrid IT. Can manage small and large environments, be able to visualize the latest multi-cloud environment state.

Demo

To test out the demo, Demo Online

Documentation

Maestro Server - Discovery API

Discovery App is a crawler accountable to connect to cloud providers.

  • To manager and authenticate on each cloud provider
  • Translate cloud data to maestro data.

arch

Core API:

  • API Rest
  • Worker - Scan
  • Worker - Translate
  • Worker - Insert
  • Worker - Notification

TechStack

  • Python <3.4
  • Flask
  • Celery
  • RabbitMq

Connect to:

  • Maestro Data

Setup

Installation by docker

version: '2'

services:
discovery:
    image: maestroserver/discovery-maestro
    ports:
    - "5000:5000"
    environment:
    - "CELERY_BROKER_URL=amqp://rabbitmq:5672"
    - "MAESTRO_DATA_URI=http://data:5010"

discovery-celery:
    image: maestroserver/discovery-maestro-celery
    environment:
    - "CELERY_BROKER_URL=amqp://rabbitmq:5672"
    - "MAESTRO_DATA_URI=http://data:5010"
    - "MAESTRO_AUDIT_URI=http://audit:10900"
    - "MAESTRO_SERVER_URI=http://server:8888"

Dev Env

cd devtools/

docker-compose up -d

Configure rabbitmq service in .env file

CELERY_BROKER_URL="amqp://localhost:5672"
CELERYD_TASK_TIME_LIMIT=30

Install pip dependences

pip install -r requeriments.txt

Run server

python -m flask run.py

or

FLASK_APP=run.py FLASK_DEBUG=1 flask run

or 

npm run server

Run workers

celery -A app.celery worker -E -Q discovery --hostname=discovery@%h --loglevel=info

or 

npm run celery

Run all tests

python -m unittest discover

Create doc

npm install
apidoc -i app/controller/ -o docs/

Env variables

Env Variables Example Description
MAESTRO_DATA_URI http://localhost:5005 Data App - API URL
MAESTRO_AUDIT_URI http://localhost:10900 Audit App - API URL
MAESTRO_SERVER_URI http://localhost:8888 Server App - API URL
MAESTRO_WEBSOCKET_URI http://localhost:8000 Websocket App - API URL
FLASK_ENV development production
MAESTRO_GWORKERS 2 Gunicorn multi process
MAESTRO_TRANSLATE_QTD 200 Prefetch used in translate worker
MAESTRO_COUNTDOWN_LAST 10 Time in seconds to run the last task
MAESTRO_COUNTDOWN_WS 2 Delayed time to run ws notification
MAESTRO_SECRETJWT XXXX Secret key - JWT for connections
MAESTRO_WEBSOCKET_SECRET XXXX Secret Key - JWT Websocket connections
MAESTRO_SECRETJWT_PRIVATE XXX Secret Key - JWT private connections
MAESTRO_NOAUTH XXX Secret Pass to validate private connections
CELERY_BROKER_URL XXXX Rabbitmq URL
CELERYD_TASK_TIME_LIMIT 500 Timeout - worker

Contribute

Are you interested in developing Maestro Server, creating new features or extending them?

We created a set of documentation, explaining how to set up your development environment, coding styles, standards, learn about the architecture and more. Welcome to the team and contribute with us.

See our developer guide

Contact

We may be able to resolve support queries via email. Please send me a message here

Donate

I have made Maestro Server with my heart, think to solve a real operation IT problem. Its not easy, take time and resources.

The donation will be user to:

  • Create new features, implement new providers.
  • Maintenance libs, securities flaws, and technical points.

Buy Me A Coffee

Sponsor