Skip to content

Orchestrator Core

Production ready Orchestration Framework to manage product lifecycle and workflows. Easy to use, Built on top of FastAPI

Downloads Coverage Pypi



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!

Orchestration

When do you orchestrate and when do you automate? The answer is you probably need both. Automation helps you execute repetitive tasks reliably and easily, Orchestration adds a layer and allows you to add more intelligence to the tasks you need to automate and to have a complete audit log of changes.

Orchestrate* - Transitive Verb

/ˈôrkəˌstrāt/ /ˈɔrkəˌstreɪt/

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’

Project Goal

This orchestrator-core provides a framework through which you can manage service orchestration for your end users. The framework helps and guides you, the person who needs to get things done, through the steps from automation, to orchestration. With an easy to use set of API's and example, you should be up and running and seeing results, before you completely understand all ins and outs of the project. The Orchestrator enables you to define products to which users can subscribe, and helps you intelligently manage the lifecycle of Creation, Modification, Termination and Validation of resources that you provide to your users. The Application extends a FastAPI application and therefore can make use of all the awesome features of FastAPI, pydantic and asyncio python.

What does a workflow look like? It must be pretty complex!!

Programming a new workflow should be really easy, and at its core it is. By defining workflows as Python functions, all you need to do is understand how to write basic python code, the framework will help take care of the rest.

@workflow("Name of the workflow", initial_input_form=input_form_generator)
def workflow():
    return (
        init
        >> arbitrary_step_func_1
        >> arbitrary_step_func_2
        >> arbitrary_step_func_3
        >> done
    )

I'm conviced! Show me more!

There are a number of options for getting started:

  • For those of you who would like to see it working, take a look at this repo and follow the README to setup a docker-compose so you can experiment on your localhost.
  • For those who are more adventurous, follow the guide on the next page to start codeing right away.