diff options
author | SVN-Git Migration <python-modules-team@lists.alioth.debian.org> | 2015-10-08 11:55:19 -0700 |
---|---|---|
committer | SVN-Git Migration <python-modules-team@lists.alioth.debian.org> | 2015-10-08 11:55:19 -0700 |
commit | dbb06b3ad559090aee9d0de2bd08355ac090fe4a (patch) | |
tree | f468d73364e43c04df68d5c16afa51d9463ef30b /docker | |
parent | 8aa3dbb1e6082c40bb1493e773afa08e509393f3 (diff) |
Imported Upstream version 0.5.1
Diffstat (limited to 'docker')
-rw-r--r-- | docker/client.py | 3 | ||||
-rw-r--r-- | docker/ssladapter/ssladapter.py | 18 | ||||
-rw-r--r-- | docker/tls.py | 8 | ||||
-rw-r--r-- | docker/version.py | 2 |
4 files changed, 22 insertions, 9 deletions
diff --git a/docker/client.py b/docker/client.py index 49e85dd..1ff43cc 100644 --- a/docker/client.py +++ b/docker/client.py @@ -17,6 +17,7 @@ import os import re import shlex import struct +from socket import socket as socket_obj import warnings import requests @@ -264,7 +265,7 @@ class Client(requests.Session): def _stream_helper(self, response): """Generator for data coming from a chunked-encoded HTTP response.""" - socket_fp = self._get_raw_response_socket(response) + socket_fp = socket_obj(_sock=self._get_raw_response_socket(response)) socket_fp.setblocking(1) socket = socket_fp.makefile() while True: diff --git a/docker/ssladapter/ssladapter.py b/docker/ssladapter/ssladapter.py index a4c11de..e243d07 100644 --- a/docker/ssladapter/ssladapter.py +++ b/docker/ssladapter/ssladapter.py @@ -15,19 +15,27 @@ PoolManager = urllib3.poolmanager.PoolManager class SSLAdapter(HTTPAdapter): '''An HTTPS Transport Adapter that uses an arbitrary SSL version.''' - def __init__(self, ssl_version=None, **kwargs): + def __init__(self, ssl_version=None, assert_hostname=None, **kwargs): self.ssl_version = ssl_version + self.assert_hostname = assert_hostname super(SSLAdapter, self).__init__(**kwargs) def init_poolmanager(self, connections, maxsize, block=False): - urllib_ver = urllib3.__version__.split('-')[0] kwargs = { 'num_pools': connections, 'maxsize': maxsize, - 'block': block + 'block': block, + 'assert_hostname': self.assert_hostname, } - if urllib3 and urllib_ver == 'dev' and \ - StrictVersion(urllib_ver) > StrictVersion('1.5'): + if self.can_override_ssl_version(): kwargs['ssl_version'] = self.ssl_version self.poolmanager = PoolManager(**kwargs) + + def can_override_ssl_version(self): + urllib_ver = urllib3.__version__.split('-')[0] + if urllib_ver is None: + return False + if urllib_ver == 'dev': + return True + return StrictVersion(urllib_ver) > StrictVersion('1.5') diff --git a/docker/tls.py b/docker/tls.py index 531f4d6..0e78984 100644 --- a/docker/tls.py +++ b/docker/tls.py @@ -10,7 +10,7 @@ class TLSConfig(object): ssl_version = None def __init__(self, client_cert=None, ca_cert=None, verify=None, - ssl_version=None): + ssl_version=None, assert_hostname=None): # Argument compatibility/mapping with # http://docs.docker.com/examples/https/ # This diverges from the Docker CLI in that users can specify 'tls' @@ -20,6 +20,7 @@ class TLSConfig(object): # urllib3 sets a default ssl_version if ssl_version is None # http://tinyurl.com/kxga8hb self.ssl_version = ssl_version + self.assert_hostname = assert_hostname # "tls" and "tls_verify" must have both or neither cert/key files # In either case, Alert the user when both are expected, but any are @@ -65,4 +66,7 @@ class TLSConfig(object): client.verify = self.verify if self.cert: client.cert = self.cert - client.mount('https://', ssladapter.SSLAdapter(self.ssl_version)) + client.mount('https://', ssladapter.SSLAdapter( + ssl_version=self.ssl_version, + assert_hostname=self.assert_hostname, + )) diff --git a/docker/version.py b/docker/version.py index 819a300..abe1e1c 100644 --- a/docker/version.py +++ b/docker/version.py @@ -1 +1 @@ -version = "0.5.0" +version = "0.5.1" |