mirror of https://github.com/docker/docker-py.git
Fix Unix socket adapter bug with double slash in path + regression test
This commit is contained in:
parent
c8c957c983
commit
9e87884ba8
|
@ -52,15 +52,16 @@ class Client(requests.Session):
|
||||||
|
|
||||||
base_url = utils.parse_host(base_url)
|
base_url = utils.parse_host(base_url)
|
||||||
if base_url.startswith('http+unix://'):
|
if base_url.startswith('http+unix://'):
|
||||||
unix_socket_adapter = unixconn.UnixAdapter(base_url, timeout)
|
self._adapter = unixconn.UnixAdapter(base_url, timeout)
|
||||||
self.mount('http+docker://', unix_socket_adapter)
|
self.mount('http+docker://', self._adapter)
|
||||||
self.base_url = 'http+docker://localunixsocket'
|
self.base_url = 'http+docker://localunixsocket'
|
||||||
else:
|
else:
|
||||||
# Use SSLAdapter for the ability to specify SSL version
|
# Use SSLAdapter for the ability to specify SSL version
|
||||||
if isinstance(tls, TLSConfig):
|
if isinstance(tls, TLSConfig):
|
||||||
tls.configure_client(self)
|
tls.configure_client(self)
|
||||||
elif tls:
|
elif tls:
|
||||||
self.mount('https://', ssladapter.SSLAdapter())
|
self._adapter = ssladapter.SSLAdapter()
|
||||||
|
self.mount('https://', self._adapter)
|
||||||
self.base_url = base_url
|
self.base_url = base_url
|
||||||
|
|
||||||
# version detection needs to be after unix adapter mounting
|
# version detection needs to be after unix adapter mounting
|
||||||
|
@ -243,6 +244,14 @@ class Client(requests.Session):
|
||||||
def api_version(self):
|
def api_version(self):
|
||||||
return self._version
|
return self._version
|
||||||
|
|
||||||
|
def get_adapter(self, url):
|
||||||
|
try:
|
||||||
|
return super(Client, self).get_adapter(url)
|
||||||
|
except requests.exceptions.InvalidSchema as e:
|
||||||
|
if self._adapter:
|
||||||
|
return self._adapter
|
||||||
|
raise e
|
||||||
|
|
||||||
@check_resource
|
@check_resource
|
||||||
def attach(self, container, stdout=True, stderr=True,
|
def attach(self, container, stdout=True, stderr=True,
|
||||||
stream=False, logs=False):
|
stream=False, logs=False):
|
||||||
|
|
|
@ -872,8 +872,8 @@ class TestRunContainerStreaming(BaseTestCase):
|
||||||
id = container['Id']
|
id = container['Id']
|
||||||
self.client.start(id)
|
self.client.start(id)
|
||||||
self.tmp_containers.append(id)
|
self.tmp_containers.append(id)
|
||||||
socket = self.client.attach_socket(container, ws=False)
|
sock = self.client.attach_socket(container, ws=False)
|
||||||
self.assertTrue(socket.fileno() > -1)
|
self.assertTrue(sock.fileno() > -1)
|
||||||
|
|
||||||
|
|
||||||
class TestPauseUnpauseContainer(BaseTestCase):
|
class TestPauseUnpauseContainer(BaseTestCase):
|
||||||
|
@ -1467,12 +1467,17 @@ class TestRegressions(BaseTestCase):
|
||||||
result = self.client.containers(all=True, trunc=True)
|
result = self.client.containers(all=True, trunc=True)
|
||||||
self.assertEqual(len(result[0]['Id']), 12)
|
self.assertEqual(len(result[0]['Id']), 12)
|
||||||
|
|
||||||
|
def test_647(self):
|
||||||
|
with self.assertRaises(docker.errors.APIError):
|
||||||
|
self.client.inspect_image('gensokyo.jp//kirisame')
|
||||||
|
|
||||||
def test_649(self):
|
def test_649(self):
|
||||||
self.client.timeout = None
|
self.client.timeout = None
|
||||||
ctnr = self.client.create_container('busybox', ['sleep', '2'])
|
ctnr = self.client.create_container('busybox', ['sleep', '2'])
|
||||||
self.client.start(ctnr)
|
self.client.start(ctnr)
|
||||||
self.client.stop(ctnr)
|
self.client.stop(ctnr)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
c = docker.Client(base_url=DEFAULT_BASE_URL)
|
c = docker.Client(base_url=DEFAULT_BASE_URL)
|
||||||
c.pull('busybox')
|
c.pull('busybox')
|
||||||
|
|
Loading…
Reference in New Issue