summaryrefslogtreecommitdiff
path: root/docker
diff options
context:
space:
mode:
authorTomas Tomecek <ttomecek@redhat.com>2015-11-14 14:12:48 +0100
committerTomas Tomecek <ttomecek@redhat.com>2015-12-03 11:07:11 +0100
commita9a538abaf553ba985e6ed667e390e5aa2352c55 (patch)
tree6a30273da262e036194eda46a376da13ef0d9f43 /docker
parent2c3af6ca8e07014601e0df03ed7db401e6f204f2 (diff)
downloaddocker-py-a9a538abaf553ba985e6ed667e390e5aa2352c55.tar.gz
allow interactive exec
Signed-off-by: Tomas Tomecek <ttomecek@redhat.com>
Diffstat (limited to 'docker')
-rw-r--r--docker/api/exec_api.py15
-rw-r--r--docker/utils/__init__.py4
2 files changed, 13 insertions, 6 deletions
diff --git a/docker/api/exec_api.py b/docker/api/exec_api.py
index e64a40c..f0e4afa 100644
--- a/docker/api/exec_api.py
+++ b/docker/api/exec_api.py
@@ -7,8 +7,8 @@ from .. import utils
class ExecApiMixin(object):
@utils.minimum_version('1.15')
@utils.check_resource
- def exec_create(self, container, cmd, stdout=True, stderr=True, tty=False,
- privileged=False, user=''):
+ def exec_create(self, container, cmd, stdout=True, stderr=True,
+ stdin=False, tty=False, privileged=False, user=''):
if privileged and utils.compare_version('1.19', self._version) < 0:
raise errors.InvalidVersion(
'Privileged exec is not supported in API < 1.19'
@@ -25,7 +25,7 @@ class ExecApiMixin(object):
'User': user,
'Privileged': privileged,
'Tty': tty,
- 'AttachStdin': False,
+ 'AttachStdin': stdin,
'AttachStdout': stdout,
'AttachStderr': stderr,
'Cmd': cmd
@@ -53,7 +53,11 @@ class ExecApiMixin(object):
self._raise_for_status(res)
@utils.minimum_version('1.15')
- def exec_start(self, exec_id, detach=False, tty=False, stream=False):
+ def exec_start(self, exec_id, detach=False, tty=False, stream=False,
+ socket=False):
+ # we want opened socket if socket == True
+ if socket:
+ stream = True
if isinstance(exec_id, dict):
exec_id = exec_id.get('Id')
@@ -65,4 +69,7 @@ class ExecApiMixin(object):
res = self._post_json(
self._url('/exec/{0}/start', exec_id), data=data, stream=stream
)
+
+ if socket:
+ return self._get_raw_response_socket(res)
return self._get_result_tty(stream, res, tty)
diff --git a/docker/utils/__init__.py b/docker/utils/__init__.py
index bcbf568..e86b724 100644
--- a/docker/utils/__init__.py
+++ b/docker/utils/__init__.py
@@ -4,7 +4,7 @@ from .utils import (
kwargs_from_env, convert_filters, datetime_to_timestamp, create_host_config,
create_container_config, parse_bytes, ping_registry, parse_env_file,
version_lt, version_gte, decode_json_header, split_command,
-) # flake8: noqa
+) # flake8: noqa
from .types import Ulimit, LogConfig # flake8: noqa
-from .decorators import check_resource, minimum_version #flake8: noqa
+from .decorators import check_resource, minimum_version # flake8: noqa