Dad is a server that manages other services. 


1. Create a system that supports a deploy then test model of
   development rather than code, test, deploy.
2. Provide a simple container for creating more complex production


When writing code, the process of running tests is rarely
simple. Often time supporting services need to be setup and
configured. The services can be complicated to set up and
maintain. The result is that finding consistently between a
development environment and production is very difficult.

Dad aims to reverse the process by providing a means of configuring
and maintaining a local production environment, defining the sandbox
where an application runs and allow controlling those services through
convenient APIs.

Dad does not maintain physical hardware or provide any support for
doing operating system type tasks. What it does do is provide a simple
means for orchestrating services and asking those services to perform
operations in a specified sandbox environment.


Dad is beta software. It started as an experiment in
a different conceptual model for development. There is a difficult
problem of finding agreement between applications for things like
testing. Dad avoids this problem by focusing on processes and letting
those who setup and deploy the environment consider the larger picture
(including security).


To install Dad get the source and change into the directory where it
is located. Then install it with: ::

  $ python setup.py install

Or if you will be changing code: ::

  $ python setup.py develop

Running Dad

Dad can be started with the dad.web command. It is a good idea to
start with a simple config as well. In the configs directory there is
an example that will start up a simple Python web server serving
static files. ::

  command = python -m SimpleHTTPServer $PORT

You can then start the server using this config: ::

  $ DAD_CONFIG=configs/simple.conf dad.web

This will start the dad server and a simple web server that will serve
static applications. 

The application is run from within it sandbox. You'll notice after
running the server once that a new 'dad_sandboxes' directory was
created. Inside that directory you should also find a 'simpleweb'
directory. This directory is your sandbox directory for your
application. To test this, you can add a file and see if you can
access it via the running server. ::

  $ echo 'Hello World!' > dad_sandboxes/simpleweb/hello.txt
  $ DAD_CONFIG=configs/simple.conf dad.web

Then in your web browser go to http://localhost:8000/hello.txt and see
if you see "Hello World!".

For more info what is possible in the configuration file check out the
docs directory.