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
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
-
Configure userns-remap to map container user
root
to a host non-root user. -
Configure the dev station as a Docker Swarm Manager.
-
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 522486c8d987cc93f54607a5d6036180a3733875a95a14502364698d6afdf552 |
|
MD5 | c29eb7fc3c373224fb3fd7b4bf32c021 |
|
BLAKE2b-256 | 469e6392496e68c32d6de812a876208f047bc26a9a0aa761a8f30d13e33bcec3 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29db41431ee86a99996d8d3e2d96c28df27b113f25d0f7add62b011f9d40fd53 |
|
MD5 | 1e5befcf39fcdbbaa32ac7e7e3ea4d63 |
|
BLAKE2b-256 | 79ccbfbe78bafeadbfbc638838f070475919aea7e0163cba3f11b03bc31b66d5 |