Назад | Перейти на главную страницу

Минимальный пример расширения уже существующего API и вызова CLI в FreeIPA 4

Я хочу добавить поля в определение пользователя в FreeIPA 4.4.

Прямо сейчас у меня есть изменил схему пользователя и добавили поля в веб-интерфейс для редакций.

Теперь я хотел бы иметь возможность изменять добавленные новые поля (код страны c и название страны co) через JSON API и, следовательно, через инструмент командной строки. Для этого потребуется изменить уже существующий вызов API, например user_add, user_show и т.п.

Я нашел примеры таких плагинов, но для FreeIPA 3, и кажется, что API Python с тех пор изменился, потому что они не работают, когда я адаптирую те, у которых хорошее имя поля. Я получаю следующую ошибку:

$ ipa
ipa: ERROR: ImportError: No module named plugins
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/ipalib/cli.py", line 1348, in run
    api.finalize()
  File "/usr/lib/python2.7/site-packages/ipalib/plugable.py", line 707, in finalize
    self.__do_if_not_done('load_plugins')
  File "/usr/lib/python2.7/site-packages/ipalib/plugable.py", line 422, in __do_if_not_done
    getattr(self, name)()
  File "/usr/lib/python2.7/site-packages/ipalib/plugable.py", line 586, in load_plugins
self.add_package(package)
  File "/usr/lib/python2.7/site-packages/ipalib/plugable.py", line 613, in add_package
    module = importlib.import_module(name)
  File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/usr/lib/python2.7/site-packages/ipaclient/plugins/country.py", line 1, in <module>
    from ipalib.plugins import user
ImportError: No module named plugins
ipa: ERROR: an internal error has occurred

Есть ли где-нибудь в Интернете минимальный пример добавления одного или двух новых атрибутов для пользователя FreeIPA 4.4?

Небольшая точность, знаю хотя бы один пример полноценный плагин, который добавляет объект совершенно нового типа, но, насколько я понимаю, это неприменимо в случае добавления новых полей для уже существующего объекта.