[ARVADOS] created: f4e61aa027412141fe3d77123414e07fe81ef424

git at public.curoverse.com git at public.curoverse.com
Mon Jan 12 16:21:47 EST 2015


        at  f4e61aa027412141fe3d77123414e07fe81ef424 (commit)


commit f4e61aa027412141fe3d77123414e07fe81ef424
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Thu Jan 8 21:52:42 2015 -0500

    4968: Can now read from .arvados#project to trigger update of project directory
    contents.

diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py
index 148a9a6..4b2e0ad 100644
--- a/services/fuse/arvados_fuse/__init__.py
+++ b/services/fuse/arvados_fuse/__init__.py
@@ -129,6 +129,8 @@ class File(FreshBase):
     def mtime(self):
         return self._mtime
 
+    def opening(self):
+        pass
 
 class StreamReaderFile(File):
     '''Wraps a StreamFileReader as a file.'''
@@ -172,6 +174,13 @@ class ObjectFile(StringFile):
         self._mtime = convertTime(obj['modified_at']) if 'modified_at' in obj else 0
         self.contents = json.dumps(obj, indent=4, sort_keys=True) + "\n"
 
+class UpdateOnOpenFile(ObjectFile):
+    def __init__(self, parent_inode, obj, parent_dir):
+        super(UpdateOnOpenFile, self).__init__(parent_inode, obj)
+        self.parent_dir = parent_dir
+
+    def opening(self):
+        self.parent_dir.update()
 
 class Directory(FreshBase):
     '''Generic directory object, backed by a dict.
@@ -546,7 +555,7 @@ class ProjectDirectory(Directory):
 
     def update(self):
         if self.project_object_file == None:
-            self.project_object_file = ObjectFile(self.inode, self.project_object)
+            self.project_object_file = UpdateOnOpenFile(self.inode, self.project_object, self)
             self.inodes.add_entry(self.project_object_file)
 
         def namefn(i):
@@ -819,6 +828,8 @@ class Operations(llfuse.Operations):
         if isinstance(p, Directory):
             raise llfuse.FUSEError(errno.EISDIR)
 
+        p.opening()
+
         fh = self._filehandles_counter
         self._filehandles_counter += 1
         self._filehandles[fh] = FileHandle(fh, p)

commit 2185f76a9aeb9fbde23e189cda1db4dcc0949177
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Thu Jan 8 21:26:32 2015 -0500

    4968: Fix polling refresh on project directories

diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py
index 80ad6b3..148a9a6 100644
--- a/services/fuse/arvados_fuse/__init__.py
+++ b/services/fuse/arvados_fuse/__init__.py
@@ -526,6 +526,8 @@ class ProjectDirectory(Directory):
         self.project_object = project_object
         self.project_object_file = None
         self.uuid = project_object['uuid']
+        self._poll = poll
+        self._poll_time = poll_time
 
     def createDirectory(self, i):
         if collection_uuid_pattern.match(i['uuid']):
diff --git a/services/fuse/bin/arv-mount b/services/fuse/bin/arv-mount
index 5b161fd..68cd09c 100755
--- a/services/fuse/bin/arv-mount
+++ b/services/fuse/bin/arv-mount
@@ -98,6 +98,7 @@ with "--".
         elif args.home:
             dir_class = ProjectDirectory
             dir_args.append(usr)
+            dir_args.append(True)
         elif args.collection is not None:
             # Set up the request handler with the collection at the root
             dir_class = CollectionDirectory
@@ -117,6 +118,7 @@ with "--".
             e._entries['by_tag'] = operations.inodes.add_entry(TagsDirectory(*dir_args))
 
             dir_args.append(usr)
+            dir_args.append(True)
             e._entries['home'] = operations.inodes.add_entry(ProjectDirectory(*dir_args))
             e._entries['shared'] = operations.inodes.add_entry(SharedDirectory(*dir_args))
 

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list