Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/package/deposit/loader.py
Show All 11 Lines | |||||
from swh.model.hashutil import hash_to_hex, hash_to_bytes | from swh.model.hashutil import hash_to_hex, hash_to_bytes | ||||
from swh.model.model import ( | from swh.model.model import ( | ||||
Person, | Person, | ||||
Revision, | Revision, | ||||
RevisionType, | RevisionType, | ||||
TimestampWithTimezone, | TimestampWithTimezone, | ||||
Sha1Git, | Sha1Git, | ||||
MetadataAuthority, | |||||
MetadataAuthorityType, | |||||
MetadataFetcher, | |||||
MetadataTargetType, | |||||
RawExtrinsicMetadata, | |||||
) | ) | ||||
from swh.loader.package.loader import PackageLoader | from swh.loader.package.loader import PackageLoader | ||||
from swh.loader.package.utils import download | from swh.loader.package.utils import download | ||||
logger = logging.getLogger(__name__) | logger = logging.getLogger(__name__) | ||||
▲ Show 20 Lines • Show All 93 Lines • ▼ Show 20 Lines | def load(self) -> Dict: | ||||
success = r["status"] != "failed" | success = r["status"] != "failed" | ||||
if success: | if success: | ||||
# Update archive with metadata information | # Update archive with metadata information | ||||
origin_metadata = self.metadata["origin_metadata"] | origin_metadata = self.metadata["origin_metadata"] | ||||
logger.debug("origin_metadata: %s", origin_metadata) | logger.debug("origin_metadata: %s", origin_metadata) | ||||
provider = origin_metadata["provider"] | provider = origin_metadata["provider"] | ||||
authority = { | assert provider["provider_type"] == "deposit_client" | ||||
"type": provider["provider_type"], | authority = MetadataAuthority( | ||||
"url": provider["provider_url"], | type=MetadataAuthorityType.DEPOSIT, | ||||
"metadata": { | url=provider["provider_url"], | ||||
metadata={ | |||||
"name": provider["provider_name"], | "name": provider["provider_name"], | ||||
**(provider["metadata"] or {}), | **(provider["metadata"] or {}), | ||||
}, | }, | ||||
} | ) | ||||
self.storage.metadata_authority_add(**authority) | self.storage.metadata_authority_add([authority]) | ||||
tool = origin_metadata["tool"] | tool = origin_metadata["tool"] | ||||
fetcher = { | fetcher = MetadataFetcher( | ||||
"name": tool["name"], | name=tool["name"], | ||||
"version": tool["version"], | version=tool["version"], | ||||
"metadata": tool["configuration"], | metadata=tool["configuration"], | ||||
} | ) | ||||
self.storage.metadata_fetcher_add(**fetcher) | self.storage.metadata_fetcher_add([fetcher]) | ||||
metadata = origin_metadata["metadata"] | self.storage.object_metadata_add( | ||||
format = "sword-v2-atom-codemeta-v2-in-json" | [ | ||||
self.storage.origin_metadata_add( | RawExtrinsicMetadata( | ||||
self.url, | type=MetadataTargetType.ORIGIN, | ||||
self.visit_date, | id=self.url, | ||||
{"type": authority["type"], "url": authority["url"]}, | discovery_date=self.visit_date, | ||||
{"name": fetcher["name"], "version": fetcher["version"]}, | authority=authority, | ||||
format, | fetcher=fetcher, | ||||
json.dumps(metadata).encode(), | format="sword-v2-atom-codemeta-v2-in-json", | ||||
metadata=json.dumps(origin_metadata["metadata"]).encode(), | |||||
) | |||||
] | |||||
) | ) | ||||
# Update deposit status | # Update deposit status | ||||
try: | try: | ||||
if not success: | if not success: | ||||
self.client.status_update(self.deposit_id, status="failed") | self.client.status_update(self.deposit_id, status="failed") | ||||
return r | return r | ||||
▲ Show 20 Lines • Show All 118 Lines • Show Last 20 Lines |