FUSE umožňuje připojit prakticky cokoliv jako souborový systém. S HaveAPI-fs si můžete připojit své API a pracovat s ním jako se soubory a adresáři.
haveapi-fs je virtuální souborový systém založený na FUSE, který umožňuje připojit jakékoli API využívající HaveAPI, a pracovat s ním na úrovni adresářů a souborů. Samozřejmě to funguje také s naším api.vpsfree.cz (dokumentace).
Práce s haveapi-fs by měla být ještě jednodušší, než s konzolovým klientem, protože je vše hned vidět jako adresáře a soubory, nemusíme zjišťovat názvy objektů, akcí, parametrů, přepínačů, apod.
haveapi-fs je napsán v Ruby a instaluje se tak pomocí RubyGems:
$ gem install haveapi-fs
API se připojí následujícím příkazem:
$ haveapi-fs <api_url> <mountpoint>
tedy konkrétně naše API jako
$ haveapi-fs https://api.vpsfree.cz /mnt/api.vpsfree.cz
Odpojení se provede buď přímo příkazem umount
jako root, nebo fusermount -u /mnt/api.vpsfree.cz
jako neprivilegovaný uživatel.
Mountpoint obsahuje seznam objektů v API a soubory s nápovědou:
$ cd /mnt/api.vpsfree.cz $ tree -L 1 . ├── ... ├── dataset/ ├── environment/ ├── location/ ├── node/ ├── vps/ ├── help.html ├── help.man ├── help.md ├── help.txt └── ...
Soubory help.{html,man,md,txt}
se nachází v každém adresáři a obsahují vždy popis aktuálního adresáře, tzn. jaké má vlastnosti a jaké má podadresáře a soubory.
V adresáři objektu je seznam všech jeho záznamů, tedy např. seznam všech VPS patřících k účtu:
$ tree -L 1 vps/ vps ├── 1112/ ├── 1171/ ├── 1234/ ├── 1245/ ├── actions/ ├── create.yml ├── help.html ├── help.man ├── help.md └── help.txt
Záznamy můžeme rovnou i filtrovat:
$ tree -L 1 vps/by-node/103/by-os_template/26 vps/by-node/103/by-os_template/26 ├── 1112/ └── ... $ cat vps/by-node/103/by-os_template/26/1112/node_id 103 $ cat vps/by-node/103/by-os_template/26/1112/os_template_id 26
Podíváme-li se do adresáře nějakého konkrétního VPS, uvidíme seznam jeho atributů jako soubory, asociované objekty jako adresáře a akce, které můžeme volat, jsou v adresáři actions/
:
$ tree -L 1 vps/1112 vps/1112 ├── actions/ ├── id ├── hostname ├── node/ ├── os_template/ ├── edit.yml ├── save └── ... $ cat vps/1112/hostname moje-vps $ cat vps/1112/node/domain_name node3.prg $ cat vps/1112/node/location/label Praha $ cat vps/1112/os_template/label Scientific Linux 6.6
Dle oprávnění lze vybrané atributy i měnit, např. změna hostname:
$ echo novy-hostname > vps/1112/hostname $ echo 1 > vps/1112/save
Zavolat jde i jakákoli jiná akce:
$ tree -L 1 vps/1112/actions vps/1112/actions ├── ... ├── passwd/ ├── reinstall/ ├── restart/ ├── start/ ├── stop/ ├── swap_with/ └── update/ $ echo 1 > vps/1112/actions/passwd/exec
Informace o úspěchu či neúspěchu akce je vždy v souboru status
:
$ cat vps/1112/actions/passwd/status 1
Výstupní parametry jsou pak v adresáři output/
:
$ cat vps/1112/actions/passwd/output/password cmrdBcm72KkAM85Ux2MK
Přes další soubory se lze dostat k případné chybové hlášce (message
), seznamu chyb (errors/
) a také zadávat vstupní parametry (input/
).
Akce lze vykonávat i pomocí exec.yml
souboru, ve kterém se vyplní vstupní parametry v YAMLu a po uložení a zavření souboru se akce vykoná. Takto se dají jednoduše vytvářet nové objekty (create.yml
) i upravovat existující (edit.yml
).
$ vim vps/1112/edit.yml hostname: dalsi-zmena :wq
Kompletní popis toho, co haveapi-fs umí, je v README.md.