diff options
author | Joffrey F <joffrey@docker.com> | 2018-01-29 16:28:58 -0800 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2018-01-29 16:29:04 -0800 |
commit | 600cc15cbc6d8b98e5d542820480fe9cb379e8de (patch) | |
tree | 8f5ea671872c344d6b6f44bb51b2e68d6644f666 | |
parent | 5728eebf79b0f43e7033952fbf8f8e4b7f7bef20 (diff) | |
parent | a63b726d40096e45ebb0598511573efea13b320f (diff) | |
download | docker-py-600cc15cbc6d8b98e5d542820480fe9cb379e8de.tar.gz |
Merge branch 'container_exec_run' of https://github.com/funkyfuture/docker-py into funkyfuture-container_exec_run
Signed-off-by: Joffrey F <joffrey@docker.com>
-rw-r--r-- | docker/models/containers.py | 17 | ||||
-rw-r--r-- | docker/types/__init__.py | 3 | ||||
-rw-r--r-- | docker/types/containers.py | 6 |
3 files changed, 18 insertions, 8 deletions
diff --git a/docker/models/containers.py b/docker/models/containers.py index 9644b00..ed3f7ac 100644 --- a/docker/models/containers.py +++ b/docker/models/containers.py @@ -3,7 +3,7 @@ import copy from ..api import APIClient from ..errors import (ContainerError, ImageNotFound, create_unexpected_kwargs_error) -from ..types import HostConfig +from ..types import ExecResult, HostConfig from ..utils import version_gte from .images import Image from .resource import Collection, Model @@ -150,9 +150,10 @@ class Container(Model): workdir (str): Path to working directory for this exec session Returns: - (tuple): A tuple of (exit_code, output) + (ExecResult): A tuple of (exit_code, output) exit_code: (int): - Exit code for the executed command + Exit code for the executed command or ``None`` if + either ``stream```or ``socket`` is ``True``. output: (generator or str): If ``stream=True``, a generator yielding response chunks. If ``socket=True``, a socket object for the connection. @@ -170,10 +171,12 @@ class Container(Model): exec_output = self.client.api.exec_start( resp['Id'], detach=detach, tty=tty, stream=stream, socket=socket ) - exit_code = 0 - if stream is False: - exit_code = self.client.api.exec_inspect(resp['Id'])['ExitCode'] - return (exit_code, exec_output) + if socket or stream: + return ExecResult(None, exec_output) + else: + return ExecResult( + self.client.api.exec_inspect(resp['Id'])['ExitCode'], + exec_output) def export(self): """ diff --git a/docker/types/__init__.py b/docker/types/__init__.py index 39c93e3..bd19638 100644 --- a/docker/types/__init__.py +++ b/docker/types/__init__.py @@ -1,5 +1,6 @@ # flake8: noqa -from .containers import ContainerConfig, HostConfig, LogConfig, Ulimit +from .containers import (ContainerConfig, ExecResult, HostConfig, LogConfig, + Ulimit) from .healthcheck import Healthcheck from .networks import EndpointConfig, IPAMConfig, IPAMPool, NetworkingConfig from .services import ( diff --git a/docker/types/containers.py b/docker/types/containers.py index 15dd86c..8d1f271 100644 --- a/docker/types/containers.py +++ b/docker/types/containers.py @@ -1,3 +1,4 @@ +from collections import namedtuple import six import warnings @@ -11,6 +12,11 @@ from .base import DictType from .healthcheck import Healthcheck +ExecResult = namedtuple('ExecResult', 'exit_code,output') +""" A result of Container.exec_run with the properties ``exit_code`` and + ``output``. """ + + class LogConfigTypesEnum(object): _values = ( 'json-file', |