# Diagrams in Confluence These are backups of the diagrams in confluence, so we can more easily edit them. ## High level overview ```mermaid flowchart TD A(Digifeeds Process) --> B@{ shape: disk, label: "Folder on Mayhem"} A --> C@{shape: cloud, label: "Google SFTP Server"} style B fill:#f7daf7,stroke:#333,stroke-width:4px style C fill:#f7daf7,stroke:#333,stroke-width:4px ``` ## Digifeeds Process in more detail ```mermaid flowchart LR A(Cronjob on Tang) --> B@{ shape: disk, label: "Folder on Mayhem"} A --> S3@{shape: cloud, label: "S3 Bucket"} Workflow(Workflow in K8s)--> S3 Workflow--> |Adds or checks
status for barcode| DB@{shape: database, label: "Digifeeds DB"} Workflow --> |Adds barcode to| Alma(Alma Set) Workflow --> |Checks if barcode exists| Z(Zephir Bib API) Workflow --> G@{shape: cloud, label: "Google SFTP Server"} style B fill:#f7daf7,stroke:#333 style DB fill:#c6ffff,stroke:#333 style S3 fill:#f7daf7,stroke:#333 style G fill:#f7daf7,stroke:#333 ``` ## Overview of Digifeeds Process CronWorkflow ```mermaid flowchart TD A(Get list of barcodes from zips in S3 Bucket) B(Divide barcodes into batches of 50 barcodes) C1{Is there another barcode in the list?} C2(Add Barcode to Digifeeds Alma Set) C3(Check Zephir for Barcode) C4(Move zip from S3 to Google SFTP Pickup if Ready) D1{Is there another barcode in the list?} D2(Add Barcode to Digifeeds Alma Set) D3(Check Zephir for Barcode) D4(Move zip from S3 to Google SFTP Pickup if Ready) Z(Send metrics to Prometheus) A --> B B --> C1 B --> D1 subgraph \"batch of 50 barcodes\" C1 -- yes --> C2 C2 --> C3 C3 --> C4 C4 --> C1 end subgraph \"batch of 50 barcodes\" D1 -- yes --> D2 D2 --> D3 D3 --> D4 D4 --> D1 end C1 -- no --> Z D1 -- no --> Z ``` ## Process Digifeeds Add Item to Digifeeds Set ```mermaid sequenceDiagram Workflow ->> Digifeeds DB: Get or add item for the given Barcode Digifeeds DB -->> Workflow: Returns Item information alt Item has added_to_digifeeds_set status Workflow ->> Workflow: Succeed and continue else Item does not have added_to_digifeeds_set status critical Add Barcode to digifeeds Alma Set Workflow->>Alma API: Add Barcode to Alma Set option Barcode Doesn't exist Alma API ->> Workflow: Returns Barcode not found error Workflow ->> Digifeeds DB: Add not_found_in_alma status to Item Workflow ->> Workflow: Error and exit for this barcode option Barcode is already there Alma API ->> Workflow: Returns Barcode already exists in set error Workflow ->> Digifeeds DB: Adds added_to_digifeeds_set status to Item option Success Alma API ->> Workflow: Successfully added to set Workflow->>Digifeeds DB: Adds added_to_digifeeds_set status to item end end ``` ## Check Zephir for Barcode ```mermaid sequenceDiagram Workflow ->> Digifeeds DB: Get or add item for the given Barcode Digifeeds DB -->> Workflow: Returns Item information Workflow ->> Workflow: Does item have in_zephir status? alt Item has in_zephir status Workflow ->> Workflow: Exit successfully else It does not Workflow ->> Zephir Bib API: Does Zephir have a corresponding record for the Barcode? alt It does not Zephir Bib API -->> Workflow: 404 or some other error Workflow ->> Workflow: Log that the Item is not in Zephir.
Exit successfully else It does Zephir Bib API -->> Workflow: 200 Success Workflow ->> Digifeeds DB: add in_zephir status to Item Workflow ->> Workflow: Exit successfully end end ``` ## Move Zip from S3 to Google SFTP for pickup ```mermaid sequenceDiagram Workflow ->> Digifeeds DB: Get or add item for the given Barcode Digifeeds DB -->> Workflow: Returns Item information Workflow ->> Workflow: Has the item had an in_zephir status for more than 2 weeks? alt It does not meet those conditions Workflow ->> Workflow: Log that the Item is not in Zephir.
Exit successfully else It does meet those conditions Workflow ->> Digifeeds DB: Add copying_start status to Item Workflow ->> Google SFTP: Copy the corresponding zip from S3 to the Google SFTP Workflow ->> Digifeeds DB: Add copying_end status to Item Workflow ->> Input S3 Folder: Move the corresponding zip
to the Processed Folder in the bucket Workflow ->> Digifeeds DB: Add pending_deletion status to Item end ``` ## Cronjob on Tang ```mermaid sequenceDiagram Script->>+Input Folder: Gets list of volumes loop For every volume folder Script->>Input Folder: Copies volume folder to working folder Script->>Working Folder: verifies file order alt Missing image Script-->>Script: Log error and move on to next volume else All images are there Script->>Working Folder: Zips the appropriate files in the volume folder end Script->>+S3 Bucket: Copies zipped file in Working Folder to the S3 Bucket Script->>+Processed Folder: Copies the zipped and unzipped volume directory from the working directory to the processed folder Script->>Working Folder: Deletes the zipped and unzipped volume directory Script->>Input Folder: Deletes the volume directory end Script->>Script: Logs summary of process Script->>+Prometheus Pushgateway: Sends completions time metric ``` ## Detailed version of Process Barcodes? ```mermaid sequenceDiagram Workflow->>+Input S3 Folder: Gets the list of barcodes from zips par For every Barcode Workflow ->> Digifeeds DB: Get or add item for the given Barcode Digifeeds DB ->> Workflow: Returns Item information alt Item has added_to_digifeeds_set status Workflow ->> Workflow: Succeed and continue else Item does not have added_to_digifeeds_set status critical Add Barcode to digifeeds Alma Set Workflow->>Alma API: Add Barcode to Alma Set option Barcode Doesn't exist Alma API ->> Workflow: Returns Barcode not found error Workflow ->> Digifeeds DB: Add not_found_in_alma status to Item Workflow ->> Workflow: Error and exit for this barcode option Barcode is already there Alma API ->> Workflow: Returns Barcode already exists in set error Workflow ->> Digifeeds DB: Adds added_to_digifeeds_set status to Item option Success Alm API ->> Workflow: Successfully added to set Workflow->>Digifeeds DB: Adss added_to_digifeeds_set status to item end end Workflow ->> Workflow: Check if the Item has an in_zephir status alt It does Workflow ->> Workflow: Succeed and continue else It does not Workflow ->> Zephir Bib API: Does Zephir have a corresponding record for the Barcode? alt It does not Zephir Bib API -->> Workflow: 404 or some other error Workflow ->> Workflow: Log that the Item is not in Zephir.
Succeed and Continue else It does Zephir Bib API -->> Workflow: 200 Success Workflow ->> Digifeeds DB: add in_zephir status to Item Workflow ->> Workflow: Succeed and Continue end end Workflow ->> Workflow: check if the Item has in_zephir status AND
has had it for more than two weeks alt It does not meet those conditions Workflow ->> Workflow: Log that the Item is not in Zephir. Succeed and Continue else It does meet those conditions Workflow ->> Digifeeds DB: Add copying_start status to Item Workflow ->> Google Drive: Copy the corresponding zip from S3 to the Google Drive Workflow ->> Digifeeds DB: Add copying_end status to Item Workflow ->> Input S3 Folder: Move the corresponding zip
to the Processed Folder in the bucket Workflow ->> Digifeeds DB: Add pending_deletion status to Item end end Workflow->>+Prometheus Pushgateway: Sends metrics ```