Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/package/deposit/loader.py
Show All 16 Lines | from swh.model.model import ( | ||||
Person, | Person, | ||||
Revision, | Revision, | ||||
RevisionType, | RevisionType, | ||||
TimestampWithTimezone, | TimestampWithTimezone, | ||||
Sha1Git, | Sha1Git, | ||||
MetadataAuthority, | MetadataAuthority, | ||||
MetadataAuthorityType, | MetadataAuthorityType, | ||||
MetadataFetcher, | MetadataFetcher, | ||||
MetadataTargetType, | |||||
RawExtrinsicMetadata, | |||||
) | ) | ||||
from swh.loader.package.loader import ( | from swh.loader.package.loader import ( | ||||
BasePackageInfo, | BasePackageInfo, | ||||
PackageLoader, | PackageLoader, | ||||
RawExtrinsicMetadataCore, | RawExtrinsicMetadataCore, | ||||
) | ) | ||||
from swh.loader.package.utils import download | from swh.loader.package.utils import download | ||||
▲ Show 20 Lines • Show All 141 Lines • ▼ Show 20 Lines | ) -> Optional[Revision]: | ||||
"extrinsic": { | "extrinsic": { | ||||
"provider": self.client.metadata_url(self.deposit_id), | "provider": self.client.metadata_url(self.deposit_id), | ||||
"when": self.visit_date.isoformat(), | "when": self.visit_date.isoformat(), | ||||
"raw": p_info.raw_info, | "raw": p_info.raw_info, | ||||
}, | }, | ||||
}, | }, | ||||
) | ) | ||||
def get_extrinsic_origin_metadata(self) -> List[RawExtrinsicMetadataCore]: | |||||
origin_metadata = self.metadata["origin_metadata"] | |||||
return [ | |||||
RawExtrinsicMetadataCore( | |||||
format="sword-v2-atom-codemeta-v2-in-json", | |||||
metadata=json.dumps(origin_metadata["metadata"]).encode(), | |||||
discovery_date=None, | |||||
) | |||||
] | |||||
def load(self) -> Dict: | def load(self) -> Dict: | ||||
# First making sure the deposit is known prior to trigger a loading | # First making sure the deposit is known prior to trigger a loading | ||||
try: | try: | ||||
self.metadata = self.client.metadata_get(self.deposit_id) | self.metadata = self.client.metadata_get(self.deposit_id) | ||||
except ValueError: | except ValueError: | ||||
logger.error(f"Unknown deposit {self.deposit_id}, ignoring") | logger.error(f"Unknown deposit {self.deposit_id}, ignoring") | ||||
return {"status": "failed"} | return {"status": "failed"} | ||||
# Then usual loading | # Then usual loading | ||||
r = super().load() | r = super().load() | ||||
success = r["status"] != "failed" | success = r["status"] != "failed" | ||||
if success: | |||||
# Update archive with metadata information | |||||
origin_metadata = self.metadata["origin_metadata"] | |||||
logger.debug("origin_metadata: %s", origin_metadata) | |||||
authority = self.get_metadata_authority() | |||||
self.storage.metadata_authority_add([authority]) | |||||
fetcher = self.get_metadata_fetcher() | |||||
self.storage.metadata_fetcher_add([fetcher]) | |||||
self.storage.object_metadata_add( | |||||
[ | |||||
RawExtrinsicMetadata( | |||||
type=MetadataTargetType.ORIGIN, | |||||
id=self.url, | |||||
discovery_date=self.visit_date, | |||||
authority=authority, | |||||
fetcher=fetcher, | |||||
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 | ||||
snapshot_id = hash_to_bytes(r["snapshot_id"]) | snapshot_id = hash_to_bytes(r["snapshot_id"]) | ||||
branches = self.storage.snapshot_get(snapshot_id)["branches"] | branches = self.storage.snapshot_get(snapshot_id)["branches"] | ||||
▲ Show 20 Lines • Show All 116 Lines • Show Last 20 Lines |