Changeset View
Changeset View
Standalone View
Standalone View
swh/indexer/metadata.py
Show First 20 Lines • Show All 266 Lines • ▼ Show 20 Lines | class OriginMetadataIndexer(OriginIndexer): | ||||
USE_TOOLS = False | USE_TOOLS = False | ||||
def __init__(self): | def __init__(self): | ||||
super().__init__() | super().__init__() | ||||
self.origin_head_indexer = OriginHeadIndexer() | self.origin_head_indexer = OriginHeadIndexer() | ||||
self.revision_metadata_indexer = RevisionMetadataIndexer() | self.revision_metadata_indexer = RevisionMetadataIndexer() | ||||
def index(self, origin): | def index_list(self, origins): | ||||
head_rev_ids = [] | |||||
for origin in origins: | |||||
head_result = self.origin_head_indexer.index(origin) | head_result = self.origin_head_indexer.index(origin) | ||||
if not head_result: | if not head_result: | ||||
return | return | ||||
rev_id = head_result['revision_id'] | head_rev_ids.append(head_result['revision_id']) | ||||
rev = list(self.storage.revision_get([rev_id])) | head_revs = list(self.storage.revision_get(head_rev_ids)) | ||||
assert len(head_revs) == len(head_rev_ids) | |||||
results = [] | |||||
for (orig, rev) in zip(origins, head_revs): | |||||
if not rev: | if not rev: | ||||
self.warning('Missing head revision %s of origin %r', | self.warning('Missing head revision %s of origin %r', | ||||
(hashutil.hash_to_bytes(rev_id), origin)) | (hashutil.hash_to_bytes(rev['id']), origin)) | ||||
return | continue | ||||
assert len(rev) == 1 | |||||
rev = rev[0] | |||||
rev_metadata = self.revision_metadata_indexer.index(rev) | rev_metadata = self.revision_metadata_indexer.index(rev) | ||||
orig_metadata = { | orig_metadata = { | ||||
'from_revision': rev_metadata['id'], | 'from_revision': rev_metadata['id'], | ||||
'origin_id': origin['id'], | 'origin_id': origin['id'], | ||||
'metadata': rev_metadata['translated_metadata'], | 'metadata': rev_metadata['translated_metadata'], | ||||
'mappings': rev_metadata['mappings'], | 'mappings': rev_metadata['mappings'], | ||||
'indexer_configuration_id': | 'indexer_configuration_id': | ||||
rev_metadata['indexer_configuration_id'], | rev_metadata['indexer_configuration_id'], | ||||
} | } | ||||
return (orig_metadata, rev_metadata) | results.append((orig_metadata, rev_metadata)) | ||||
return results | |||||
def persist_index_computations(self, results, policy_update): | def persist_index_computations(self, results, policy_update): | ||||
self.idx_storage.revision_metadata_add( | self.idx_storage.revision_metadata_add( | ||||
[rev_item for (orig_item, rev_item) in results], | [rev_item for (orig_item, rev_item) in results], | ||||
conflict_update=(policy_update == 'update-dups')) | conflict_update=(policy_update == 'update-dups')) | ||||
self.idx_storage.origin_intrinsic_metadata_add( | self.idx_storage.origin_intrinsic_metadata_add( | ||||
[orig_item for (orig_item, rev_item) in results], | [orig_item for (orig_item, rev_item) in results], | ||||
Show All 15 Lines |