ret = rbd_metadata_get(self.image, _key, value, &size)
if ret != -errno.ERANGE:
break
+ if ret == -errno.ENOENT:
+ raise KeyError('no metadata %s for image %s' % (key, self.name))
if ret != 0:
raise make_ex(ret, 'error getting metadata %s for image %s' %
(key, self.name,))
with nogil:
ret = rbd_metadata_remove(self.image, _key)
+ if ret == -errno.ENOENT:
+ raise KeyError('no metadata %s for image %s' % (key, self.name))
if ret != 0:
raise make_ex(ret, 'error removing metadata %s for image %s' %
(key, self.name,))
def test_metadata(self):
metadata = list(self.image.metadata_list())
eq(len(metadata), 0)
+ assert_raises(KeyError, self.image.metadata_get, "key1")
self.image.metadata_set("key1", "value1")
self.image.metadata_set("key2", "value2")
value = self.image.metadata_get("key1")
eq(len(metadata), 1)
eq(metadata[0], ("key2", "value2"))
self.image.metadata_remove("key2")
+ assert_raises(KeyError, self.image.metadata_remove, "key2")
metadata = list(self.image.metadata_list())
eq(len(metadata), 0)