All Projects → knowsuchagency → orkestra

knowsuchagency / orkestra

Licence: MIT license
The elegance of Airflow + the power of AWS

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to orkestra

K8s Appcontroller
AppController is a pod that you can spawn in your Kubernetes cluster which will take care of your complex deployments for you.
Stars: ✭ 214 (+409.52%)
Mutual labels:  orchestration
blueprint-examples
This is where you can find officially supported Cloudify blueprints that work with the latest versions of Cloudify. Please make sure to use the blueprints from this repo when you are evaluating Cloudify.
Stars: ✭ 25 (-40.48%)
Mutual labels:  orchestration
cohesity-powershell-module
This repository provides a PowerShell Module for Cohesity DataPlatform. https://cohesity.github.io/cohesity-powershell-module
Stars: ✭ 39 (-7.14%)
Mutual labels:  orchestration
Baker
Orchestrate microservice-based process flows
Stars: ✭ 233 (+454.76%)
Mutual labels:  orchestration
Xstate
State machines and statecharts for the modern web.
Stars: ✭ 18,300 (+43471.43%)
Mutual labels:  orchestration
paco
Paco: Prescribed automation for cloud orchestration
Stars: ✭ 32 (-23.81%)
Mutual labels:  orchestration
Ansible Pan
Ansible modules for Palo Alto Networks NGFWs
Stars: ✭ 197 (+369.05%)
Mutual labels:  orchestration
fuseml
FuseML aims to provide an MLOps framework as the medium dynamically integrating together the AI/ML tools of your choice. It's an extensible tool built through collaboration, where Data Engineers and DevOps Engineers can come together and contribute with reusable integration code.
Stars: ✭ 73 (+73.81%)
Mutual labels:  orchestration
dockerfiles
🐳 Dockerfiles for Nette Framework. Nette in Docker. (@nette)
Stars: ✭ 15 (-64.29%)
Mutual labels:  orchestration
DurableTaskMicroservices
Microservice Framework based on Durable Task Framework
Stars: ✭ 15 (-64.29%)
Mutual labels:  orchestration
Cstar
Apache Cassandra cluster orchestration tool for the command line
Stars: ✭ 242 (+476.19%)
Mutual labels:  orchestration
Ansible Role Kubernetes
Ansible Role - Kubernetes
Stars: ✭ 247 (+488.1%)
Mutual labels:  orchestration
aws-genomics-workflows
Genomics Workflows on AWS
Stars: ✭ 131 (+211.9%)
Mutual labels:  step-functions
Haven Platform
Haven is an open source Docker container management system. It integrates container, application, cluster, image, and registry management in one single place.
Stars: ✭ 223 (+430.95%)
Mutual labels:  orchestration
generic-vnfm
Repository containing the source code of the generic VNFM
Stars: ✭ 17 (-59.52%)
Mutual labels:  orchestration
K8s Bigip Ctlr
Repository for F5 Container Ingress Services for Kubernetes & OpenShift.
Stars: ✭ 204 (+385.71%)
Mutual labels:  orchestration
cb-tumblebug
Cloud-Barista Multi-Cloud Infra Management Framework
Stars: ✭ 33 (-21.43%)
Mutual labels:  orchestration
esdc-ce
Danube Cloud :: Community Edition
Stars: ✭ 101 (+140.48%)
Mutual labels:  orchestration
FactoryOrchestrator
A cross-platform system service which provides a simple way to run and manage factory line validation, developer inner-loop, diagnostics, and fault analysis workflows.
Stars: ✭ 36 (-14.29%)
Mutual labels:  orchestration
portals
Microservice that queues, creates and closes Portal instances
Stars: ✭ 26 (-38.1%)
Mutual labels:  orchestration

Orkestra

The elegance of Airflow + the power of AWS

Docs Codecov

PyPI PyPI - Downloads PyPI - License PyPI - Python Version GitHub issues Mentioned in Awesome CDK

examples/hello_orkestra.py

import random
from typing import *
from uuid import uuid4

from aws_lambda_powertools import Logger, Tracer
from pydantic import BaseModel

from orkestra import compose
from orkestra.interfaces import Duration


def dag():
    (
        generate_item
        >> add_price
        >> copy_item
        >> double_price
        >> (do_nothing, assert_false)
        >> say_hello
        >> [random_int, random_float]
        >> say_goodbye
    )


class Item(BaseModel):
    id: str
    name: str
    price: Optional[float] = None

    @classmethod
    def random(cls):
        return cls(
            id=str(uuid4()),
            name=random.choice(
                [
                    "potato",
                    "moon rock",
                    "hat",
                ]
            ),
        )


logger = Logger()

tracer = Tracer()


default_args = dict(
    enable_powertools=True,
    timeout=Duration.seconds(6),
)


@compose(**default_args)
def generate_item(event, context):
    logger.info("generating random item")
    item = Item.random().dict()
    logger.info(item)
    tracer.put_metadata("GenerateItem", "SUCCESS")
    return item


@compose(model=Item, **default_args)
def add_price(item: Item, context):
    price = 3.14
    logger.info(
        "adding price to item",
        extra={
            "item": item.dict(),
            "price": price,
        },
    )
    item.price = price
    return item.dict()


@compose(model=Item, **default_args)
def copy_item(item: Item, context) -> list:
    logger.info(item.dict())
    return [item.dict()] * 10


@compose(model=Item, is_map_job=True, **default_args)
def double_price(item: Item, context):
    item.price = item.price * 2
    return item.dict()


@compose(**default_args)
def assert_false(event, context):
    assert False


@compose(**default_args)
def do_nothing(event, context):
    logger.info({"doing": "nothing"})


@compose(**default_args)
def say_hello(event, context):
    return "hello, world"


@compose(**default_args)
def say_goodbye(event, context):
    return "goodbye"


@compose(**default_args)
def random_int(event, context):
    return random.randrange(100)


@compose(**default_args)
def random_float(event, context):
    return float(random_int(event, context))


dag()

app.py

#!/usr/bin/env python3
from aws_cdk import core as cdk

from examples.hello_orkestra import generate_item


class HelloOrkestra(cdk.Stack):
    def __init__(self, scope, id, **kwargs):

        super().__init__(scope, id, **kwargs)

        generate_item.schedule(
            self,
            expression="rate(5 minutes)",
            state_machine_name="hello_orkestra",
        )


app = cdk.App()


app.synth()

state machine

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].