Skip to main content

Python SDK client for Netflix Maestro workflow orchestrator

Project description

maestro-python

Python sdk client library for Maestro workflow orchestrator. It has a minimal dependency, only requiring pyyaml.

Features

  • Maestro yaml DSL
  • Maestro python DSL
  • Maestro client
  • Maestro command line interface

Installation

pip install maestro-sdk

Or install maestro sdk from source code:

git clone https://github.com/jun-he/maestro-python.git
cd maestro-python
pip install -e .

Quick Start

Creating a workflow

from maestro import Workflow, Job

wf = Workflow(id="test-wf")
wf.owner("tester").tags("test")
wf.job(Job(id="job1", type='NoOp'))
wf_yaml = wf.to_yaml()

Pushing a workflow to Maestro server

from maestro import Workflow, Job, MaestroClient

wf = Workflow(id="test-wf")
wf.owner("tester").tags("test")
wf.job(Job(id="job1", type='NoOp'))
wf_yaml = wf.to_yaml()

client = MaestroClient(base_url="http://127.0.0.1:8080", user="tester")
response = client.push_yaml(wf_yaml)
print(response)

Starting a workflow

from maestro import MaestroClient

client = MaestroClient(base_url="http://127.0.0.1:8080", user="tester")
response = client.start(workflow_id="test-wf", run_params={"foo": {"value": "bar", "type": "STRING"}})
print(response)

Command line interface (CLI)

Push a workflow

maestro --base-url http://127.0.0.1:8080 --user tester push sample-wf.yaml
# push the yaml using default base-url and user name
maestro push sample-wf.yaml

Validate a workflow

maestro --base-url http://127.0.0.1:8080 --user tester validate sample-wf.yaml
# validate the yaml using default base-url and user name
maestro validate sample-wf.yaml

Start a workflow definition

# start sample-wf with default version and none runtime params
maestro --base-url http://127.0.0.1:8080 --user tester start sample-wf.yaml
# start sample-wf with default base-url & user name and runtime params using a specific version 
maestro start sample-wf --version 1 --params '{"foo": {"value": "bar", "type": "STRING"}}'
# start sample-wf with default base-url & user name and runtime params using the latest version
maestro start sample-wf --version latest --params '{"foo": {"value": "bar", "type": "STRING"}}'

Stop workflow or step execution(s)

# stop all workflow instances for workflow_id = sample-wf
maestro stop sample-wf
# stop a workflow instance for workflow_id = sample-wf and instance_id = 1
maestro stop sample-wf 1
# stop a step instance for workflow_id = sample-wf and instance_id = 1 and step_id = job1
maestro stop sample-wf 1 job1

Get a workflow definition

# get workflow definition for the default version
maestro get-workflow sample-wf
# get workflow definition for the latest version
maestro get-workflow sample-wf --version latest
# get workflow definition for version 1
maestro get-workflow sample-wf --version 1
# get enriched workflow definition for version 1
maestro get-workflow sample-wf --version 1 --enriched true

Get a workflow instance or step instance

# get workflow instance for instance id 1 for the latest run
maestro get-instance sample-wf 1
# get workflow instance for instance id 1 for the 2nd run
maestro get-instance sample-wf 1 --run-id 2
# get workflow step instance for instance id = 1 and step id = job1
maestro get-instance sample-wf 1 job1
# get workflow step instance for instance id = 1, run id = 2, step id = job1, step attempt id = 1 
maestro get-instance sample-wf 1 job1 --run-id 2 --attempt-id 1

Watch a workflow instance execution

>>> maestro watch wf-test 5
Watching workflow instance [wf-test][5]...
-> Current workflow status: [IN_PROGRESS]
--------------------------------------------------
.
[01:06:26]: job1 -> RUNNING
..
[01:06:32]: job1 -> SUCCEEDED
--------------------------------------------------
* Workflow instance [wf-test][5] is completed with status [SUCCEEDED]

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

maestro_sdk-0.1.4.tar.gz (16.6 kB view details)

Uploaded Source

Built Distribution

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

maestro_sdk-0.1.4-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file maestro_sdk-0.1.4.tar.gz.

File metadata

  • Download URL: maestro_sdk-0.1.4.tar.gz
  • Upload date:
  • Size: 16.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for maestro_sdk-0.1.4.tar.gz
Algorithm Hash digest
SHA256 729bdb4534c85902f20fef3c2ec74b69e589f50e60b99bd3d5ad9b77171de7a8
MD5 5d7933396a5b8616f5df3204a3a1255d
BLAKE2b-256 ce5d0377361a34332f49559ae0e3a1220dba8a4307ed88265554d50782725269

See more details on using hashes here.

File details

Details for the file maestro_sdk-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: maestro_sdk-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 18.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for maestro_sdk-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 36ed43da02a564ee9513c7c91ab43554c9a80d87e6f9320f1ad5e17dba91ae88
MD5 82233737bf606e36845c9da2dc381253
BLAKE2b-256 0de7eeda1701bf096f0d6a086d2ccf37b9f208234e813d0a455c7f939289672f

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