Skip to main content

Johann, the lightweight and flexible scenario orchestrator

Project description

Latest release Platform support Python version support License pipeline status pre-commit Code style: black

Johann

Johann is a lightweight and flexible “scenario orchestrator”. It makes it easy to coordinate the actions of groups of computers into cohesive, reconfigurable scenarios. It’s sort of like the conductor for an orchestra of computers, and you get to write the music.

Summary

Requirements

Johann is designed to be used on Linux. It has been tested on Ubuntu 18.04, and likely works on several other distributions as well.

Johann requires the following to run:

Here is an example of how to install these on Ubuntu/Debian:

# Install make
sudo apt-get update
sudo apt-get install build-essential

# Install docker via convenience script (not for production environments)
curl https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
# log out and log back in
docker run hello-world

# Install docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

Usage

Start Johann (this will also build it). This can take a while the first time.

make up

This is an alpha prototype

Johann is an evolutionary prototype in its initial development. It is not yet feature complete, and breaking changes can happen at any time. This is represented by its major version zero (0.y.z).

For now, Johann should be considered to be in perpetual alpha. This is made explicit by the "a" in the version identifier. Please expect it to be rough around the edges (and maybe everywhere else).

Johann should only be used in isolated or protected networks of known and trusted hosts/users. It should only be used for research and development, and not in production.

Roadmap

Here are some planned improvements to Johann, in no particular order:

  • add a simple GUI
  • switch to pydantic
  • switch to fastapi
  • add more documentation
  • use mypy and pylint
  • add more tests
  • add user authentication
  • support kwargs in Measures
  • Score-level variables; configurable at runtime

Contributing

We welcome pull requests! Before starting, please communicate with us to discuss what you would like to change. Please also update tests and documentation as appropriate. Thanks!

Getting Started

Install development packages.

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install python3-dev python3-venv build-essential git

# Alpine (not officially supported)
apk add --no-cache python3-dev bash make git gcc linux-headers musl-dev

Setup the virtual environment used for Johann development. This also installs pre-commit hooks.

make dev-setup

Development Usage

Start Johann in development mode (this will also build it).

make dev

Testing

make test

Linting

Johann uses pre-commit. For the list of hooks used, see .pre-commit-config.yaml.

Lint the files staged for commit.

make lint

Lint all files in the repo.

make lint-all

Use safety to check for known dependency vulnerabilities.

make safety

Built With

In addition to the dependencies listed in Requirements, please see:

In addition to these, Johann is also made possible with the help of (alphabetically):

License

Use of this source code is governed by a BSD-3-clause license that can be found in the LICENSE file. See the AUTHORS file for names of contributors.

Acknowledgments

  • JHU/APL for supporting Johann's licensing as open source
  • Johann S.D.G.

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

johann-0.3.0a0.tar.gz (43.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

johann-0.3.0a0-py3-none-any.whl (56.2 kB view details)

Uploaded Python 3

File details

Details for the file johann-0.3.0a0.tar.gz.

File metadata

  • Download URL: johann-0.3.0a0.tar.gz
  • Upload date:
  • Size: 43.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.9

File hashes

Hashes for johann-0.3.0a0.tar.gz
Algorithm Hash digest
SHA256 43133760a6708a99d4dc82a3988db82ad4d1c8d58f1681ad43a1af9d2815d3f6
MD5 c145ded89c18305ed09715a672cfe449
BLAKE2b-256 dab76dd26df16f894fadfc8cd18d4d006d0f2e1b875d2738aa7197a821f0d7a2

See more details on using hashes here.

File details

Details for the file johann-0.3.0a0-py3-none-any.whl.

File metadata

  • Download URL: johann-0.3.0a0-py3-none-any.whl
  • Upload date:
  • Size: 56.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.9

File hashes

Hashes for johann-0.3.0a0-py3-none-any.whl
Algorithm Hash digest
SHA256 06dcaa8132569aac64d61a5f3e009a5718d516fb761734c8796d401ae5e07739
MD5 1f66ca9d826bd552fe6d6ca98e6c92a8
BLAKE2b-256 c04399afa70c13832a2fddf78eaa3901755be9e52d892ca67b684ac7e7f46d14

See more details on using hashes here.

Supported by

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