docker_image: allow to delete image by ID (#47393)

* Allow to delete docker image by ID.

* Added changelog.
pull/47387/head
Felix Fontein 6 years ago committed by John R Barker
parent 4ffe3b14d4
commit a11073df9a

@ -0,0 +1,2 @@
minor_changes:
- "docker_image - Allow to use image ID instead of image name for deleting images."

@ -250,7 +250,9 @@ image:
import os import os
import re import re
from ansible.module_utils.docker_common import HAS_DOCKER_PY_2, HAS_DOCKER_PY_3, AnsibleDockerClient, DockerBaseClass from ansible.module_utils.docker_common import (
HAS_DOCKER_PY_2, HAS_DOCKER_PY_3, AnsibleDockerClient, DockerBaseClass, is_image_name_id,
)
from ansible.module_utils._text import to_native from ansible.module_utils._text import to_native
try: try:
@ -293,6 +295,7 @@ class ImageManager(DockerBaseClass):
self.buildargs = parameters.get('buildargs') self.buildargs = parameters.get('buildargs')
# If name contains a tag, it takes precedence over tag parameter. # If name contains a tag, it takes precedence over tag parameter.
if not is_image_name_id(self.name):
repo, repo_tag = parse_repository_tag(self.name) repo, repo_tag = parse_repository_tag(self.name)
if repo_tag: if repo_tag:
self.name = repo self.name = repo
@ -363,11 +366,14 @@ class ImageManager(DockerBaseClass):
:return None :return None
''' '''
image = self.client.find_image(self.name, self.tag)
if image:
name = self.name name = self.name
if is_image_name_id(name):
image = self.client.find_image_by_id(name)
else:
image = self.client.find_image(name, self.tag)
if self.tag: if self.tag:
name = "%s:%s" % (self.name, self.tag) name = "%s:%s" % (self.name, self.tag)
if image:
if not self.check_mode: if not self.check_mode:
try: try:
self.client.remove_image(name, force=self.force) self.client.remove_image(name, force=self.force)

Loading…
Cancel
Save