Dokumentace k modulu eDeposit.amqp.kramerius¶
Požadavky¶
aplikace:
- přijímá data k importu z aplikace
RabbitMQ
přesAMQP
protokol - vytváří
FOXML
soubor - přijímá náhled první strany ve formátu
jpeg2000
- kopíruje importní balíček do
Kramerius server
přesscp
protokol - odesílá archivní balíček do
Storage server
presAMQP
protokol - startuje proces importu voláním
REST API
naKramerius server
- zjištuje průběh importu voláním
REST API
naKramerius server
- maže importní balíček na
Kramerius server
poté, co jejKramerius server
úspěšně naimportuje - posílá zpátky zprávu o úspěšném importu do aplikace
RabbitMQ
přesAMQP
protokol - kontroluje, že všechny linky ve
FOXML
souboru existují - 1x import zopakuje, jestli dojde k chybě importu
Omezení¶
aplikace:
- pouští v
Kramerius server
k 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 FOXML
souboredeposit-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á
AMQP
službu k exportu do Krameria - a poskytne informace k vytvořeníFOXML
viz Odeslání žádosti o export edeposit.amqp.kramerius
převedeMARCXML
data doMODS
pomocíAMQP
službyedeposit.amqp.marcxml2mods
edeposit.amqp.kramerius
vytvoříFOXML
soubor a celý importní balíček viz Importní balíčekedeposit.amqp.kramerius
odešle importní balíček do archivustorage serveru
přesAMQP
protokoledeposit.amqp.kramerius
zkopíruje importní balíček naKramerius server
viz Uložení dat k importu do Krameriaedeposit.amqp.kramerius
voláREST API
naKramerius server
- aplikace spustí naKramerius server
proces importuedeposit.amqp.kramerius
kontroluje stav importu - aplikace se pravidelně dotazuje naKramerius server
jak proces importu probíháedeposit.amqp.kramerius
smaže data k importu - jakmile proces importu úspěšně skončí viz Smazání importovaných dat v Kramerioviedeposit.amqp.kramerius
posílá zprávu s odpovědí - odesílá jí do aplikaceRabbitMQ
přesAMQP
protokol.
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.kramerius
je 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"