From 7a1b13f8849ce7bd325316bafad5bab660c77825 Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Tue, 5 Dec 2017 15:48:58 +0200 Subject: [PATCH] pybind/rbd: raise KeyError when metadata does not exist Signed-off-by: Mykola Golub --- src/pybind/rbd/rbd.pyx | 4 ++++ src/test/pybind/test_rbd.py | 2 ++ 2 files changed, 6 insertions(+) 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) -- 2.47.3