]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind/cephfs: add DiskQuotaExceeded exception 37350/head
authorRamana Raja <rraja@redhat.com>
Fri, 3 Jul 2020 12:24:44 +0000 (17:54 +0530)
committerNathan Cutler <ncutler@suse.com>
Wed, 23 Sep 2020 11:58:55 +0000 (13:58 +0200)
Signed-off-by: Ramana Raja <rraja@redhat.com>
(cherry picked from commit 4cd247e6d0b7d38eb8e9bf5f6a656fd78393b4f6)

Conflicts:
src/test/pybind/test_cephfs.py
- some cephfs pybind interfaces and their tests were missing in octopus

src/pybind/cephfs/cephfs.pyx
src/test/pybind/test_cephfs.py

index 916ef81eccc4a2e17d21bfcd6b2d016c10dbd4ff..83e6454bcbbcd166f123e75efacb3320035c2edf 100644 (file)
@@ -269,6 +269,10 @@ class ObjectNotEmpty(OSError):
 class NotDirectory(OSError):
     pass
 
+class DiskQuotaExceeded(OSError):
+    pass
+
+
 IF UNAME_SYSNAME == "FreeBSD":
     cdef errno_to_exception =  {
         errno.EPERM      : PermissionError,
@@ -282,6 +286,7 @@ IF UNAME_SYSNAME == "FreeBSD":
         errno.ERANGE     : OutOfRange,
         errno.EWOULDBLOCK: WouldBlock,
         errno.ENOTEMPTY  : ObjectNotEmpty,
+        errno.EDQUOT     : DiskQuotaExceeded,
     }
 ELSE:
     cdef errno_to_exception =  {
@@ -296,7 +301,8 @@ ELSE:
         errno.ERANGE     : OutOfRange,
         errno.EWOULDBLOCK: WouldBlock,
         errno.ENOTEMPTY  : ObjectNotEmpty,
-        errno.ENOTDIR    : NotDirectory
+        errno.ENOTDIR    : NotDirectory,
+        errno.EDQUOT     : DiskQuotaExceeded,
     }
 
 
index e633ee0cd01767f566f0b7bdc02ae1a377ee5b08..c6bd0c9bea766d02fdd81897950f50577e750d07 100644 (file)
@@ -431,3 +431,12 @@ def test_futimens():
 
     cephfs.close(fd)
     cephfs.unlink(b'/file-1')
+
+@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")