# See http://doc.arvados.org/user/topics/arv-web.html
import arvados
+from arvados.safeapi import ThreadSafeApiCache
import subprocess
-from arvados_fuse import Operations, SafeApi, CollectionDirectory
+from arvados_fuse import Operations, CollectionDirectory
import tempfile
import os
import llfuse
self.override_docker_image = docker_image
self.port = port
self.evqueue = Queue.Queue()
- self.api = SafeApi(arvados.config)
+ self.api = ThreadSafeApiCache(arvados.config.settings())
if arvados.util.group_uuid_pattern.match(project) is None:
raise arvados.errors.ArgumentError("Project uuid is not valid")
def run_fuse_mount(self):
self.mountdir = tempfile.mkdtemp()
- self.operations = Operations(os.getuid(), os.getgid(), "utf-8")
+ self.operations = Operations(os.getuid(), os.getgid(), self.api, "utf-8")
self.cdir = CollectionDirectory(llfuse.ROOT_INODE, self.operations.inodes, self.api, 2, self.collection)
self.operations.inodes.add_entry(self.cdir)
self.stop_docker()
logger.info("Starting Docker container %s", docker_image)
- ciddir = tempfile.mkdtemp()
- cidfilepath = os.path.join(ciddir, "cidfile")
self.cid = subprocess.check_output(["docker", "run",
"--detach=true",
"--publish=%i:80" % (self.port),
arvweb.run()
except arvados.errors.ArgumentError as e:
logger.error(e)
+ return 1
+
+ return 0
if __name__ == '__main__':
- main(sys.argv[1:])
+ sys.exit(main(sys.argv[1:]))