]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
pybind/rbd: raise KeyError when metadata does not exist
authorMykola Golub <to.my.trociny@gmail.com>
Tue, 5 Dec 2017 13:48:58 +0000 (15:48 +0200)
committerMykola Golub <to.my.trociny@gmail.com>
Tue, 5 Dec 2017 20:09:30 +0000 (22:09 +0200)
Signed-off-by: Mykola Golub <to.my.trociny@gmail.com>
src/pybind/rbd/rbd.pyx
src/test/pybind/test_rbd.py

index a7424fa9cab469acdbbcca7a18d41d27ba366d74..30c59eb5d0c24713a3c522bc34dfb1db0288ca9b 100644 (file)
@@ -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,))
index f46f09cedcf9f1ef11738ed066d98049c8ca66b6..1b202a38a26820656139711d4fb0ee782230a3be 100644 (file)
@@ -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)