diff options
author | Ondřej Nový <novy@ondrej.org> | 2016-03-23 07:23:09 +0100 |
---|---|---|
committer | Ondřej Nový <novy@ondrej.org> | 2016-03-23 07:23:09 +0100 |
commit | 63875477fa2e0a529fcf52e36a3f9cb3db861000 (patch) | |
tree | 4cd4d02c10be1a2125e1d1409312d643191a5ada /docker/api/container.py | |
parent | 0db60a1e341b25c36bebb5903f0ce87126d7eee4 (diff) |
Import python-docker_1.7.2.orig.tar.gz
Diffstat (limited to 'docker/api/container.py')
-rw-r--r-- | docker/api/container.py | 37 |
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): |