Skip to main content

MADAM (TM) Multi Agent Digital Asset Manager - a MAM server for Docker Swarm to handle higly distributed media processes

Project description

MADAM

MADAM is the Multi Agent Digital Asset Manager.

It provides a three-tier architecture platform to handle workflow processing in a distributed environment.

It uses Docker swarm to dispatch processes in a cluster of machines.

It is a free (as freedom) software written in Python.

Documentation

Link to the documentation

Support

If you find this project useful and want to contribute, please submit issues, merge requests. If you use it regularly, you can help by the author by a financial support.

<script src="https://liberapay.com/vit/widgets/button.js"></script>

<a href="https://liberapay.com/vit/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>

Requirements

You will need Camunda Modeler 4.11+ to easily create Zeebe BPMN XML workflows for MADAM.

Licensing

MADAM is licensed under the Gnu Public License Version 3.

Camunda Modeler is licensed under the MIT License (MIT).

At its core, MADAM use adhesive-zebe, a BPMN workflow python engine able to execute Zeebe BPMN XML workflows. It is a fork of adhesive under the original adhesive license that is GNU Affero General Public License v3.0

System environment setup

  1. Install Docker.

  2. Configure userns-remap to map container user root to a host non-root user.

  3. Configure the dev station as a Docker Swarm Manager.

  4. Install a Postgresql database server.

You can use the Ansible playbook provided to install PostgreSQL locally with Docker, after configuring hosts.yaml:

make environment

Python environment setup

  • It requires Python 3.8+.

  • Pyenv should be used to choose the right version of Python, without breaking the default Python of the Operating System.

  • A Python virtual environment should be created in a .venv folder.

    pyenv install 3.8.0
    pyenv shell 3.8.0
    python -m venv .venv 
    source .venv/bin/activate`

Installation/Update

From PyPI:

In a Python virtualenv:

pip install -U madam-mam

In your user install directory:

pip install --user -U madam-mam

Development environment

Install Poetry with the custom installer:

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python

Install Python dependencies:

poetry install --no-root

Get madam-cli bash shell completion:

_MADAM_CLI_COMPLETE=source_bash bin/madam-cli > madam-cli-complete.sh
sudo cp madam-cli-complete.sh /etc/bash_completion.d/.

For another shell, replace source_bash by source_zsh or source_fish

Configuration

Make a copy of the environment config example file:

cp .env.example .env

Edit .env to suit your needs, then:

export $(grep -v '^#' .env | xargs -d '\n')

Make a copy of the Ansible inventory example file:

cp hosts.yaml.example hosts.yaml

Edit hosts.yaml to suit your needs.

Make a copy of the MADAM config example file:

cp madam.yaml.example madam.yaml

Edit madam.yaml to suit your needs.

Make a copy of the MADAM config example file for the test environment:

cp madam_tests.yaml.example madam_tests.yaml

Edit madam_tests.yaml to suit your needs.

Make a copy of the MADAM config example file for the local deploy:

cp madam_deploy.yaml.example madam_deploy.yaml

Edit madam_deploy.yaml to suit your needs.

Set and tag project version in Git

./bin/release.sh 1.0.0

Build MADAM python package and Docker image

make build

The wheel package will be build in the dist directory.

Deploy MADAM as local docker container

To deploy MADAM container on localhost:

make deploy

Check static type and code quality

make check

Run tests

Run all pytest tests with:

make tests

Run only some tests by using bin/tests.sh:

bin/tests.sh tests/domains/test_workflows.py::test_create

Database setup

Set DATABASE_URL and DATABASE_URL_TESTS environment variable in .env file:

DATABASE_URL=postgresql://postgres:xxxxx@hostname:5432/madam?sslmode=allow
DATABASE_URL_TESTS=postgresql://postgres:xxxxx@hostname:5432/madam_tests?sslmode=allow

Migrations scripts

Add/Edit scripts in resources/migrations directory:

# version.name.[rollback].sql
00001.init_tables.sql
00001.init_tables.rollback.sql

Migrate commands

make databases
make databases_rollback
make databases_list

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

madam-mam-0.5.11.tar.gz (60.5 kB view details)

Uploaded Source

Built Distribution

madam_mam-0.5.11-py3-none-any.whl (135.7 kB view details)

Uploaded Python 3

File details

Details for the file madam-mam-0.5.11.tar.gz.

File metadata

  • Download URL: madam-mam-0.5.11.tar.gz
  • Upload date:
  • Size: 60.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.8.0 Linux/4.15.0-162-generic

File hashes

Hashes for madam-mam-0.5.11.tar.gz
Algorithm Hash digest
SHA256 522486c8d987cc93f54607a5d6036180a3733875a95a14502364698d6afdf552
MD5 c29eb7fc3c373224fb3fd7b4bf32c021
BLAKE2b-256 469e6392496e68c32d6de812a876208f047bc26a9a0aa761a8f30d13e33bcec3

See more details on using hashes here.

File details

Details for the file madam_mam-0.5.11-py3-none-any.whl.

File metadata

  • Download URL: madam_mam-0.5.11-py3-none-any.whl
  • Upload date:
  • Size: 135.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.11 CPython/3.8.0 Linux/4.15.0-162-generic

File hashes

Hashes for madam_mam-0.5.11-py3-none-any.whl
Algorithm Hash digest
SHA256 29db41431ee86a99996d8d3e2d96c28df27b113f25d0f7add62b011f9d40fd53
MD5 1e5befcf39fcdbbaa32ac7e7e3ea4d63
BLAKE2b-256 79ccbfbe78bafeadbfbc638838f070475919aea7e0163cba3f11b03bc31b66d5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page