Diesel

= Mission =

The mission of Diesel is to allow OpenStack clouds to run applications. The cloud administrator can control the non functional aspects, freeing up the application developer to focus on their application and its functionality.

= Diesel = In the spirit of Google App Engine, Heroku, Engine Yard and others, Diesel runs web applications in the cloud. It can be used by cloud administrators to define the application types that they support. They are also responsible for defining through Diesel how these applications run on top of their cloud infrastructure. Diesel will control the availability and scalability of the web application deployment.

Why Diesel? It is an engine that uses heat to run. With the added bonus that Vin Diesel can be the spokesperson.

How it works
For each Diesel application type, there are heat templates associated for handling starting new instances to host applications and deploying application images to these instances. An application type can either be defined to be the sole tenant of an instance or define it to run in an instance along with other applications. Application isolation is achieved by docker or some sandboxing configuration depending on the environment. An application type example may be Ruby on Rails applications with dedicated instances.

Users can define a new application to Diesel by choosing one of the application types. Part of the application is the URL that it will expose. When a user uploads a new version of the artifact as a Glance image, Diesel will find an existing instance or create a new instance to host the application. The image will be deployed to the image and configuration will be run. This new running application instance will be added to the load balancer.

Using Ceilometer data and heat templates, application instances will be spun up or spun down based on demand and availability constraints.

Architecture
Diesel is comprised of a python application that provides an OpenStack-native ReST API that exposes the Diesel data model,

It will also include heat templates

Relations to other projects

 * Heat - Diesel uses heat to orchestrate creating new instances, scaling instances and shutting down instances
 * Trove - Diesel deployed applications may use trove to host their databases
 * Savanna - Savanna is to map reduce applications as Diesel is to web applications
 * Solum - Solum is focused on the development lifecycle for the application. The application may be one that Diesel can run.
 * Neutron - Load Balancer Service will be used. As application instances are started and stopped they will be added and removed from load balancer

Development
An initial implementation with api exposing data model will be uploaded to stackforge ASAP