Karesansui
Поскольку после переезда на debian у меня накрылась вебморда к libvirt'у, решил не восстанавливать её, а сначала посмотреть, что понаписали за эти полгода с предыдущего раза.
Ну так вот, набрёл на этот проектик. Вроде то что надо, сильно много за собой не тянет, питон, sqlite, да пару питоньих либ. В прошлый раз я на него тоже смотрел краем глаза, но не дошёл.
Прелюдия
Сабж. Итак, что собой представляет этот проект.
Из зависимостей тянется:
- pyxml, которая не развивается авторами с 2001 года, но живёт сторонними патчами до сих пор.
- официальное описание: "100% pure python daemon which executes background job commands queued in database". т.е. по сути это at/batch, но на питоне и с перделками.
- питоньи либы: python-mako, python-sqlalchemy, python-simplejson, python-rrdtool, python-flup, python-webpy, python-libvirt (но их уже кто-то собрал до меня, слава б-гу)
Будь проклят тот день когда я...
Ладно, терпимо. С матюками опакетил первые 2, + саму веб морду. По мере раскуривания процесса создания пакетов, проникся архитектурой админки. Для примера:
Что ожидается от админки, использующей libvirt? Внезапно, работы через этот самый libvirt! Так вот, админка получает данные тремя разными способами
- таки через libvirt (статус выполнения виртуалок)
- парся файлы libvirt'а (напрямую, блжад! те самые xml'ки с описанием домена)
- общаясь с "менеджером задач", опять же залезая напрямую в его базу.
У меня тут же возникает вопрос нахера нам тогда кузн^Wменеджер задач? Почему админка лезет в чужие файлы?
Идём дальше:
- задание "менеджеру задач" отправляется записью напрямую в его базу.
- при запуске приложения в директорию с исходниками (/usr/share/.../) каждый раз пишется скрипт запуска. Причём при изменении способа запуска (standalone/fcgi) его нужно удалять вручную и только потом запускать.
- на каждом управляемом хосте нужно ставить всю эту ораву: фронтенд, "менеджер задач" и питоньи зависимости.
- "менеджер задач" запускает 2 child'а, способа завершения которых штатным методом не предусмотрено. (т.е. в дефолтной поставке - 3 init-файла, в одном прописан start|stop|restart, в двух других - только stop). Не верите - смотрите в git
- уникальность имени для виртуалки определяется последовательным просмотром всех *.xml'ок в /etc/libvirt/qemu/
- Баги. Тысячи их! Например, если в libvirt'е не заведено ни одного storage pool'а - админка рушится нахер. Нет базы? Ну так я тебе её создам, нулевого размера, но инициализировать не буду, и сообщать тоже не буду, чай не маленький, сам разберёшься. Нет доступа на запись в базу менеджера? Админка рушится нахер, но не сразу, а после получения первого задания.
Да ёп вашу мать! Покажите мне того архитектора, я пожму ему горло. ИЧСХ, разработчик считает всё это это нормальным. Это не японец, а японский индус, мазафака. Тут уже не баги патчить надо, а всё переписывать нахер или вовсе закапывать проект.
В общем, если вам предложат это админить - БЕГИТЕ!