]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind/rbd: raise KeyError when metadata does not exist 19479/head
authorMykola Golub <to.my.trociny@gmail.com>
Tue, 5 Dec 2017 13:48:58 +0000 (15:48 +0200)
committerNathan Cutler <ncutler@suse.com>
Wed, 13 Dec 2017 12:40:13 +0000 (13:40 +0100)
Signed-off-by: Mykola Golub <to.my.trociny@gmail.com>
(cherry picked from commit 7a1b13f8849ce7bd325316bafad5bab660c77825)

src/pybind/rbd/rbd.pyx
src/test/pybind/test_rbd.py

index d422b6076d5aae188b573443cc759d4881ae1fa9..df90e3ab59b698fe4a9f7f0c3a14e0314460559a 100644 (file)
@@ -2682,6 +2682,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,))
@@ -2724,6 +2726,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 e72045a5918887c5f56d6e8658aa7665d7f53f0f..f0f4017b22ea9c8e7d101d776715bfe65b7a58b5 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)