|
|
@ -646,6 +646,7 @@ try:
|
|
|
|
from docker.types import Ulimit, LogConfig
|
|
|
|
from docker.types import Ulimit, LogConfig
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
from docker.utils.types import Ulimit, LogConfig
|
|
|
|
from docker.utils.types import Ulimit, LogConfig
|
|
|
|
|
|
|
|
from docker.errors import APIError, NotFound
|
|
|
|
except Exception as dummy:
|
|
|
|
except Exception as dummy:
|
|
|
|
# missing docker-py handled in ansible.module_utils.docker
|
|
|
|
# missing docker-py handled in ansible.module_utils.docker
|
|
|
|
pass
|
|
|
|
pass
|
|
|
@ -2040,7 +2041,7 @@ class ContainerManager(DockerBaseClass):
|
|
|
|
if status != 0:
|
|
|
|
if status != 0:
|
|
|
|
self.fail(output, status=status)
|
|
|
|
self.fail(output, status=status)
|
|
|
|
if self.parameters.cleanup:
|
|
|
|
if self.parameters.cleanup:
|
|
|
|
self.container_remove(container_id, force=True, ignore_failure=self.parameters.auto_remove)
|
|
|
|
self.container_remove(container_id, force=True)
|
|
|
|
insp = self._get_container(container_id)
|
|
|
|
insp = self._get_container(container_id)
|
|
|
|
if insp.raw:
|
|
|
|
if insp.raw:
|
|
|
|
insp.raw['Output'] = output
|
|
|
|
insp.raw['Output'] = output
|
|
|
@ -2049,7 +2050,7 @@ class ContainerManager(DockerBaseClass):
|
|
|
|
return insp
|
|
|
|
return insp
|
|
|
|
return self._get_container(container_id)
|
|
|
|
return self._get_container(container_id)
|
|
|
|
|
|
|
|
|
|
|
|
def container_remove(self, container_id, link=False, force=False, ignore_failure=False):
|
|
|
|
def container_remove(self, container_id, link=False, force=False):
|
|
|
|
volume_state = (not self.parameters.keep_volumes)
|
|
|
|
volume_state = (not self.parameters.keep_volumes)
|
|
|
|
self.log("remove container container:%s v:%s link:%s force%s" % (container_id, volume_state, link, force))
|
|
|
|
self.log("remove container container:%s v:%s link:%s force%s" % (container_id, volume_state, link, force))
|
|
|
|
self.results['actions'].append(dict(removed=container_id, volume_state=volume_state, link=link, force=force))
|
|
|
|
self.results['actions'].append(dict(removed=container_id, volume_state=volume_state, link=link, force=force))
|
|
|
@ -2058,8 +2059,15 @@ class ContainerManager(DockerBaseClass):
|
|
|
|
if not self.check_mode:
|
|
|
|
if not self.check_mode:
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
response = self.client.remove_container(container_id, v=volume_state, link=link, force=force)
|
|
|
|
response = self.client.remove_container(container_id, v=volume_state, link=link, force=force)
|
|
|
|
|
|
|
|
except NotFound as exc:
|
|
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
except APIError as exc:
|
|
|
|
|
|
|
|
if exc.response.status_code == 409 and ('removal of container ' in exc.explanation and
|
|
|
|
|
|
|
|
' is already in progress' in exc.explanation):
|
|
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
self.fail("Error removing container %s: %s" % (container_id, str(exc)))
|
|
|
|
except Exception as exc:
|
|
|
|
except Exception as exc:
|
|
|
|
if not ignore_failure:
|
|
|
|
|
|
|
|
self.fail("Error removing container %s: %s" % (container_id, str(exc)))
|
|
|
|
self.fail("Error removing container %s: %s" % (container_id, str(exc)))
|
|
|
|
return response
|
|
|
|
return response
|
|
|
|
|
|
|
|
|
|
|
|