summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2014-09-17 17:09:40 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2014-09-17 17:09:40 +0000
commit5f0b442df480bf50b8806ddb649d4ce51d98dddb (patch)
tree40c071b5881dd4afe4dcdb29bcc6330da53c1f72
parent7ce2622354174ead300fe84d5ede7cc011b21f34 (diff)
downloadmorph-5f0b442df480bf50b8806ddb649d4ce51d98dddb.tar.gz
docker.write: Timeout after 10 seconds (default in docker-py is 60)
-rwxr-xr-xmorphlib/exts/docker.write14
1 files changed, 10 insertions, 4 deletions
diff --git a/morphlib/exts/docker.write b/morphlib/exts/docker.write
index 4dda18b9..c8e89bc1 100755
--- a/morphlib/exts/docker.write
+++ b/morphlib/exts/docker.write
@@ -39,6 +39,10 @@ import urlparse
import morphlib.writeexts
+# Seconds to wait before raising a connection error.
+CONNECTION_TIMEOUT = 10
+
+
class ChunkedTarfileAdapter(object):
'''File-like object which allows batched writes.
@@ -205,11 +209,12 @@ class DockerWriteExtension(morphlib.writeexts.WriteExtension):
def open_local_unix_socket(self, socket):
self.status(msg='Connecting to local Docker service at %s' % socket)
- return docker.Client(base_url=socket)
+ return docker.Client(base_url=socket, timeout=CONNECTION_TIMEOUT)
def open_tcp_socket(self, netloc):
- self.status(msg='Connecting to Docker service at %s' % netloc)
- return docker.Client(base_url='http://%s' % netloc)
+ self.status(msg='Connecting to Docker service at tcp://%s' % netloc)
+ return docker.Client(base_url='tcp://%s' % netloc,
+ timeout=CONNECTION_TIMEOUT)
def setup_ssh_tunnel(self, user, host, port):
client = paramiko.SSHClient()
@@ -231,7 +236,8 @@ class DockerWriteExtension(morphlib.writeexts.WriteExtension):
raise cliapp.AppException('Failed to create SSH tunnel: %s' % e)
docker_client = docker.Client(
- base_url='http://127.0.0.1:%d' % local_bind_port)
+ base_url='http://127.0.0.1:%d' % local_bind_port,
+ timeout=CONNECTION_TIMEOUT)
return docker_client