markfisher/xdzk — pull request #12 by pperalta (2014-02-27 21:57:38+00:00)
Title: Domain classes, stream/module deployments

Introduced Module and Stream domain classes. See second commit d996145. The stream/module deployment flow is as follows:

#### 1) Initial Stream Request
The admin server creates the following node:

`/xd/streams/`

#### 2) Admin Leader Stream Preparation

The leader admin server "prepares" the stream by expanding out the expected deployment:

`/xd/streams//source/`
`/xd/streams//sink/`

#### 3) Targeted Container Deployment

The leader admin server issues deployment request to specific container:

`/xd/deployments/`

Since the modules have to be deployed in a specific order, the leader blocks until the deployment by the container is complete.

#### 4) Container Accepts Deployment

The container server writes an ephemeral node under the module that it just deployed under the `/xd/streams/.../` node. This indicates that the module was deployed by the container.

#### 5) Admin Leader Continues Deployments

When the container writes the expected node, the leader will continue requests for deploying the rest of the modules.

#### Misc Improvements

* Jackson 2.2.2 was introduced for node data serialization. Right now we only support string key/value pairs
* New methods for path string creation were added to the `Paths` utility class