Docker common consolidation (#49707)

* [docker] Consolidating Python Boolean conversion for Docker API (#49563)

* [docker] Consolidating docker option min version checks (#49564)

* [docker] Moving option min version checks out of docker_swarm (#49564)

Also renaming Boolean cleanup function and fixing docker_container minimum
version check for network interfaces.

* Cleanup from PR feedback
This commit is contained in:
Dave Bendit 2018-12-12 03:05:12 -06:00 committed by John R Barker
commit b67719ba1d
5 changed files with 132 additions and 227 deletions

View file

@ -176,28 +176,12 @@ from distutils.version import LooseVersion
from ansible.module_utils.docker_common import AnsibleDockerClient
try:
from ansible.module_utils.docker_common import docker_version
from ansible.module_utils.docker_common import docker_version, clean_dict_booleans_for_docker_api
except Exception as dummy:
# missing docker-py handled in ansible.module_utils.docker
pass
def get_filters(module, name):
result = dict()
filters = module.params.get(name)
if filters is not None:
for k, v in filters.items():
# Go doesn't like 'True' or 'False'
if v is True:
v = 'true'
elif v is False:
v = 'false'
else:
v = str(v)
result[str(k)] = v
return result
def main():
argument_spec = dict(
containers=dict(type='bool', default=False),
@ -227,24 +211,24 @@ def main():
result = dict()
if client.module.params['containers']:
filters = get_filters(client.module, 'containers_filters')
filters = clean_dict_booleans_for_docker_api(client.module.params.get('containers_filters'))
res = client.prune_containers(filters=filters)
result['containers'] = res.get('ContainersDeleted') or []
result['containers_space_reclaimed'] = res['SpaceReclaimed']
if client.module.params['images']:
filters = get_filters(client.module, 'images_filters')
filters = clean_dict_booleans_for_docker_api(client.module.params.get('images_filters'))
res = client.prune_images(filters=filters)
result['images'] = res.get('ImagesDeleted') or []
result['images_space_reclaimed'] = res['SpaceReclaimed']
if client.module.params['networks']:
filters = get_filters(client.module, 'networks_filters')
filters = clean_dict_booleans_for_docker_api(client.module.params.get('networks_filters'))
res = client.prune_networks(filters=filters)
result['networks'] = res.get('NetworksDeleted') or []
if client.module.params['volumes']:
filters = get_filters(client.module, 'volumes_filters')
filters = clean_dict_booleans_for_docker_api(client.module.params.get('volumes_filters'))
res = client.prune_volumes(filters=filters)
result['volumes'] = res.get('VolumesDeleted') or []
result['volumes_space_reclaimed'] = res['SpaceReclaimed']