diff --git a/swh/vault/cache.py b/swh/vault/cache.py index c2f67f3..9691817 100644 --- a/swh/vault/cache.py +++ b/swh/vault/cache.py @@ -1,47 +1,47 @@ # Copyright (C) 2016-2017 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information from swh.model import hashutil -from swh.objstorage import get_objstorage +from swh.objstorage.factory import get_objstorage from swh.objstorage.objstorage import compute_hash class VaultCache: """The Vault cache is an object storage that stores Vault bundles. This implementation computes sha1(':') as the internal identifiers used in the underlying objstorage. """ def __init__(self, **objstorage): self.objstorage = get_objstorage(**objstorage) def add(self, obj_type, obj_id, content): sid = self._get_internal_id(obj_type, obj_id) return self.objstorage.add(content, sid) def get(self, obj_type, obj_id): sid = self._get_internal_id(obj_type, obj_id) return self.objstorage.get(hashutil.hash_to_bytes(sid)) def delete(self, obj_type, obj_id): sid = self._get_internal_id(obj_type, obj_id) return self.objstorage.delete(hashutil.hash_to_bytes(sid)) def add_stream(self, obj_type, obj_id, content_iter): sid = self._get_internal_id(obj_type, obj_id) return self.objstorage.add_stream(content_iter, sid) def get_stream(self, obj_type, obj_id): sid = self._get_internal_id(obj_type, obj_id) return self.objstorage.get_stream(hashutil.hash_to_bytes(sid)) def is_cached(self, obj_type, obj_id): sid = self._get_internal_id(obj_type, obj_id) return hashutil.hash_to_bytes(sid) in self.objstorage def _get_internal_id(self, obj_type, obj_id): obj_id = hashutil.hash_to_hex(obj_id) return compute_hash("{}:{}".format(obj_type, obj_id).encode())