X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f8743ac8fa1ed9dc8c7c4f7a23803ffe8721cfa6..96040562743f6056c2b243db16b5a83244894bd8:/services/fuse/arvados_fuse/__init__.py?ds=sidebyside diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py index 62af6c0c7c..6e2bf2896d 100644 --- a/services/fuse/arvados_fuse/__init__.py +++ b/services/fuse/arvados_fuse/__init__.py @@ -2,6 +2,7 @@ # FUSE driver for Arvados Keep # +from __future__ import print_function import os import sys @@ -15,6 +16,7 @@ import arvados.events import re import apiclient import json +import logging from time import time from llfuse import FUSEError @@ -123,7 +125,7 @@ class Directory(FreshBase): try: self.update() except apiclient.errors.HttpError as e: - print e + logging.debug(e) def __getitem__(self, item): self.checkupdate() @@ -193,10 +195,11 @@ class CollectionDirectory(Directory): cwd = cwd._entries[part] for k, v in s.files().items(): cwd._entries[k] = self.inodes.add_entry(StreamReaderFile(cwd.inode, v)) - print "found" self.fresh() + return True except Exception as detail: - print("%s: error: %s" % (self.collection_locator,detail) ) + logging.debug("arv-mount %s: error: %s" % (self.collection_locator,detail)) + return False class MagicDirectory(Directory): '''A special directory that logically contains the set of all extant keep @@ -216,19 +219,21 @@ class MagicDirectory(Directory): if k in self._entries: return True try: - if arvados.Keep.get(k): + e = self.inodes.add_entry(CollectionDirectory(self.inode, self.inodes, k)) + if e.update(): + self._entries[k] = e return True else: return False except Exception as e: - #print 'exception keep', e + logging.debug('arv-mount exception keep', e) return False def __getitem__(self, item): - if item not in self._entries: - self._entries[item] = self.inodes.add_entry(CollectionDirectory(self.inode, self.inodes, item)) - return self._entries[item] - + if item in self: + return self._entries[item] + else: + raise KeyError("No collection with id " + item) class TagsDirectory(Directory): '''A special directory that contains as subdirectories all tags visible to the user.''' @@ -411,9 +416,13 @@ class Operations(llfuse.Operations): so request handlers do not run concurrently unless the lock is explicitly released with llfuse.lock_released.''' - def __init__(self, uid, gid): + def __init__(self, uid, gid, debug): super(Operations, self).__init__() + if debug: + logging.setLevel(logging.DEBUG) + logging.info("arv-mount debug enabled") + self.inodes = Inodes() self.uid = uid self.gid = gid @@ -470,7 +479,7 @@ class Operations(llfuse.Operations): return entry def lookup(self, parent_inode, name): - #print "lookup: parent_inode", parent_inode, "name", name + logging.debug("arv-mount lookup: parent_inode", parent_inode, "name", name) inode = None if name == '.': @@ -506,7 +515,7 @@ class Operations(llfuse.Operations): return fh def read(self, fh, off, size): - #print "read", fh, off, size + logging.debug("arv-mount read", fh, off, size) if fh in self._filehandles: handle = self._filehandles[fh] else: @@ -523,7 +532,7 @@ class Operations(llfuse.Operations): del self._filehandles[fh] def opendir(self, inode): - #print "opendir: inode", inode + logging.debug("arv-mount opendir: inode", inode) if inode in self.inodes: p = self.inodes[inode] @@ -544,14 +553,14 @@ class Operations(llfuse.Operations): return fh def readdir(self, fh, off): - #print "readdir: fh", fh, "off", off + logging.debug("arv-mount readdir: fh", fh, "off", off) if fh in self._filehandles: handle = self._filehandles[fh] else: raise llfuse.FUSEError(errno.EBADF) - #print "handle.entry", handle.entry + logging.debug("arv-mount handle.entry", handle.entry) e = off while e < len(handle.entry):