Production ready Orchestration Framework to manage product lifecyle and workflows. Easy to use, Built on top of FastAPI
The orchestrator core is a project developed by SURF to facilitate the orchestration of services. Together with ESnet this project has been opensourced in the commons conservancy to help facilitate collaboration. We invite all who are interested to take a look and to contribute!
When do you orchestrate and when do you automate. The answer is you probably need both. Automation helps you execute repetetive tasks reliably and easily, Orchestration adds a layer and allows you to add more intelligence to the tasks you need to automate.
Orchestrate* - Transitive Verb
1: Arrange or score (music) for orchestral performance.
‘the song cycle was stunningly arranged and orchestrated’
2: Arrange or direct the elements of (a situation) to produce a desired effect, especially surreptitiously.
‘the developers were able to orchestrate a favorable media campaign’
This orchestrator-core provides a framework through which you can manage service orchestration for your end users. It enables you to define products to which users can subscribe, and helps you intelligently manage the lifecycle of Creation, Modification, Termination and Validation of a customer subscription.
This project can be installed as follows:
Install the core.
pip install orchestrator-core
Create a postgres database:
createuser -sP nwa createdb orchestrator-core -O nwa
Step 3 (optional):
When using multiple workers, you will need a redis, postgres or kafka service for live updates with websockets. Redis is installed by default and for postgres or kafka you will need to install them:
pip install broadcaster[postgres] pip install broadcaster[kafka]
For the connection you need an env variable with the connection url.
more broadcaster info here
from orchestrator import OrchestratorCore from orchestrator.cli.main import app as core_cli from orchestrator.settings import AppSettings app = OrchestratorCore(base_settings=AppSettings()) if __name__ == "__main__": core_cli()
Initialize the migration environment.
PYTHONPATH=. python main.py db init PYTHONPATH=. python main.py db upgrade heads
uvicorn --reload --host 127.0.0.1 --port 8080 main:app
Visit http://127.0.0.1:8080/api/redoc to view the api documentation.
Setting up a development environment
To add features to the repository follow the following procedure to setup a working development environment.
Install the project and its dependancies to develop on the code.
Step 1 - install flit:
mkdvirtualenv -p python3.9 orchestrator-core workon orchestrator-core pip install flit
Step 2 - install the development code:
flit install --deps develop --symlink
Make sure to use the flit binary that is installed in your environment. You can check the correct path by running
Run the unit-test suite to verify a correct setup.
Step 1 - Create a database
createuser -sP nwa createdb orchestrator-core-test -O nwa
Step 2 - Run tests
If you do not encounter any failures in the test, you should be able to develop features in the orchestrator-core.