[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