Merge "Fix unstage after staging store denies write"

This commit is contained in:
Zuul 2017-11-29 19:55:52 +00:00 committed by Gerrit Code Review
commit b976fc0bf4
2 changed files with 14 additions and 1 deletions

View File

@ -332,7 +332,7 @@ class ImageDataController(object):
msg = _("Insufficient permissions on image "
"storage media: %s") % encodeutils.exception_to_unicode(e)
LOG.error(msg)
self._unstage(image_repo, image)
self._unstage(image_repo, image, staging_store)
raise webob.exc.HTTPServiceUnavailable(explanation=msg,
request=req)

View File

@ -16,6 +16,7 @@ import uuid
from cursive import exception as cursive_exception
import glance_store
from glance_store._drivers import filesystem
import mock
import six
from six.moves import http_client as http
@ -460,6 +461,18 @@ class TestImagesController(base.StoreClearingUnitTest):
request, unit_test_utils.UUID2, 'ZZZ', 3)
self.assertEqual('queued', self.image_repo.saved_image.status)
@mock.patch.object(filesystem.Store, 'add')
def test_restore_image_when_staging_failed(self, mock_store_add):
mock_store_add.side_effect = glance_store.StorageWriteDenied()
request = unit_test_utils.get_fake_request()
image_id = str(uuid.uuid4())
image = FakeImage('fake')
self.image_repo.result = image
self.assertRaises(webob.exc.HTTPServiceUnavailable,
self.controller.stage,
request, image_id, 'YYYYYYY', 7)
self.assertEqual('queued', self.image_repo.saved_image.status)
class TestImageDataDeserializer(test_utils.BaseTestCase):