]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
pybind/mgr/volumes: refactor trash readdir
authorPatrick Donnelly <pdonnell@redhat.com>
Mon, 15 Jul 2019 23:56:32 +0000 (16:56 -0700)
committerPatrick Donnelly <pdonnell@redhat.com>
Tue, 16 Jul 2019 04:42:17 +0000 (21:42 -0700)
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
src/pybind/mgr/volumes/fs/subvolume.py

index c11f26c7d4013651bbd1c8e208170cbddd258b5e..6d0232c56e1febdfbe645514a9d539a1af710658 100644 (file)
@@ -39,25 +39,21 @@ class SubVolume(object):
 
     def _get_single_dir_entry(self, dir_path, exclude=[]):
         """
-        Return a directory entry in a given directory exclusing passed
+        Return a directory entry in a given directory excluding passed
         in entries.
         """
+        exclude.extend((b".", b".."))
         try:
-            dir_handle = self.fs.opendir(dir_path)
+            with self.fs.opendir(dir_path) as d:
+                entry = self.fs.readdir(d)
+                while entry:
+                    if entry.d_name not in exclude and entry.is_dir():
+                        return entry.d_name
+                    entry = self.fs.readdir(d)
+            return None
         except cephfs.Error as e:
             raise VolumeException(-e.args[0], e.args[1])
 
-        exclude.extend((b".", b".."))
-
-        d = self.fs.readdir(dir_handle)
-        d_name = None
-        while d:
-            if not d.d_name in exclude and d.is_dir():
-                d_name = d.d_name
-                break
-            d = self.fs.readdir(dir_handle)
-        self.fs.closedir(dir_handle)
-        return d_name
 
     ### basic subvolume operations