Jump to: navigation, search

Difference between revisions of "Mistral/Blueprints/PoC"

(Design)
(Design)
Line 26: Line 26:
  
 
==== Mistral Python Client ====
 
==== Mistral Python Client ====
 +
 +
Standard python client that encapsulates all the HTTP protocol interactions with Mistral REST API and provides a convenient python interface to work with Mistral service.
  
 
==== Demo App ====
 
==== Demo App ====
 +
 +
Demo App is an application written to demonstrate Mistral PoC capabilities. It will be publishing a workflow into Mistral and have Mistral run it at a certain time (on-demand and on-schedule). Some of the workflow actions may be handled by the application itself (via exposing HTTP endpoints).
 +
 +
==== DSL Parser ====
 +
 +
Takes a workbook definition written in Mistral DSL creates all the domain model objects so that other components can use them instead of a raw DSL. It can also be responsible for validating definitions according to DSL grammar.
  
 
==== Event Scheduler ====
 
==== Event Scheduler ====
  
==== DSL Parser ====
+
This is the component responsible for executing workflows at a right time. Strictly speaking, it's not supposed to execute workflows itself, it should tell Workflow Execution to do that. Event Scheduler only reads necessary information about events from a workbook (DSL) and maintains the queue of upcoming events.
  
 
==== Workflow Execution ====
 
==== Workflow Execution ====
 +
 +
The core component of Mistral. It takes commands from other components to run workflows (given a workbook name and a target task) assuming that all necessary objects are stored in DB.

Revision as of 06:13, 28 November 2013

Mistral Proof of Concept

We need to create a small PoC project illustrating main Mistral ideas.

Etherpads

Requirements

Capabilities implemented in the scope of PoC should include:

  • Basic Workflow Engine capable of analyzing task graphs, resolving dependencies between tasks and processing them in the right order
  • Simple storage (RDBMS for now) access layer to it for storing task graphs and workflow execution states
  • Basic DSL for defining tasks, task dependencies, actions and action transports (currently HTTP and AMQP)
  • REST API for uploading task graphs and executing workflows
  • Necessary test suite to validate the above functionality

Design

Picture 1. Mistral PoC Architecture

The suggested design consists of the components described below. For PoC we suggest running all the components within the same process but design them so that we can easily split them moving forward (arrows on the picture will become network interactions).

Mistral REST API

Mistral API server built with Pecan/WSME. Here's the etherpad that describes the suggested API: https://etherpad.openstack.org/p/MistralAPISpecification

The main capability of the API server is to provide actions for uploading workbooks (description of tasks, actions etc. written in Mistral DSL) and running workflows.

Mistral Python Client

Standard python client that encapsulates all the HTTP protocol interactions with Mistral REST API and provides a convenient python interface to work with Mistral service.

Demo App

Demo App is an application written to demonstrate Mistral PoC capabilities. It will be publishing a workflow into Mistral and have Mistral run it at a certain time (on-demand and on-schedule). Some of the workflow actions may be handled by the application itself (via exposing HTTP endpoints).

DSL Parser

Takes a workbook definition written in Mistral DSL creates all the domain model objects so that other components can use them instead of a raw DSL. It can also be responsible for validating definitions according to DSL grammar.

Event Scheduler

This is the component responsible for executing workflows at a right time. Strictly speaking, it's not supposed to execute workflows itself, it should tell Workflow Execution to do that. Event Scheduler only reads necessary information about events from a workbook (DSL) and maintains the queue of upcoming events.

Workflow Execution

The core component of Mistral. It takes commands from other components to run workflows (given a workbook name and a target task) assuming that all necessary objects are stored in DB.