docker_container: fix init check requirements (#40839)

* docker_container: ensure 'init' is supported

Check docker-py version too.

Move API version check in docker_container module since 'init' module
parameter isn't defined by other docker modules.

docker-py supports 'init' since 2.2.0:
https://github.com/docker/docker-py/blob/2.2.0/docs/change-log.md

* docker_container: fix compat with docker-py<2.2

Exception was:
TypeError: create_host_config() got an unexpected keyword argument 'init'
fatal: [localhost]: FAILED! => {
    "changed": false,
    "module_stderr": "Traceback (most recent call last):
                        File ansible_module_docker_container.py, line 2089, in <module>
                          main()
                        File ansible_module_docker_container.py, line 2084, in main
                          cm = ContainerManager(client)
                        File ansible_module_docker_container.py, line 1704, in __init__
                            self.present(state)
                        File ansible_module_docker_container.py, line 1724, in present
                            new_container = self.container_create(self.parameters.image, self.parameters.create_parameters)
                        File ansible_module_docker_container.py, line 826, in create_parameters
                            host_config=self._host_config(),
                        File ansible_module_docker_container.py, line 932, in _host_config
                            return self.client.create_host_config(**params)
                        File lib/python3.6/site-packages/docker/api/container.py, line 157, in create_host_config
                            return utils.create_host_config(*args, **kwargs)
                      TypeError: create_host_config() got an unexpected keyword argument 'init'",
    "module_stdout": "",
    "msg": "MODULE FAILURE",
    "rc": 1
}
This commit is contained in:
Pilou 2018-07-09 07:32:51 +02:00 committed by René Moser
commit 3301a0b530
2 changed files with 27 additions and 10 deletions

View file

@ -187,10 +187,6 @@ class AnsibleDockerClient(Client):
except Exception as exc:
self.fail("Error connecting: %s" % exc)
docker_api_version = self.version()["ApiVersion"]
if self.module.params.get("init") and LooseVersion(docker_api_version) < LooseVersion("1.25"):
self.fail("docker API version is %s. Minimum version required is 1.25 to set init option." % (docker_api_version,))
def log(self, msg, pretty_print=False):
pass
# if self.debug: