Correctly clear line before printing container log output

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Throw more explicit exceptions in guestutils

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
docker-py 0.3.0 finally release, we can rely on it for deps now

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Fixes #14

Allow defining multiple ports on the same exposed port but with
potentially different external mappings (for example to expose the same
port on more than one interface of the host, but not all interfaces).

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Set detach to True when creating containers

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
adds docker_endpoint parameter to ships
Merge pull request #20 from stefanfoulis/feature/custom-docker-api-endpoint

Add docker_endpoint parameter to ships
Handle empty registries list. Fixes #26

If the registries section is left empty, PyYAML returns None as the
actual value (instead of an empty dictionary, which is normal because
it can't guess it's supposed to be one), so the default value to
_config.get() wasn't used. This change makes sure that _registries will
be a dictionary even if it's empty. Also fix a few Python 3
compatibility issues (but there probably are still many more).

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
fixed entry_points scripts for setup.py

ArgumentParser.parse_args takes arguments from sys.argv by default, so
by using args=None we can call maestro.__main__:main using setuptools
entry_points, creating a "maestro" executable instead of having to call
"python -m maestro", which is unnecessarily verbose and doesn't play
well with bash_completion
Merge pull request #28 from fcoelho/console-scripts

Fixed entry_points scripts for setup.py
Implement lifecycle state checks

Note: this is a breaking orchestration change. Make sure you add
'running' lifecycle state checks to your YAML environment files to
restore the previous behavior. See README.md for details.

This change gives Maestro the ability to perform arbitrary checks in
addition to checking the status of the created container. The only
implemented check for now is TCP port pinging, but script execution,
simple wait or other types of checks can be implemented in that same
framework.

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
stop_timeout container option support
Merge pull request #31 from nikicat/stop-timeout

stop_timeout container option support
Lifecycle checker improvements

* Add factory method for parsing and creating lifecycle helpers/checks
* Execute checks concurrently in a thread pool
* Add unit tests and refactor code

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Maestro 0.1.7

* Deep expend of environment variable list values.
* Pre-processing of the YAML environment description file with Jinja2
* Pass in specified volumes to create_container() in case the image's
  Dockerfile didn't define them.
* Support service-level environment definitions that apply to all
  instances.
* Fix port bindings passed to start(), more precise description of
  internal/external ports and how they are placed in the environment.
* Improved and extended documentation.
* Use docker-py 0.3.x.
* More unit tests and progress towards Python3 compatibility.

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
memory and cpu limits support
Merge pull request #30 from nikicat/mem-limit

Memory and CPU limits support
Fixes #36: image details parsing

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Use Jinja2 filesystem loader and with extension

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Maestro 0.1.7.1

Intermediate release with recent fixes and improved Jinja2 flexibility.

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>