docker_* modules: unify docker module version checks (#47046)

* Unify docker module version checks.

* Improve messages depending on required docker-py versions.

* Linting.
This commit is contained in:
Felix Fontein 2018-10-18 11:51:58 +02:00 committed by John R Barker
parent 4991ef30c2
commit 32e8251f86
11 changed files with 54 additions and 28 deletions

View file

@ -2522,7 +2522,8 @@ def main():
client = AnsibleDockerClientContainer(
argument_spec=argument_spec,
required_if=required_if,
supports_check_mode=True
supports_check_mode=True,
min_docker_api_version='1.20',
)
cm = ContainerManager(client)

View file

@ -598,6 +598,7 @@ def main():
client = AnsibleDockerClient(
argument_spec=argument_spec,
supports_check_mode=True,
min_docker_api_version='1.20',
)
results = dict(

View file

@ -232,7 +232,8 @@ def main():
client = AnsibleDockerClient(
argument_spec=argument_spec,
supports_check_mode=True
supports_check_mode=True,
min_docker_api_version='1.20',
)
results = dict(

View file

@ -311,7 +311,8 @@ def main():
client = AnsibleDockerClient(
argument_spec=argument_spec,
supports_check_mode=True,
required_if=required_if
required_if=required_if,
min_docker_api_version='1.20',
)
results = dict(

View file

@ -163,7 +163,7 @@ try:
from docker import utils
if HAS_DOCKER_PY_2 or HAS_DOCKER_PY_3:
from docker.types import IPAMPool, IPAMConfig
except:
except Exception as dummy:
# missing docker-py handled in ansible.module_utils.docker_common
pass
@ -384,6 +384,7 @@ def main():
client = AnsibleDockerClient(
argument_spec=argument_spec,
supports_check_mode=True
# "The docker server >= 1.9.0"
)
cm = DockerNetworkManager(client)

View file

@ -272,7 +272,9 @@ def main():
client = AnsibleDockerClient(
argument_spec=argument_spec,
supports_check_mode=True,
required_if=required_if
required_if=required_if,
min_docker_version='2.1.0',
min_docker_api_version='1.25',
)
results = dict(

View file

@ -1061,7 +1061,8 @@ def main():
client = AnsibleDockerClient(
argument_spec=argument_spec,
mutually_exclusive=mutually_exclusive,
supports_check_mode=True
supports_check_mode=True,
min_docker_api_version='1.20',
)
result = ContainerManager(client).exec_module()

View file

@ -508,7 +508,9 @@ def main():
client = AnsibleDockerClient(
argument_spec=argument_spec,
supports_check_mode=True,
required_if=required_if
required_if=required_if,
min_docker_version='2.6.0',
min_docker_api_version='1.35',
)
results = dict(

View file

@ -277,6 +277,10 @@ extends_documentation_fragment:
- docker
requirements:
- "docker-py >= 2.0"
- "Please note that the L(docker-py,https://pypi.org/project/docker-py/) Python
module has been superseded by L(docker,https://pypi.org/project/docker/)
(see L(here,https://github.com/docker/docker-py/issues/1310) for details).
Version 2.1.0 or newer is only available with the C(docker) module."
'''
RETURN = '''
@ -462,13 +466,7 @@ try:
from distutils.version import LooseVersion
from docker import utils
from docker import types
from docker import __version__ as docker_version
if LooseVersion(docker_version) >= LooseVersion('2.0.0'):
from docker.types import Ulimit, LogConfig
HAS_DOCKER_PY_2 = True
else:
from docker.utils.types import Ulimit, LogConfig
except:
except Exception as dummy:
# missing docker-py handled in ansible.module_utils.docker
pass
@ -839,7 +837,7 @@ class DockerService(DockerBaseClass):
network_id = None
try:
network_id = list(filter(lambda n: n['name'] == network_name, docker_networks))[0]['id']
except:
except Exception as dummy:
pass
if network_id:
networks.append({'Target': network_id})
@ -1156,15 +1154,10 @@ def main():
client = AnsibleDockerClient(
argument_spec=argument_spec,
required_if=required_if,
supports_check_mode=True
supports_check_mode=True,
min_docker_version='2.0.0',
)
if not HAS_DOCKER_PY_2:
client.module.fail_json(
msg=("docker python library version is %s. " +
"this module requires version 2.0.0 or greater")
% docker_version)
dsm = DockerServiceManager(client)
msg, changed, rebuilt, changes, facts = dsm.run()

View file

@ -254,7 +254,9 @@ def main():
client = AnsibleDockerClient(
argument_spec=argument_spec,
supports_check_mode=True
supports_check_mode=True,
min_docker_version='1.10.0',
# "The docker server >= 1.9.0"
)
cm = DockerVolumeManager(client)