summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2018-01-29 16:35:19 -0800
committerJoffrey F <joffrey@docker.com>2018-01-29 16:35:19 -0800
commit4ff296247b4ed9c4afbb0b5293bd4deecb4fe708 (patch)
tree5ed58a4e9e536fc5acc3f68f4dd65ea8be671309
parent5728eebf79b0f43e7033952fbf8f8e4b7f7bef20 (diff)
parent947c47f609bf7fc97b0117aef65b1d035a19f24f (diff)
downloaddocker-py-4ff296247b4ed9c4afbb0b5293bd4deecb4fe708.tar.gz
Merge branch 'funkyfuture-container_exec_run'
-rw-r--r--docker/models/containers.py22
1 files changed, 16 insertions, 6 deletions
diff --git a/docker/models/containers.py b/docker/models/containers.py
index 9644b00..79fd71d 100644
--- a/docker/models/containers.py
+++ b/docker/models/containers.py
@@ -1,4 +1,5 @@
import copy
+from collections import namedtuple
from ..api import APIClient
from ..errors import (ContainerError, ImageNotFound,
@@ -150,9 +151,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 +172,13 @@ 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)
+
+ return ExecResult(
+ self.client.api.exec_inspect(resp['Id'])['ExitCode'],
+ exec_output
+ )
def export(self):
"""
@@ -1004,3 +1009,8 @@ def _host_volume_from_bind(bind):
return bits[0]
else:
return bits[1]
+
+
+ExecResult = namedtuple('ExecResult', 'exit_code,output')
+""" A result of Container.exec_run with the properties ``exit_code`` and
+ ``output``. """