Merge "Handle rbd.OSError on broken RBD image"
This commit is contained in:
commit
c319b40759
@ -69,6 +69,10 @@ class MockImageExistsException(MockException):
|
|||||||
"""Used as mock for rbd.ImageExists."""
|
"""Used as mock for rbd.ImageExists."""
|
||||||
|
|
||||||
|
|
||||||
|
class MockOSErrorException(MockException):
|
||||||
|
"""Used as mock for rbd.OSError."""
|
||||||
|
|
||||||
|
|
||||||
class KeyObject(object):
|
class KeyObject(object):
|
||||||
def get_encoded(arg):
|
def get_encoded(arg):
|
||||||
return "asdf".encode('utf-8')
|
return "asdf".encode('utf-8')
|
||||||
@ -2101,17 +2105,24 @@ class RBDTestCase(test.TestCase):
|
|||||||
return mock.Mock(return_value=mock.Mock(
|
return mock.Mock(return_value=mock.Mock(
|
||||||
size=mock.Mock(side_effect=(size_or_exc,))))
|
size=mock.Mock(side_effect=(size_or_exc,))))
|
||||||
|
|
||||||
volumes = ['volume-1', 'non-existent', 'non-cinder-volume']
|
volumes = [
|
||||||
|
'volume-1',
|
||||||
|
'non-existent',
|
||||||
|
'non-existent',
|
||||||
|
'non-cinder-volume'
|
||||||
|
]
|
||||||
|
|
||||||
client = client_mock.return_value.__enter__.return_value
|
client = client_mock.return_value.__enter__.return_value
|
||||||
rbdproxy_mock.return_value.list.return_value = volumes
|
rbdproxy_mock.return_value.list.return_value = volumes
|
||||||
|
|
||||||
with mock.patch.object(self.driver, 'rbd',
|
with mock.patch.object(self.driver, 'rbd',
|
||||||
ImageNotFound=MockImageNotFoundException):
|
ImageNotFound=MockImageNotFoundException,
|
||||||
|
OSError=MockOSErrorException):
|
||||||
volproxy_mock.side_effect = [
|
volproxy_mock.side_effect = [
|
||||||
mock.MagicMock(**{'__enter__': FakeVolProxy(s)})
|
mock.MagicMock(**{'__enter__': FakeVolProxy(s)})
|
||||||
for s in (1.0 * units.Gi,
|
for s in (1.0 * units.Gi,
|
||||||
self.driver.rbd.ImageNotFound,
|
self.driver.rbd.ImageNotFound,
|
||||||
|
self.driver.rbd.OSError,
|
||||||
2.0 * units.Gi)
|
2.0 * units.Gi)
|
||||||
]
|
]
|
||||||
total_provision = self.driver._get_usage_info()
|
total_provision = self.driver._get_usage_info()
|
||||||
|
@ -410,7 +410,7 @@ class RBDDriver(driver.CloneableImageVD, driver.MigrateVD,
|
|||||||
client=client.cluster,
|
client=client.cluster,
|
||||||
ioctx=client.ioctx) as v:
|
ioctx=client.ioctx) as v:
|
||||||
size = v.size()
|
size = v.size()
|
||||||
except self.rbd.ImageNotFound:
|
except (self.rbd.ImageNotFound, self.rbd.OSError):
|
||||||
LOG.debug("Image %s is not found.", t)
|
LOG.debug("Image %s is not found.", t)
|
||||||
else:
|
else:
|
||||||
total_provisioned += size
|
total_provisioned += size
|
||||||
|
Loading…
x
Reference in New Issue
Block a user