diff --git a/zun/compute/manager.py b/zun/compute/manager.py index 2034b1510..e393a03f4 100644 --- a/zun/compute/manager.py +++ b/zun/compute/manager.py @@ -912,9 +912,10 @@ class Manager(periodic_task.PeriodicTasks): except Exception as e: LOG.exception("Unexpected exception while uploading image: %s", six.text_type(e)) - image_driver.delete_image(context, snapshot_image.id, - 'glance') - self.driver.delete_image(container_image_id) + self.driver.delete_image(context, snapshot_image.id, + 'glance') + self.driver.delete_image(context, container_image_id, + 'docker') raise @wrap_container_event(prefix='compute') @@ -939,8 +940,8 @@ class Manager(periodic_task.PeriodicTasks): except exception.DockerError as e: LOG.error("Error occurred while calling docker commit API: %s", six.text_type(e)) - image_driver.delete_image(context, snapshot_image.id, - 'glance') + self.driver.delete_image(context, snapshot_image.id, + 'glance') raise finally: if unpause: diff --git a/zun/container/docker/driver.py b/zun/container/docker/driver.py index dcc21b37a..5f7eb4790 100644 --- a/zun/container/docker/driver.py +++ b/zun/container/docker/driver.py @@ -125,10 +125,18 @@ class DockerDriver(driver.ContainerDriver): with docker_utils.docker_client() as docker: return docker.get_image(name) - def delete_image(self, image): - with docker_utils.docker_client() as docker: - LOG.debug('Deleting image %s', image) - return docker.remove_image(image) + def delete_image(context, img_id, image_driver=None): + if image_driver: + image_driver_list = [image_driver.lower()] + else: + image_driver_list = CONF.image_driver_list + for driver_name in image_driver_list: + try: + image_driver = img_driver.load_image_driver(driver_name) + image_driver.delete_image(context, img_id) + except exception.ZunException: + LOG.exception('Unknown exception occurred while deleting ' + 'image %s', img_id) def images(self, repo, quiet=False): with docker_utils.docker_client() as docker: diff --git a/zun/container/driver.py b/zun/container/driver.py index ad318c67e..6dc044166 100644 --- a/zun/container/driver.py +++ b/zun/container/driver.py @@ -279,3 +279,6 @@ class ContainerDriver(object): def upload_image_data(self, context, image, image_tag, image_data, image_driver): raise NotImplementedError() + + def delete_image(context, img_id, **kwargs): + raise NotImplementedError() diff --git a/zun/image/driver.py b/zun/image/driver.py index afc98130d..b87501404 100644 --- a/zun/image/driver.py +++ b/zun/image/driver.py @@ -18,7 +18,6 @@ import sys from oslo_log import log as logging import stevedore -from zun.common import exception from zun.common.i18n import _ import zun.conf @@ -59,20 +58,6 @@ def load_image_driver(image_driver=None): sys.exit(1) -def delete_image(context, img_id, image_driver=None): - if image_driver: - image_driver_list = [image_driver.lower()] - else: - image_driver_list = CONF.image_driver_list - for driver_name in image_driver_list: - try: - image_driver = load_image_driver(driver_name) - image_driver.delete_image(context, img_id) - except exception.ZunException: - LOG.exception('Unknown exception occurred while deleting' - 'image %s', img_id) - - class ContainerImageDriver(object): """Base class for container image driver.""" diff --git a/zun/tests/unit/compute/test_compute_manager.py b/zun/tests/unit/compute/test_compute_manager.py index f7fc6d22c..d7117b293 100644 --- a/zun/tests/unit/compute/test_compute_manager.py +++ b/zun/tests/unit/compute/test_compute_manager.py @@ -1149,7 +1149,7 @@ class TestManager(base.TestCase): @mock.patch.object(ContainerActionEvent, 'event_start') @mock.patch.object(ContainerActionEvent, 'event_finish') - @mock.patch('zun.image.driver.delete_image') + @mock.patch.object(fake_driver, 'delete_image') @mock.patch.object(fake_driver, 'commit') @mock.patch.object(fake_driver, 'pause') @mock.patch.object(fake_driver, 'unpause')