Skip to content

Commit 2d7f1cf

Browse files
committed
Merge pull request #651 from docker/fix_647
Fix adapter bug + regression test
2 parents ac90a87 + 9e87884 commit 2d7f1cf

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

docker/client.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,16 @@ def __init__(self, base_url=None, version=None,
5252

5353
base_url = utils.parse_host(base_url)
5454
if base_url.startswith('http+unix://'):
55-
unix_socket_adapter = unixconn.UnixAdapter(base_url, timeout)
56-
self.mount('http+docker://', unix_socket_adapter)
55+
self._adapter = unixconn.UnixAdapter(base_url, timeout)
56+
self.mount('http+docker://', self._adapter)
5757
self.base_url = 'http+docker://localunixsocket'
5858
else:
5959
# Use SSLAdapter for the ability to specify SSL version
6060
if isinstance(tls, TLSConfig):
6161
tls.configure_client(self)
6262
elif tls:
63-
self.mount('https://', ssladapter.SSLAdapter())
63+
self._adapter = ssladapter.SSLAdapter()
64+
self.mount('https://', self._adapter)
6465
self.base_url = base_url
6566

6667
# version detection needs to be after unix adapter mounting
@@ -243,6 +244,14 @@ def _multiplexed_response_stream_helper(self, response):
243244
def api_version(self):
244245
return self._version
245246

247+
def get_adapter(self, url):
248+
try:
249+
return super(Client, self).get_adapter(url)
250+
except requests.exceptions.InvalidSchema as e:
251+
if self._adapter:
252+
return self._adapter
253+
raise e
254+
246255
@check_resource
247256
def attach(self, container, stdout=True, stderr=True,
248257
stream=False, logs=False):

tests/integration_test.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -872,8 +872,8 @@ def runTest(self):
872872
id = container['Id']
873873
self.client.start(id)
874874
self.tmp_containers.append(id)
875-
socket = self.client.attach_socket(container, ws=False)
876-
self.assertTrue(socket.fileno() > -1)
875+
sock = self.client.attach_socket(container, ws=False)
876+
self.assertTrue(sock.fileno() > -1)
877877

878878

879879
class TestPauseUnpauseContainer(BaseTestCase):
@@ -1467,12 +1467,17 @@ def test_542(self):
14671467
result = self.client.containers(all=True, trunc=True)
14681468
self.assertEqual(len(result[0]['Id']), 12)
14691469

1470+
def test_647(self):
1471+
with self.assertRaises(docker.errors.APIError):
1472+
self.client.inspect_image('gensokyo.jp//kirisame')
1473+
14701474
def test_649(self):
14711475
self.client.timeout = None
14721476
ctnr = self.client.create_container('busybox', ['sleep', '2'])
14731477
self.client.start(ctnr)
14741478
self.client.stop(ctnr)
14751479

1480+
14761481
if __name__ == '__main__':
14771482
c = docker.Client(base_url=DEFAULT_BASE_URL)
14781483
c.pull('busybox')

0 commit comments

Comments
 (0)