HaveAPI-fs: připojte si API jako souborový systém

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.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *