summaryrefslogtreecommitdiff
path: root/compose/cli/errors.py
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2017-10-16 12:41:29 -0700
committerJoffrey F <f.joffrey@gmail.com>2017-10-16 13:43:57 -0700
commitd2cbf33412b7386237e870f9232f14c6353d279f (patch)
tree47ac19464f5b970af08298d6ee73f57286f732c0 /compose/cli/errors.py
parentaaa0773b4b6ce44a3c1494d8eb2e25406f0593f9 (diff)
Add specific handling for pywintypes.error
Signed-off-by: Joffrey F <joffrey@docker.com>
Diffstat (limited to 'compose/cli/errors.py')
-rw-r--r--compose/cli/errors.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/compose/cli/errors.py b/compose/cli/errors.py
index 23e065c9..1506aa66 100644
--- a/compose/cli/errors.py
+++ b/compose/cli/errors.py
@@ -57,6 +57,26 @@ def handle_connection_errors(client):
except (ReadTimeout, socket.timeout) as e:
log_timeout_error(client.timeout)
raise ConnectionError()
+ except Exception as e:
+ if is_windows():
+ import pywintypes
+ if isinstance(e, pywintypes.error):
+ log_windows_pipe_error(e)
+ raise ConnectionError()
+ raise
+
+
+def log_windows_pipe_error(exc):
+ if exc.winerror == 232: # https://github.com/docker/compose/issues/5005
+ log.error(
+ "The current Compose file version is not compatible with your engine version. "
+ "Please upgrade your Compose file to a more recent version, or set "
+ "a COMPOSE_API_VERSION in your environment."
+ )
+ else:
+ log.error(
+ "Windows named pipe error: {} (code: {})".format(exc.strerror, exc.winerror)
+ )
def log_timeout_error(timeout):