Dokumentace k modulu eDeposit.amqp.kramerius¶
Požadavky¶
aplikace:
- přijímá data k importu z aplikace
RabbitMQpřesAMQPprotokol - vytváří
FOXMLsoubor - přijímá náhled první strany ve formátu
jpeg2000 - kopíruje importní balíček do
Kramerius serverpřesscpprotokol - odesílá archivní balíček do
Storage serverpresAMQPprotokol - startuje proces importu voláním
REST APInaKramerius server - zjištuje průběh importu voláním
REST APInaKramerius server - maže importní balíček na
Kramerius serverpoté, co jejKramerius serverúspěšně naimportuje - posílá zpátky zprávu o úspěšném importu do aplikace
RabbitMQpřesAMQPprotokol - kontroluje, že všechny linky ve
FOXMLsouboru existují - 1x import zopakuje, jestli dojde k chybě importu
Omezení¶
aplikace:
- pouští v
Kramerius serverk importu jen jeden proces najednou. Až jeden import skončí, pustí druhý.
Export do Krameria¶
Kramerius vyžaduje¶
| original file: |
|
|---|---|
| image source file: | |
|
|
| preview file: |
Note
|
| thumbnail file: |
Note soubor je generován stejně jako |
| FOXML file: |
|
Note
Každý balíček má své UUID. Adresář s importními daty je podle
něj pojmenovaný. Stejně tak i FOXML soubor.
Struktura datového balíčku¶
Archiv obsahuje datové balíčky připravené k importu:
jan@jan-XPS-L421X:~/$ tree e65d9072-2c9b-11e5-99fd-b8763f0a3d61
e65d9072-2c9b-11e5-99fd-b8763f0a3d61
├── edeposit-url.txt
├── e65d9072-2c9b-11e5-99fd-b8763f0a3d61.xml
└── first-page
├── filename
├── mimetype
└── robotandbaby_001.jp2
1 directory, 5 files
jednotlivé soubory a adresáře:
e65d9072-2c9b-11e5-99fd-b8763f0a3d61.xml FOXMLsouboredeposit-url.txt soubor s odkazem do aplikace eDeposit first-page náhled první strany
Note
Kramerius dostane jen FOXML soubor. Celý balíček bude uložen v archivu.
Přes něj může Kramerius získat další části balíčku.
Externí odkazy ve FOXML¶
Umístění ePublikace v Krameriovi je popsáné v sekci RelsExt.
Tato sekce musí obsahovat celou cestu k ePublikaci v Krameriovi. Všechny nové větve stromu (cesta k ePublikaci) Kramerius vygeneruje.
Uložení dat¶
| edeposit storage: | |
|---|---|
|
|
| kramerius server: | |
|
|
Průběh exportu¶
- eDeposit Plone aplikace připraví data pro export do Krameria viz Vytvoření žádosti o export
- eDeposit Plone aplikace volá
AMQPslužbu k exportu do Krameria - a poskytne informace k vytvořeníFOXMLviz Odeslání žádosti o export edeposit.amqp.krameriuspřevedeMARCXMLdata doMODSpomocíAMQPslužbyedeposit.amqp.marcxml2modsedeposit.amqp.krameriusvytvoříFOXMLsoubor a celý importní balíček viz Importní balíčekedeposit.amqp.krameriusodešle importní balíček do archivustorage serverupřesAMQPprotokoledeposit.amqp.krameriuszkopíruje importní balíček naKramerius serverviz Uložení dat k importu do Krameriaedeposit.amqp.krameriusvoláREST APInaKramerius server- aplikace spustí naKramerius serverproces importuedeposit.amqp.krameriuskontroluje stav importu - aplikace se pravidelně dotazuje naKramerius serverjak proces importu probíháedeposit.amqp.krameriussmaže data k importu - jakmile proces importu úspěšně skončí viz Smazání importovaných dat v Kramerioviedeposit.amqp.krameriusposílá zprávu s odpovědí - odesílá jí do aplikaceRabbitMQpřesAMQPprotokol.
Omezení procesu importu¶
eDeposit může v Krameriovi nastarovat jen jeden proces importu. Poté co proces importu skončí, může nastarovat další.
Data v importním adresáři na serveru Kramerius mohou být uložena tak jak budou přicházet všechna. Čekají na spuštění odpovídajícího importu.
Připojované adresáře¶
Data, která Kramerius server vyžaduje, jsou uložena na serveru
Storage server. Ten je součástí projektu eDeposit.
eDeposit storage server data poskytuje pomocí smb protokolu.
Připojované adresáře na Kramerius server¶
/kramerius_edeposit_import- v tomto adresáři jsou uloženy importní balíčky čekající na import do Krameria
edeposit.amqp.krameriusje po úspěšném importu smaže
/kramerius_edeposit_storage- v tomto adresáři jsou uloženy originály ke zpřístupňování
mount -t cifs //10.10.0.42/naki/originals t2 -o username=edeposit,domain=ULTRA_NT /kramerius_edeposit_storage/kramerius_edeposit_archive- v tomto adresáři jsou uloženy balíčky importovaných dat
mount -t cifs //10.10.0.42/naki/archive t2 -o username=edeposit,domain=ULTRA_NT /kramerius_edeposit_archive
Připojované adresáře na Image server¶
/edeposit_archive- v tomto adresáři jsou uloženy importované balíčky včetně náhledu první strany
mount -t cifs //10.10.0.42/naki/archive t2 -o username=edeposit,domain=ULTRA_NT /edeposit_archive
Případy užití¶
Timeout procesu zpracování FOXML souboru na Kramerius server¶
účastnící:
- systém
vstupní podmínky:
- objevil se nějaký problém při importu do Krameria
- v importním adresáři jsou odpovídající data k importu
sled událostí:
- systém počká 1den
- pokud problém trvá,
- systém import zopakuje
- pokud již proběhl 1 pokus o import
- ePublikace skončí ve stavu “Chyba exportu do Krameria”
následné podmínky:
- na serveru Kramerius budou přepsané odpovídající importní data
- na serveru Kramerius bude spuštěn importní proces (pokud není omezení)
Import do Kramerius serveru skončil s chybou¶
účastnící:
- správce Krameria
- správce eDeposit
vstupní podmínky:
- objevil se nějaký problém při importu do Krameria
- v importním adresáři jsou odpovídající data k importu
sled událostí:
- správce Krameria se obrátí na správce eDepositu
- správce eDepositu si zobrazí detail ePublikace
- správce eDepositu klikne na linku “Zopakovat export do Krameria”
- systém zopakuje export do Krameria
následné podmínky:
- na serveru Kramerius budou přepsané odpovídající importní data
- na serveru Kramerius bude spuštěn importní proces (pokud není omezení)
Zopakování exportu z eDepositu do Krameria¶
účastnící:
- správce Krameria
- správce eDeposit
vstupní podmínky:
- objevil se nějaký problém při importu do Krameria
- v importním adresáři jsou odpovídající data k importu
sled událostí:
- správce Krameria se obrátí na správce eDepositu
- správce eDepositu si zobrazí detail ePublikace
- správce eDepositu klikne na linku “Zopakovat export do Krameria”
- systém zopakuje export do Krameria
následné podmínky:
- na serveru Kramerius budou přepsané odpovídající importní data
- na serveru Kramerius bude spuštěn importní proces (pokud není omezení)
Již proběhlo jedno automatické zopakování importu¶
účastnící:
- systém
- správce eDepositu
vstupní podmínky:
- objevil se nějaký problém při importu do Krameria
- v importním adresáři jsou odpovídající data k importu
- již proběhl jeden pokus o zopakování importu
sled událostí:
- systém přesune ePublikaci do stavu “Chyba exportu do Krameria”
- systém odešle email správci eDepositu
- správce eDepositu se pokusí problém vyřešit
následné podmínky:
- na serveru Kramerius budou smazány odpovídající importní data
Příklady kódu¶
Vytvoření žádosti o export¶
import json
import base64
marcxml=open('resources/oai_marc.xml','rb').read()
first_page_fname = 'resources/robotandbaby_001.jp2'
location_at_kramerius = "/monografie/2001/John McCarthy/Robot and Baby"
open('resources/export-request.json','wb').write(
json.dumps(
dict( __nt_name="ExportToKramerius",
uuid='e65d9072-2c9b-11e5-99fd-b8763f0a3d61',
urnnbn='urn:nbn:cz:mzk-0005ol',
b64_marcxml=base64.encodestring(marcxml),
first_page = dict(filename=first_page_fname.split('/')[-1],
mimetype='image/jp2',
b64_data = base64.encodestring(
open(first_page_fname,'rb').read())),
location_at_kramerius = location_at_kramerius,
is_private = False,
)
)
)
Odeslání žádosti o export¶
import pika
msg = open("resources/export-request.json","rb").read()
conn = pika.BlockingConnection(
pika.URLParameters("http://guest:guest@localhost:5672/kramerius"))
channel = conn.channel()
channel.basic_publish("export", "request", msg,
pika.BasicProperties(content_type="application/json",
delivery_mode=2))
Uložení dat k importu do Krameria¶
scp -i ~/.ssh/id_rsa-edeposit-to-kramerius
resources/e65d9072-2c9b-11e5-99fd-b8763f0a3d61/e65d9072-2c9b-11e5-99fd-b8763f0a3d61.xml
edeposit@HAPPKRAM2.nkp.cz:/home/kramerius/kramerius_edeposit_import
Smazání importovaných dat v Krameriovi¶
ssh -i ~/.ssh/id_rsa-edeposit-to-kramerius
edeposit@HAPPKRAM2.nkp.cz
"cd /home/kramerius/kramerius_edeposit_import;
rm e65d9072-2c9b-11e5-99fd-b8763f0a3d61.xml"