Merge branch 'funkyfuture-container_exec_run'

This commit is contained in:
Joffrey F 2018-01-29 16:35:19 -08:00
commit 4ff296247b
1 changed files with 16 additions and 6 deletions

View File

@ -1,4 +1,5 @@
import copy import copy
from collections import namedtuple
from ..api import APIClient from ..api import APIClient
from ..errors import (ContainerError, ImageNotFound, from ..errors import (ContainerError, ImageNotFound,
@ -150,9 +151,10 @@ class Container(Model):
workdir (str): Path to working directory for this exec session workdir (str): Path to working directory for this exec session
Returns: Returns:
(tuple): A tuple of (exit_code, output) (ExecResult): A tuple of (exit_code, output)
exit_code: (int): 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): output: (generator or str):
If ``stream=True``, a generator yielding response chunks. If ``stream=True``, a generator yielding response chunks.
If ``socket=True``, a socket object for the connection. If ``socket=True``, a socket object for the connection.
@ -170,10 +172,13 @@ class Container(Model):
exec_output = self.client.api.exec_start( exec_output = self.client.api.exec_start(
resp['Id'], detach=detach, tty=tty, stream=stream, socket=socket resp['Id'], detach=detach, tty=tty, stream=stream, socket=socket
) )
exit_code = 0 if socket or stream:
if stream is False: return ExecResult(None, exec_output)
exit_code = self.client.api.exec_inspect(resp['Id'])['ExitCode']
return (exit_code, exec_output) return ExecResult(
self.client.api.exec_inspect(resp['Id'])['ExitCode'],
exec_output
)
def export(self): def export(self):
""" """
@ -1004,3 +1009,8 @@ def _host_volume_from_bind(bind):
return bits[0] return bits[0]
else: else:
return bits[1] return bits[1]
ExecResult = namedtuple('ExecResult', 'exit_code,output')
""" A result of Container.exec_run with the properties ``exit_code`` and
``output``. """