[devel] Public read-only API for prometheus

Igor Zubkov igor.zubkov на gmail.com
Пн Июл 19 16:09:31 UTC 2010


Hi!

Предлагаю обсудить будущую реализацию API для prometheus. Мое мнение
такое что через API должны быть доступны все данные что есть на сайте.
Или, если посмотреть на это с другой стороны, что бы через это API
можно было реализовать такой же сайт с контентом как и prometheus.

Пока моей фантазии хватило на:
match '/api/v1/count/:vendor/:branch', :to => 'api#count' или просто

(эти ссылки на текущем prometheus.a.o пока не работают)
/api/v1/count/ALT%20Linux/Sisyphus вернёт количество src.rpm которые
сейчас есть в Сизифе.
/api/v1/count/ALT%20Linux/SisyphusARM вернёт количество src.rpm
которые сейчас есть в порте Сизифа на arm
Ну и так далее, с вендорами и бранчами.

Дёргать это примерно так:
$ curl  http://server/api/v1/count/ALT%20Linux/Sisyphus

Я предлагаю:
/api/v1/packagers -- вернёт список логинов маинтейнеров
/api/v1/packager/:login -- вернёт Full Name маинтейнера
/api/v1/packager/:login/acl -- вернёт список acl для маинтейнера Сизифе
/api/v1/packager/:login/gear -- вернёт список gear репозиторией маинтейнера
/api/v1/packager/:login/bugs -- вернёт список номеров не закрытых
багов на маинтейнере
/api/v1/packager/:login/allbugs -- вернёт список номеров всех багов на
маинтейнере
/api/v1/packager/:login/repocop -- отчёты repocop для всех пакетов маинтейнера

/api/v1/srpm/:branch/:name -- информация о пакете :name из бранча :branch
/api/v1/srpm/:branch/:name/changelog -- changelog пакета
/api/v1/srpm/:branch/:name/spec -- spec пакета
/api/v1/srpm/:branch/:name/get -- список из src.rpm и бинарных пакетов
собранных их этого src.rpm пакета
/api/v1/srpm/:branch/:name/gear -- список из маинтейнеров у которых в
gear есть пакет :name
/api/v1/srpm/:branch/:name/bugs -- номера открытых багов на пакет :name
/api/v1/srpm/:branch/:name/allbugs -- номера всех багов на пакет :name
/api/v1/srpm/:branch/:name/repocop -- отчёты repocop на пакет :name

Этого должно вполне хватить что бы сделать prometheus через только это API.

Это интересно, но не очень. Надо что-то по интереснее. Например такое:
/api/v1/requires/:vendor/:branch/:name -- список зависимостей пакета
:name из бранча :branch
/api/v1/provides/:vendor/:branch/:name -- список того что провайдит пакет
/api/v1/buildreq/:vendor/:branch/:name -- список сборочных
зависимостей пакета (тут наверно их надо будет сделать два, первый из
spec а второй уже полный список пакетов которые ставятся в hasher для
сборки)
/api/v1/reqforbuild/:vendor/:branch/:name -- список пакетов которые
требуют для сборки :name

/api/v1/:library/:symbol -- список пакетов которые подцепили :symbol
из библиотеки :library и которые надо будет пересобрать в транзакции

Для это всего добавить пару консольных утилит и будет просто чудесно.
Как пример, говорим rpmsodiff и получаем не только что у нас ушло и
пришло, но список пакетов это заденет.

Ну как? Ничего не забыл? Или может у кого есть какие-то ещё предложения?

P.S.: И да, это только read-only API. О API для записи можно и потом
подумать, если понадобится.

-- 
Igor Zubkov
http://hi.im/ice


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