def main(job, fail_type, transfer_uuid, transfer_path): # Update storage service that reingest failed session = storage_service._storage_api_session() aip_uuid = None # Get aip_uuid from reingest METS name if os.path.isdir(os.path.join(transfer_path, 'data')): mets_dir = os.path.join(transfer_path, 'data') elif os.path.isdir(os.path.join(transfer_path, 'metadata')): mets_dir = os.path.join(transfer_path, 'metadata') else: mets_dir = transfer_path for item in os.listdir(mets_dir): if item.startswith('METS'): aip_uuid = item.replace('METS.', '').replace('.xml', '') job.pyprint('AIP UUID for this Transfer is', aip_uuid) if aip_uuid: url = storage_service._storage_service_url() + 'file/' + aip_uuid + '/' try: session.patch(url, json={'reingest': None}) except Exception: # Ignore errors, as this may not be reingest pass # Delete files for reingest transfer # A new reingest doesn't know to delete this because the UUID is different from the AIP, and it causes problems when re-parsing these files transfer = Transfer.objects.get(uuid=transfer_uuid) if transfer.type == 'Archivematica AIP': File.objects.filter(transfer_id=transfer_uuid).delete() return 0
def main(job, fail_type, transfer_uuid, transfer_path): # Update storage service that reingest failed session = storage_service._storage_api_session() aip_uuid = None # Get aip_uuid from reingest METS name if os.path.isdir(os.path.join(transfer_path, "data")): mets_dir = os.path.join(transfer_path, "data") elif os.path.isdir(os.path.join(transfer_path, "metadata")): mets_dir = os.path.join(transfer_path, "metadata") else: mets_dir = transfer_path for item in os.listdir(mets_dir): if item.startswith("METS"): aip_uuid = item.replace("METS.", "").replace(".xml", "") job.pyprint("AIP UUID for this Transfer is", aip_uuid) if aip_uuid: url = storage_service._storage_service_url() + "file/" + aip_uuid + "/" try: session.patch(url, json={"reingest": None}) except Exception: # Ignore errors, as this may not be reingest pass # Delete files for reingest transfer # A new reingest doesn't know to delete this because the UUID is different from the AIP, and it causes problems when re-parsing these files transfer = Transfer.objects.get(uuid=transfer_uuid) if transfer.type == "Archivematica AIP": File.objects.filter(transfer_id=transfer_uuid).delete() metrics.transfer_failed(transfer.type, fail_type) return 0
def main(job, fail_type, sip_uuid): # Update SIP Arrange table for failed SIP file_uuids = models.File.objects.filter(sip=sip_uuid).values_list("uuid", flat=True) job.pyprint("Allow files in this SIP to be arranged. UUIDs:", file_uuids) models.SIPArrange.objects.filter(sip_id=sip_uuid).delete() # Update storage service that reingest failed session = storage_service._storage_api_session() url = storage_service._storage_service_url() + "file/" + sip_uuid + "/" try: session.patch(url, json={"reingest": None}) except Exception: # Ignore errors, as this may not be reingest pass return 0