]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind/cephfs: add DiskQuotaExceeded exception
authorRamana Raja <rraja@redhat.com>
Fri, 3 Jul 2020 12:24:44 +0000 (17:54 +0530)
committerRamana Raja <rraja@redhat.com>
Sun, 5 Jul 2020 11:56:36 +0000 (17:26 +0530)
Signed-off-by: Ramana Raja <rraja@redhat.com>
src/pybind/cephfs/cephfs.pyx
src/test/pybind/test_cephfs.py

index 6687cb86a15b5c8e671f1a8889419f3e32668810..05f93a8dfd1f8d5c7f57448fae4fbc5b64908c87 100644 (file)
@@ -318,6 +318,10 @@ class ObjectNotEmpty(OSError):
 class NotDirectory(OSError):
     pass
 
+class DiskQuotaExceeded(OSError):
+    pass
+
+
 IF UNAME_SYSNAME == "FreeBSD":
     cdef errno_to_exception =  {
         errno.EPERM      : PermissionError,
@@ -331,6 +335,7 @@ IF UNAME_SYSNAME == "FreeBSD":
         errno.ERANGE     : OutOfRange,
         errno.EWOULDBLOCK: WouldBlock,
         errno.ENOTEMPTY  : ObjectNotEmpty,
+        errno.EDQUOT     : DiskQuotaExceeded,
     }
 ELSE:
     cdef errno_to_exception =  {
@@ -345,7 +350,8 @@ ELSE:
         errno.ERANGE     : OutOfRange,
         errno.EWOULDBLOCK: WouldBlock,
         errno.ENOTEMPTY  : ObjectNotEmpty,
-        errno.ENOTDIR    : NotDirectory
+        errno.ENOTDIR    : NotDirectory,
+        errno.EDQUOT     : DiskQuotaExceeded,
     }
 
 
index c06647f8aa0c6acdcfbbc609afcf4ffe5584ccab..dedce84674f94dafa44e21be1fdb07f09d40370b 100644 (file)
@@ -776,3 +776,12 @@ def test_get_pool():
     s=os.popen(get_rep_cnt_cmd).read().strip('\n')
     size=int(s.split(" ")[-1])
     assert_equal(cephfs.get_pool_replication(dp_dict["pool_id"]), size)
+
+@with_setup(setup_test)
+def test_disk_quota_exceeeded_error():
+    cephfs.mkdir("/dir-1", 0o755)
+    cephfs.setxattr("/dir-1", "ceph.quota.max_bytes", b"5", 0)
+    fd = cephfs.open(b'/dir-1/file-1', 'w', 0o755)
+    assert_raises(libcephfs.DiskQuotaExceeded, cephfs.write, fd, b"abcdeghiklmnopqrstuvwxyz", 0)
+    cephfs.close(fd)
+    cephfs.unlink(b"/dir-1/file-1")