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)
|
||||
if base_url.startswith('http+unix://'):
|
||||
unix_socket_adapter = unixconn.UnixAdapter(base_url, timeout)
|
||||
self.mount('http+docker://', unix_socket_adapter)
|
||||
self._adapter = unixconn.UnixAdapter(base_url, timeout)
|
||||
self.mount('http+docker://', self._adapter)
|
||||
self.base_url = 'http+docker://localunixsocket'
|
||||
else:
|
||||
# Use SSLAdapter for the ability to specify SSL version
|
||||
if isinstance(tls, TLSConfig):
|
||||
tls.configure_client(self)
|
||||
elif tls:
|
||||
self.mount('https://', ssladapter.SSLAdapter())
|
||||
self._adapter = ssladapter.SSLAdapter()
|
||||
self.mount('https://', self._adapter)
|
||||
self.base_url = base_url
|
||||
|
||||
# version detection needs to be after unix adapter mounting
|
||||
|
@ -243,6 +244,14 @@ class Client(requests.Session):
|
|||
def api_version(self):
|
||||
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
|
||||
def attach(self, container, stdout=True, stderr=True,
|
||||
stream=False, logs=False):
|
||||
|
|
|
@ -872,8 +872,8 @@ class TestRunContainerStreaming(BaseTestCase):
|
|||
id = container['Id']
|
||||
self.client.start(id)
|
||||
self.tmp_containers.append(id)
|
||||
socket = self.client.attach_socket(container, ws=False)
|
||||
self.assertTrue(socket.fileno() > -1)
|
||||
sock = self.client.attach_socket(container, ws=False)
|
||||
self.assertTrue(sock.fileno() > -1)
|
||||
|
||||
|
||||
class TestPauseUnpauseContainer(BaseTestCase):
|
||||
|
@ -1467,12 +1467,17 @@ class TestRegressions(BaseTestCase):
|
|||
result = self.client.containers(all=True, trunc=True)
|
||||
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):
|
||||
self.client.timeout = None
|
||||
ctnr = self.client.create_container('busybox', ['sleep', '2'])
|
||||
self.client.start(ctnr)
|
||||
self.client.stop(ctnr)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
c = docker.Client(base_url=DEFAULT_BASE_URL)
|
||||
c.pull('busybox')
|
||||
|
|
Loading…
Reference in New Issue