From: Mykola Golub Date: Tue, 5 Dec 2017 13:48:58 +0000 (+0200) Subject: pybind/rbd: raise KeyError when metadata does not exist X-Git-Tag: v13.0.2~847^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F19337%2Fhead;p=ceph.git pybind/rbd: raise KeyError when metadata does not exist Signed-off-by: Mykola Golub --- diff --git a/src/pybind/rbd/rbd.pyx b/src/pybind/rbd/rbd.pyx index a7424fa9cab4..30c59eb5d0c2 100644 --- a/src/pybind/rbd/rbd.pyx +++ b/src/pybind/rbd/rbd.pyx @@ -2701,6 +2701,8 @@ written." % (self.name, ret, length)) 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,)) @@ -2743,6 +2745,8 @@ written." % (self.name, ret, length)) 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,)) diff --git a/src/test/pybind/test_rbd.py b/src/test/pybind/test_rbd.py index f46f09cedcf9..1b202a38a268 100644 --- a/src/test/pybind/test_rbd.py +++ b/src/test/pybind/test_rbd.py @@ -828,6 +828,7 @@ class TestImage(object): 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") @@ -841,6 +842,7 @@ class TestImage(object): 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)