summaryrefslogtreecommitdiff
path: root/docker/api/container.py
diff options
context:
space:
mode:
authorOndřej Nový <novy@ondrej.org>2016-03-23 07:23:09 +0100
committerOndřej Nový <novy@ondrej.org>2016-03-23 07:23:09 +0100
commit63875477fa2e0a529fcf52e36a3f9cb3db861000 (patch)
tree4cd4d02c10be1a2125e1d1409312d643191a5ada /docker/api/container.py
parent0db60a1e341b25c36bebb5903f0ce87126d7eee4 (diff)
Import python-docker_1.7.2.orig.tar.gz
Diffstat (limited to 'docker/api/container.py')
-rw-r--r--docker/api/container.py37
1 files changed, 31 insertions, 6 deletions
diff --git a/docker/api/container.py b/docker/api/container.py
index 142bd0f..ceac173 100644
--- a/docker/api/container.py
+++ b/docker/api/container.py
@@ -1,8 +1,10 @@
import six
import warnings
+from datetime import datetime
from .. import errors
from .. import utils
+from ..utils.utils import create_networking_config, create_endpoint_config
class ContainerApiMixin(object):
@@ -96,7 +98,8 @@ class ContainerApiMixin(object):
network_disabled=False, name=None, entrypoint=None,
cpu_shares=None, working_dir=None, domainname=None,
memswap_limit=None, cpuset=None, host_config=None,
- mac_address=None, labels=None, volume_driver=None):
+ mac_address=None, labels=None, volume_driver=None,
+ stop_signal=None, networking_config=None):
if isinstance(volumes, six.string_types):
volumes = [volumes, ]
@@ -111,7 +114,7 @@ class ContainerApiMixin(object):
tty, mem_limit, ports, environment, dns, volumes, volumes_from,
network_disabled, entrypoint, cpu_shares, working_dir, domainname,
memswap_limit, cpuset, host_config, mac_address, labels,
- volume_driver
+ volume_driver, stop_signal, networking_config,
)
return self.create_container_from_config(config, name)
@@ -137,6 +140,12 @@ class ContainerApiMixin(object):
kwargs['version'] = self._version
return utils.create_host_config(*args, **kwargs)
+ def create_networking_config(self, *args, **kwargs):
+ return create_networking_config(*args, **kwargs)
+
+ def create_endpoint_config(self, *args, **kwargs):
+ return create_endpoint_config(self._version, *args, **kwargs)
+
@utils.check_resource
def diff(self, container):
return self._result(
@@ -184,7 +193,7 @@ class ContainerApiMixin(object):
@utils.check_resource
def logs(self, container, stdout=True, stderr=True, stream=False,
- timestamps=False, tail='all'):
+ timestamps=False, tail='all', since=None):
if utils.compare_version('1.11', self._version) >= 0:
params = {'stderr': stderr and 1 or 0,
'stdout': stdout and 1 or 0,
@@ -192,9 +201,20 @@ class ContainerApiMixin(object):
'follow': stream and 1 or 0,
}
if utils.compare_version('1.13', self._version) >= 0:
- if tail != 'all' and (not isinstance(tail, int) or tail <= 0):
+ if tail != 'all' and (not isinstance(tail, int) or tail < 0):
tail = 'all'
params['tail'] = tail
+
+ if since is not None:
+ if utils.compare_version('1.19', self._version) < 0:
+ raise errors.InvalidVersion(
+ 'since is not supported in API < 1.19'
+ )
+ else:
+ if isinstance(since, datetime):
+ params['since'] = utils.datetime_to_timestamp(since)
+ elif (isinstance(since, int) and since > 0):
+ params['since'] = since
url = self._url("/containers/{0}/logs", container)
res = self._get(url, params=params, stream=stream)
return self._get_result(container, stream, res)
@@ -344,9 +364,14 @@ class ContainerApiMixin(object):
@utils.minimum_version('1.17')
@utils.check_resource
- def stats(self, container, decode=None):
+ def stats(self, container, decode=None, stream=True):
url = self._url("/containers/{0}/stats", container)
- return self._stream_helper(self._get(url, stream=True), decode=decode)
+ if stream:
+ return self._stream_helper(self._get(url, stream=True),
+ decode=decode)
+ else:
+ return self._result(self._get(url, params={'stream': False}),
+ json=True)
@utils.check_resource
def stop(self, container, timeout=10):