X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c9ff74363edc2f3271c117184be2d1ad7fad633a..0f644e242ef37c911ad3dc25aca8135c339de349:/services/arv-web/arv-web.py diff --git a/services/arv-web/arv-web.py b/services/arv-web/arv-web.py index 7dbd304adc..55b710a754 100755 --- a/services/arv-web/arv-web.py +++ b/services/arv-web/arv-web.py @@ -1,12 +1,16 @@ #!/usr/bin/env python +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 # arv-web enables you to run a custom web service from the contents of an Arvados collection. # # 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 @@ -32,7 +36,7 @@ class ArvWeb(object): 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") @@ -71,7 +75,7 @@ class ArvWeb(object): et = 'add' else: et = 'remove' - if ev['properties']['new_attributes']['expires_at'] is not None: + if ev['properties']['new_attributes']['trash_at'] is not None: et = 'remove' self.evqueue.put((self.project, et, ev['object_uuid'])) @@ -82,7 +86,7 @@ class ArvWeb(object): 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) @@ -156,8 +160,6 @@ class ArvWeb(object): 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), @@ -246,6 +248,9 @@ def main(argv): 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:]))