main

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'а - админка рушится нахер. Нет базы? Ну так я тебе её создам, нулевого размера, но инициализировать не буду, и сообщать тоже не буду, чай не маленький, сам разберёшься. Нет доступа на запись в базу менеджера? Админка рушится нахер, но не сразу, а после получения первого задания.

Да ёп вашу мать! Покажите мне того архитектора, я пожму ему горло. ИЧСХ, разработчик считает всё это это нормальным. Это не японец, а японский индус, мазафака. Тут уже не баги патчить надо, а всё переписывать нахер или вовсе закапывать проект.

В общем, если вам предложат это админить - БЕГИТЕ!