bugfix: fix for folders missing in mongoFS 09/11409/1
authorbravof <fbravo@whitestack.com>
Tue, 23 Nov 2021 13:34:43 +0000 (10:34 -0300)
committerbravof <fbravo@whitestack.com>
Wed, 24 Nov 2021 14:39:50 +0000 (11:39 -0300)
Change-Id: I9c8a07755457c3c297853bda8e6c5516409a6fde
Signed-off-by: bravof <fbravo@whitestack.com>
osm_common/fsmongo.py

index 7fb071a..b04057e 100644 (file)
@@ -205,10 +205,13 @@ class FsMongo(FsBase):
     def __update_local_fs(self, from_path=None):
         dir_cursor = self.fs.find({"metadata.type": "dir"}, no_cursor_timeout=True)
 
     def __update_local_fs(self, from_path=None):
         dir_cursor = self.fs.find({"metadata.type": "dir"}, no_cursor_timeout=True)
 
+        valid_paths = []
+
         for directory in dir_cursor:
             if from_path and not directory.filename.startswith(from_path):
                 continue
             os.makedirs(self.path + directory.filename, exist_ok=True)
         for directory in dir_cursor:
             if from_path and not directory.filename.startswith(from_path):
                 continue
             os.makedirs(self.path + directory.filename, exist_ok=True)
+            valid_paths.append(self.path + directory.filename)
 
         file_cursor = self.fs.find(
             {"metadata.type": {"$in": ["file", "sym"]}}, no_cursor_timeout=True
 
         file_cursor = self.fs.find(
             {"metadata.type": {"$in": ["file", "sym"]}}, no_cursor_timeout=True
@@ -233,6 +236,9 @@ class FsMongo(FsBase):
                         raise
                 os.symlink(link, file_path)
             else:
                         raise
                 os.symlink(link, file_path)
             else:
+                folder = os.path.dirname(file_path)
+                if folder not in valid_paths:
+                    os.makedirs(folder, exist_ok=True)
                 with open(file_path, "wb+") as file_stream:
                     self.fs.download_to_stream(writing_file._id, file_stream)
                 if "permissions" in writing_file.metadata:
                 with open(file_path, "wb+") as file_stream:
                     self.fs.download_to_stream(writing_file._id, file_stream)
                 if "permissions" in writing_file.metadata: