docker_container: warn if ipvX_address is used for networks but not supported by docker-py (#47395)
* Only add parameters which are actually used.
* Fail if ipvX_address is used when not supported.
* Added changelog.
(cherry picked from commit 4ffe3b14d4
)
This commit is contained in:
parent
719b99a96e
commit
f4081c2d97
2 changed files with 16 additions and 6 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
bugfixes:
|
||||||
|
- "docker_container - fail if ``ipv4_address`` or ``ipv6_address`` is used with a too old docker-py version."
|
|
@ -1996,12 +1996,10 @@ class ContainerManager(DockerBaseClass):
|
||||||
self.fail("Error disconnecting container from network %s - %s" % (diff['parameter']['name'],
|
self.fail("Error disconnecting container from network %s - %s" % (diff['parameter']['name'],
|
||||||
str(exc)))
|
str(exc)))
|
||||||
# connect to the network
|
# connect to the network
|
||||||
params = dict(
|
params = dict()
|
||||||
ipv4_address=diff['parameter'].get('ipv4_address', None),
|
for para in ('ipv4_address', 'ipv6_address', 'links', 'aliases'):
|
||||||
ipv6_address=diff['parameter'].get('ipv6_address', None),
|
if diff['parameter'].get(para):
|
||||||
links=diff['parameter'].get('links', None),
|
params[para] = diff['parameter'][para]
|
||||||
aliases=diff['parameter'].get('aliases', None)
|
|
||||||
)
|
|
||||||
self.results['actions'].append(dict(added_to_network=diff['parameter']['name'], network_parameters=params))
|
self.results['actions'].append(dict(added_to_network=diff['parameter']['name'], network_parameters=params))
|
||||||
if not self.check_mode:
|
if not self.check_mode:
|
||||||
try:
|
try:
|
||||||
|
@ -2210,6 +2208,16 @@ class AnsibleDockerClientContainer(AnsibleDockerClient):
|
||||||
self.fail("docker or docker-py version is %s. Minimum version required is 2.3 to set cpuset_mems option. "
|
self.fail("docker or docker-py version is %s. Minimum version required is 2.3 to set cpuset_mems option. "
|
||||||
"If you use the 'docker-py' module, you have to switch to the docker 'Python' package." % (docker_version,))
|
"If you use the 'docker-py' module, you have to switch to the docker 'Python' package." % (docker_version,))
|
||||||
|
|
||||||
|
ipvX_address_supported = LooseVersion(docker_version) >= LooseVersion('1.9')
|
||||||
|
if not ipvX_address_supported:
|
||||||
|
ipvX_address_used = False
|
||||||
|
for network in self.module.params.get("networks", []):
|
||||||
|
if 'ipv4_address' in network or 'ipv6_address' in network:
|
||||||
|
ipvX_address_used = True
|
||||||
|
if ipvX_address_used:
|
||||||
|
self.fail("docker or docker-py version is %s. Minimum version required is 1.9 to use "
|
||||||
|
"ipv4_address or ipv6_address in networks." % (docker_version,))
|
||||||
|
|
||||||
self.HAS_INIT_OPT = init_supported
|
self.HAS_INIT_OPT = init_supported
|
||||||
self.HAS_UTS_MODE_OPT = uts_mode_supported
|
self.HAS_UTS_MODE_OPT = uts_mode_supported
|
||||||
self.HAS_BLKIO_WEIGHT_OPT = blkio_weight_supported
|
self.HAS_BLKIO_WEIGHT_OPT = blkio_weight_supported
|
||||||
|
|
Loading…
Reference in a new issue