Přejít na obsah
Skip to main content

Požadavek file-system

Účel a dopady​

Obálka pro dávku souborových operací nad souborovým systémem serveru: výpis (list), výmaz (delete), kopírování (copy), přesun (move) a založení adresáře (mkdir). Dopad závisí na konkrétní dílčí operaci – list jen čte, ostatní mění obsah souborového systému.

Dostupnost, kontext, oprávnění apod.​

Všechny operace vyžadují r_admin – dosavadní dokumentace toto omezení vůbec neuváděla.

XML požadavek (syntax + popis)​

<request>
<file-system
transactional="{string}"
name="none|single|all|complex"
>
<list ... /> *
<delete ... /> *
<copy ... /> *
<move ... /> *
<mkdir ... /> *
</file-system>
</request>

Parametry a pravidla (atributy, potomci)​

Zjištěná chyba serveru – atribut transactional​

Server nejprve testuje přítomnost atributu transactional, ale jeho hodnotu pak čte z atributu name. V praxi to znamená: pouhé transactional="single" transakční režim nezapne – aby k zapnutí došlo, musí být zároveň přítomen i atribut name s hodnotou single/all/complex, a to bez ohledu na to, co je v samotném transactional. Bez rozpoznané kombinace zůstává chování netransakční (none).

  • transactional - Přítomnost aktivuje čtení transakčního režimu (viz chyba výše); vlastní hodnota se nečte. (typ: string; nepovinný)
  • name - Skutečný nositel hodnoty transakčního režimu kvůli chybě výše. (typ: enum; povolené hodnoty: single, all, complex; nepovinný) – single: každá operace ve vlastní transakci; all: celá dávka jako jedna transakce; complex: součást širší transakce celého požadavku.

Potomci: libovolná kombinace a počet list/delete/copy/move/mkdir, zpracovávají se v pořadí výskytu.

Odebráno: uzel rename uváděný dosavadní dokumentací je v aktuální verzi serveru zakomentovaný a nikdy se nevykoná – odeslání <rename> skončí jako status="error" detail="Neznama operace nebo chybi cil".

Společné atributy list/delete/copy/move/mkdir​

  • path - Zdrojová cesta (virtuální adresář nebo relativní cesta); chybí-li, operace selže jako "Neplatna cesta". (typ: string; povinný)
  • recurse - Rekurzivní zpracování podadresářů. (typ: bool; nepovinný; výchozí: false)
  • files - Zpracovávat soubory. (typ: bool; nepovinný; výchozí: true)
  • dirs - Zpracovávat adresáře. (typ: bool; nepovinný; výchozí: true pro list, jinak false)
  • older-than, newer-than - Filtr podle data poslední změny. (typ: datetime; nepovinné)
  • larger-than, smaller-than - Filtr podle velikosti v bajtech. (typ: number; nepovinné)
  • dirs-by-time-check - Aplikovat časový filtr i na adresáře. (typ: bool; nepovinný; výchozí: false)
  • regex - Regulární výraz pro výběr položek. (typ: string; nepovinný) – dosavadní dokumentace uváděla regexp, ve skutečnosti se čte regex.

delete/move navíc​

  • del-previously-empty-dirs - Mazat i dříve prázdné nadřazené adresáře. (typ: bool; nepovinný; výchozí: false) – omezení serveru: hodnota "true" nemá zjistitelný efekt.
  • del-root-dir - Smazat i samotný kořenový adresář path. (typ: bool; nepovinný; výchozí: false)
  • error-if-not-empty - Neprázdný adresář je chybou. (typ: bool; nepovinný; výchozí: true) – v dosavadní dokumentaci zcela chyběl.

copy/move navíc​

  • target - Cílová cesta; chybí-li, operace selže jako "Neznama operace nebo chybi cil". (typ: string; povinný)
  • overwrite - Přepisování existujících cílů. (typ: enum; nepovinný; výchozí: always; povolené hodnoty: skip-existing, older, newer, always; jakákoli jiná hodnota se chová jako „nikdy nepřepisovat“) – hodnota fail uváděná ve starší dokumentaci se chová stejně jako neznámá hodnota.

mkdir​

Jen path a recurse ze společných atributů výše.

Příklady požadavku​

(Zatím bez ověřeného příkladu.)

Zpracování a vedlejší účinky​

  • V režimu name="single" má každá operace vlastní transakci; v name="all" se celá dávka odvolá, pokud jakákoli operace selže; name="complex" napojuje operace na širší transakci celého požadavku (viz obálka požadavku).
  • Cesty procházejí resolveVirt (virtuální adresáře); mimo nakonfigurované úložiště nejsou přístupné cesty s ...

XML odpověď (syntax + popis)​

<response>
<file-system>
<list status="ok|error" count="{number}" detail="{string}"></list> *
<delete status="ok|error" count="{number}" detail="{string}"></delete> *
<copy status="ok|error" count="{number}" detail="{string}"></copy> *
<move status="ok|error" count="{number}" detail="{string}"></move> *
<mkdir status="ok|error" count="{number}" detail="{string}"></mkdir> *
</file-system>
</response>

Každý potomek odpovídá jedné operaci požadavku ve stejném pořadí; count je přítomen jen při status="ok", detail jen při status="error". Uzly nejsou nikdy sebeuzavírající (i bez obsahu mají vždy otevírací a uzavírací značku).

Příklady odpovědi​

(Zatím bez ověřeného příkladu.)

Chyby a reakce​

  • status="error" detail="Nemate patricna opravneni" – volající nemá r_admin (per-operace, stejná chyba pro každou operaci v dávce).
  • status="error" detail="Neplatna cesta" – chybí/neplatný path.
  • status="error" detail="Neznama operace nebo chybi cil" – chybí target u copy/move, nebo neznámý název uzlu (vč. rename).
  • status="error" detail="Cesta nebyla nalezena" – list/copy/move na neexistující zdrojovou cestu.
  • status="error" detail="Cil se nepodarilo smazat" / "Pri vymazu nastala chyba" – delete.
  • status="error" detail="Adresar se nepodarilo zalozit" – mkdir.
  • status="error" detail="Pri kopirovani/presunu adresarove struktury nastala chyba" – copy/move.
  • status="error" detail="Transakci se nepodarilo zahajit" – transakční režim single/all, selhání zahájení transakce.
  • V režimu all/complex selhání jedné operace přeskočí (status="error" detail="Transakce byla preskocena") zpracování zbylých operací v dávce.

Související požadavky​