[sisyphus] pyvfs package

Peter V. Saveliev peet на altlinux.ru
Пт Окт 5 18:56:47 MSK 2012


…

Отправил в Сизиф (когда-нибудь, наверное, доползёт) пакет 
python-module-pyvfs.

В двух словах, вдруг кому будет интересно. Первичной задачей было 
представление объектов петона в виде директорий и файлов на виртуальной 
ФС в целях мониторинга, отладки и т.п.

Быстрый старт: допустимы вы имеете скрипт my_script.py и хотите понять, 
что происходит внутри него с объектами класса MyClass. Для этого 
достаточно следующего:

from pyvfs.objectfs import export
…
@export
class MyClass(object):
     …


После этого достаточно запустить скрипт. Пока он будет работать, объекты 
класса MyClass будут доступны на виртуальной файловой системе.

Как выбрать ФС и как её подключить: для простоты интеграции с 
существующими сервисами (разрабатывается она для отладки большого 
сурового демона на петоне) библиотека ориентируется на переменные окружения.

PYVFS_PROTO — может быть 9p или fuse.

Если протокол выбран 9p, в системе необходимо иметь python-module-py9p. 
ФС будет экспортирована по умолчанию по адресу 127.0.0.1:10001, 
подключить её можно с помощью команды

# mount -t 9p -o ro,port=10001 127.0.0.1 /mnt

Если протокол выбран fuse, файловая система автоматически будет *уже* 
смонтирована в директорию, указанную в переменной окружения 
PYVFS_MOUNTPOINT. Для работы протокола fuse нужно иметь в системе 
python-module-fuse. По окончанию работы не забудьте отмонтировать ФС 
(пока что библиотека этого автоматически не делает).

…

Плюсы:

* Может использоваться для мониторинга структур без использования 
отладчиков, без установки брейкпойнтов и так далее. Библиотека не служит 
и не может служить заменой отладчикам, однако часто нужно всего лишь 
получить содержимое внутренних структур в рантайме.

* Простота интеграции: всё, что надо, это добавить в любой код две 
строчки, одну на импорт, вторую для декорирования нужного класса. Если 
необходимо интегрировать с сервисом (у меня так mdns-сервер работает, 
например, показывая свою базу как ФС), то переменные окружения можно 
экспортировать в init-скрипте или где там теперь это модно делать, либо 
использовать значения по умолчанию.

* В отличие от разных RPC API, позволяет работать простыми старыми 
средствами шелла.

По моему опыту, оказалось очень полезной, даже несмотря на стадию пре-альфа.

Минусы:

* Некоторые заморочные случаи петонических структур, криво отображённые 
на файловую структуру, могут обрушить модуль VFS. А если ФС 
примонтирована, скажем, через системный mount, то дело может дойти до 
оопса. В продакшне я бы пока не рекомендовал использовать. Ну, только 
если до конца понимаете, что может случиться.

* Пока что работает только на read-only. Но read-write режим 
запланирован на ближайшее будущее. В первом приближении он позволит 
менять значения имеющихся атрибутов (да хоть из shell-скриптов), во 
втором — создавать объекты.

* Библиотека на довольно ранней стадии развития, это тоже вряд ли можно 
занести в плюсы.

…

Более подробно с переменными окружения и примерами использования можно 
ознакомиться здесь: http://peet.spb.ru/pyvfs/

…

Ещё более подробно можно посмотреть в коде на гитхабе 
https://github.com/svinota/pyvfs или на git.alt.

…

Ya' welcome. Если кто будет использовать — буду рад фидбэку.

-- 
Peter V. Saveliev



Подробная информация о списке рассылки Sisyphus