5 from fresh import FreshBase, convertTime
7 _logger = logging.getLogger('arvados.arvados_fuse')
10 """Base for file objects."""
12 def __init__(self, parent_inode, _mtime=0):
13 super(File, self).__init__()
15 self.parent_inode = parent_inode
21 def readfrom(self, off, size):
28 class StreamReaderFile(File):
29 """Wraps a StreamFileReader as a file."""
31 def __init__(self, parent_inode, reader, _mtime):
32 super(StreamReaderFile, self).__init__(parent_inode, _mtime)
36 return self.reader.size()
38 def readfrom(self, off, size):
39 return self.reader.readfrom(off, size)
45 class StringFile(File):
46 """Wrap a simple string as a file"""
47 def __init__(self, parent_inode, contents, _mtime):
48 super(StringFile, self).__init__(parent_inode, _mtime)
49 self.contents = contents
52 return len(self.contents)
54 def readfrom(self, off, size):
55 return self.contents[off:(off+size)]
58 class ObjectFile(StringFile):
59 """Wrap a dict as a serialized json object."""
61 def __init__(self, parent_inode, obj):
62 super(ObjectFile, self).__init__(parent_inode, "", 0)
63 self.uuid = obj['uuid']
66 def update(self, obj):
67 self._mtime = convertTime(obj['modified_at']) if 'modified_at' in obj else 0
68 self.contents = json.dumps(obj, indent=4, sort_keys=True) + "\n"