From: Peter Amstutz Date: Wed, 5 Jul 2017 18:51:26 +0000 (-0400) Subject: 8624: Move check that tag exists from __contains__ to __getitem__ method. X-Git-Tag: 1.1.0~154^2 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/c8cb8059605b3fa1f58dda40c5af3ad03a3c116e 8624: Move check that tag exists from __contains__ to __getitem__ method. Arvados-DCO-1.1-Signed-off-by: Peter Amstutz --- diff --git a/services/fuse/arvados_fuse/fusedir.py b/services/fuse/arvados_fuse/fusedir.py index 399992fad3..1399822303 100644 --- a/services/fuse/arvados_fuse/fusedir.py +++ b/services/fuse/arvados_fuse/fusedir.py @@ -695,20 +695,31 @@ class TagsDirectory(Directory): lambda a, i: a.tag == i['name'], lambda i: TagDirectory(self.inode, self.inodes, self.api, self.num_retries, i['name'], poll=self._poll, poll_time=self._poll_time)) + @use_counter + @check_update + def __getitem__(self, item): + if super(TagsDirectory, self).__contains__(item): + return super(TagsDirectory, self).__getitem__(item) + with llfuse.lock_released: + tags = self.api.links().list( + filters=[['link_class', '=', 'tag'], ['name', '=', item]], limit=1 + ).execute(num_retries=self.num_retries) + if tags["items"]: + self._extra.add(item) + self.update() + return super(TagsDirectory, self).__getitem__(item) + + @use_counter + @check_update def __contains__(self, k): if super(TagsDirectory, self).__contains__(k): return True - else: - with llfuse.lock_released: - tags = self.api.links().list( - filters=[['link_class', '=', 'tag'], ['name', '=', k]], limit=1 - ).execute(num_retries=self.num_retries) - if tags["items"]: - self._extra.add(k) - self.invalidate() - return True - else: - return False + try: + self[k] + return True + except KeyError: + pass + return False class TagDirectory(Directory):