ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
* [sisyphus] pyvfs package
@ 2012-10-05 14:56 Peter V. Saveliev
  2012-10-05 15:20 ` REAL
  0 siblings, 1 reply; 5+ messages in thread
From: Peter V. Saveliev @ 2012-10-05 14:56 UTC (permalink / raw)
  To: sisyphus

…

Отправил в Сизиф (когда-нибудь, наверное, доползёт) пакет 
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



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-10-08  3:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-05 14:56 [sisyphus] pyvfs package Peter V. Saveliev
2012-10-05 15:20 ` REAL
2012-10-05 15:43   ` Peter V. Saveliev
2012-10-05 15:55     ` REAL
2012-10-08  3:50     ` Eugene Prokopiev

ALT Linux Sisyphus discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
		sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
	public-inbox-index sisyphus

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sisyphus


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git