Change 'cmd' to 'command' in instance spec

'cmd' still accepted for now, will be deprecated in a subsequent
release. Documentation updated.

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Add ability to explicitly set the config.
Merge pull request #58 from wt/allow_expicit_config

Add ability to explicitly set the config.
Complete rework of the argument parser

Use subparsers to correctly isolate individual commands' options and get
a generally easier to understand usage help string.

One downside is that due to a bug in Python, it's not possible to have
subparsers be optional, so it's not possible to default to the 'status'
command when no command is specified.

The completion handler was also moved as a command of Maestro
('complete'), in part because of the aforementioned limitation.

Fixes #50.

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Refactor orchestration plays using container tasks

Extract out the logic that acts on individual containers into tasks that
are scheduled and used by orchestration plays to operate on containers.
This help seperate the logic between things that touch containers, and
things that orchestrate containers; it also prepares for the rolling
restart orchestration play, which needs to both stop and start
individual containers so we want to re-use that logic.

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
More task control improvements

 * Added ability to include dependencies, but ignore dependency order in
   orchestration plays.
 * Added 'clean' command to remove stopped containers, use RemoveTask in
   both 'clean' and 'start' (before creating the new container)
 * Flake8 compliance fixes

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Implement restart command using new tasks

Bring back the restart command with finer control, including a
configurable delay between each container restart, and a delay between
the stop and the start of each container.

Note that if no concurrency limit is specified during a restart,
zero-downtime cannot be guaranteed as, for example, all instances of a
given service will restart at the same time.

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Fix refresh images for restart command

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Output fixes for status -F (full status)

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Workaround for Python multiprocessing/threading bug

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Switch blue to cyan for better readability

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Documentation about dependency order and constraints

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

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Status play doesn't need to respect dependencies

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Display how long a container has been up/down

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Introduce audit trail functionality

Draft implementation of audit trail support, to notify something/someone
that actions are being taken against an environment by Maestro. Supports
HipChat (via python-simple-hipchat) and log file for now.

Signed-off-by: Maxime Petazzoni <max@signalfuse.com>
Wording fix in time_ago

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