Changeset View
Changeset View
Standalone View
Standalone View
swh/loader/package/deposit/loader.py
Show First 20 Lines • Show All 247 Lines • ▼ Show 20 Lines | def load(self) -> Dict: | ||||
self.metadata() | self.metadata() | ||||
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 | ||||
return super().load() | return super().load() | ||||
def finalize_visit(self, status_visit: str, **kwargs) -> Dict[str, Any]: | def finalize_visit( | ||||
self, status_visit: str, errors: Optional[List[str]] = None, **kwargs | |||||
) -> Dict[str, Any]: | |||||
r = super().finalize_visit(status_visit=status_visit, **kwargs) | r = super().finalize_visit(status_visit=status_visit, **kwargs) | ||||
success = status_visit == "full" | success = status_visit == "full" | ||||
# 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", errors=errors, | |||||
) | |||||
return r | return r | ||||
snapshot_id = hash_to_bytes(r["snapshot_id"]) | snapshot_id = hash_to_bytes(r["snapshot_id"]) | ||||
snapshot = snapshot_get_all_branches(self.storage, snapshot_id) | snapshot = snapshot_get_all_branches(self.storage, snapshot_id) | ||||
if not snapshot: | if not snapshot: | ||||
return r | return r | ||||
branches = snapshot.branches | branches = snapshot.branches | ||||
logger.debug("branches: %s", branches) | logger.debug("branches: %s", branches) | ||||
▲ Show 20 Lines • Show All 81 Lines • ▼ Show 20 Lines | def metadata_get(self, deposit_id: Union[int, str]) -> Dict[str, Any]: | ||||
msg = f"Problem when retrieving deposit metadata at {url}" | msg = f"Problem when retrieving deposit metadata at {url}" | ||||
logger.error(msg) | logger.error(msg) | ||||
raise ValueError(msg) | raise ValueError(msg) | ||||
def status_update( | def status_update( | ||||
self, | self, | ||||
deposit_id: Union[int, str], | deposit_id: Union[int, str], | ||||
status: str, | status: str, | ||||
errors: Optional[List[str]] = None, | |||||
revision_id: Optional[str] = None, | revision_id: Optional[str] = None, | ||||
directory_id: Optional[str] = None, | directory_id: Optional[str] = None, | ||||
snapshot_id: Optional[str] = None, | snapshot_id: Optional[str] = None, | ||||
origin_url: Optional[str] = None, | origin_url: Optional[str] = None, | ||||
): | ): | ||||
"""Update deposit's information including status, and persistent | """Update deposit's information including status, and persistent | ||||
identifiers result of the loading. | identifiers result of the loading. | ||||
""" | """ | ||||
url = f"{self.base_url}/{deposit_id}/update/" | url = f"{self.base_url}/{deposit_id}/update/" | ||||
payload = {"status": status} | payload: Dict[str, Any] = {"status": status} | ||||
if revision_id: | if revision_id: | ||||
payload["revision_id"] = revision_id | payload["revision_id"] = revision_id | ||||
if directory_id: | if directory_id: | ||||
payload["directory_id"] = directory_id | payload["directory_id"] = directory_id | ||||
if snapshot_id: | if snapshot_id: | ||||
payload["snapshot_id"] = snapshot_id | payload["snapshot_id"] = snapshot_id | ||||
if origin_url: | if origin_url: | ||||
payload["origin_url"] = origin_url | payload["origin_url"] = origin_url | ||||
if errors: | |||||
payload["status_detail"] = {"loading": errors} | |||||
self.do("put", url, json=payload) | self.do("put", url, json=payload) |