|
|
@@ -10,6 +10,7 @@ from inspect import getdoc
|
|
|
from .. import __version__
|
|
|
from ..service_collection import ServiceCollection
|
|
|
from .command import Command
|
|
|
+from .formatter import Formatter
|
|
|
from .log_printer import LogPrinter
|
|
|
|
|
|
from docker.client import APIError
|
|
|
@@ -78,10 +79,30 @@ class TopLevelCommand(Command):
|
|
|
"""
|
|
|
List services and containers.
|
|
|
|
|
|
- Usage: ps
|
|
|
+ Usage: ps [options]
|
|
|
+
|
|
|
+ Options:
|
|
|
+ -q Only display IDs
|
|
|
"""
|
|
|
- for container in self._get_containers(all=False):
|
|
|
- print container.name
|
|
|
+ if options['-q']:
|
|
|
+ for container in self.service_collection.containers(all=True):
|
|
|
+ print container.id
|
|
|
+ else:
|
|
|
+ headers = [
|
|
|
+ 'Name',
|
|
|
+ 'Command',
|
|
|
+ 'State',
|
|
|
+ 'Ports',
|
|
|
+ ]
|
|
|
+ rows = []
|
|
|
+ for container in self.service_collection.containers(all=True):
|
|
|
+ rows.append([
|
|
|
+ container.name,
|
|
|
+ container.human_readable_command,
|
|
|
+ container.human_readable_state,
|
|
|
+ container.human_readable_ports,
|
|
|
+ ])
|
|
|
+ print Formatter().table(headers, rows)
|
|
|
|
|
|
def run(self, options):
|
|
|
"""
|
|
|
@@ -146,13 +167,10 @@ class TopLevelCommand(Command):
|
|
|
|
|
|
Usage: logs
|
|
|
"""
|
|
|
- containers = self._get_containers(all=False)
|
|
|
+ containers = self.service_collection.containers(all=False)
|
|
|
print "Attaching to", list_containers(containers)
|
|
|
LogPrinter(containers, attach_params={'logs': True}).run()
|
|
|
|
|
|
- def _get_containers(self, all):
|
|
|
- return [c for s in self.service_collection for c in s.containers(all=all)]
|
|
|
-
|
|
|
|
|
|
def list_containers(containers):
|
|
|
return ", ".join(c.name for c in containers)
|