Skip to content

Commit

Permalink
Error if docker and docker-py are simultaneously (ansible#38884)
Browse files Browse the repository at this point in the history
* Error if docker and docker-py are simultaneously installed over top of each other. Fixes ansible#36125

* Remove duplicate installed

(cherry picked from commit 68e3ff8)
  • Loading branch information
sivel committed Apr 17, 2018
1 parent 867bc89 commit c99ae77
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions lib/ansible/module_utils/docker_common.py
Expand Up @@ -56,6 +56,25 @@
HAS_DOCKER_ERROR = str(exc)
HAS_DOCKER_PY = False


# The next 2 imports ``docker.models`` and ``docker.ssladapter`` are used
# to ensure the user does not have both ``docker`` and ``docker-py`` modules
# installed, as they utilize the same namespace are are incompatible
try:
# docker
import docker.models
HAS_DOCKER_MODELS = True
except ImportError:
HAS_DOCKER_MODELS = False

try:
# docker-py
import docker.ssladapter
HAS_DOCKER_SSLADAPTER = True
except ImportError:
HAS_DOCKER_SSLADAPTER = False


DEFAULT_DOCKER_HOST = 'unix://var/run/docker.sock'
DEFAULT_TLS = False
DEFAULT_TLS_VERIFY = False
Expand Down Expand Up @@ -144,6 +163,10 @@ def __init__(self, argument_spec=None, supports_check_mode=False, mutually_exclu
required_together=required_together_params,
required_if=required_if)

if HAS_DOCKER_MODELS and HAS_DOCKER_SSLADAPTER:
self.fail("Cannot have both the docker-py and docker python modules installed together as they use the same namespace and "
"cause a corrupt installation. Please uninstall both packages, and re-install only the docker-py or docker python module")

if not HAS_DOCKER_PY:
self.fail("Failed to import docker-py - %s. Try `pip install docker-py`" % HAS_DOCKER_ERROR)

Expand Down

0 comments on commit c99ae77

Please sign in to comment.