Problem:
Я использую API Foreman для обновления хоста. Мне нужно обновить Environments и Hostgroups хоста. Обновить нужно так, чтобы существующая информация о хосте не стиралась.
Для достижения цели, я использую информацию по этой ссылке:
https://apidocs.theforeman.org/foreman/2.0/apidoc/v2/hosts/update.html
Я использую python для отправки PUT запросов, и он идеально отрабатывает.
ss.put("/api/hosts/1299", params={‘host[hostgroup_id]’: 1, ‘host[environment_id]’: 1}, headers={‘Content-Type’: ‘application/json’})
Поясню. Все отлично работает и обновляется. Но я не могу понять, почему запрос PUT не затирает информацию о хосте 1299(/api/hosts/1299), оставляя только Environments и Hostgroups?
Насколько я знаю методу PUT нужно передавать все параметры для обновления хоста, но почему-то работает и так.
Когда я переношу в другую Hostgroups, то у меня даже автоматически классы переносятся для хоста. Хотя я не указывал этого в параметрах запроса PUT.
Прошу объяснить данное поведение. И безопасно ли использовать подход описанный выше?
** Информация о API Foreman:**
{‘result’: ‘ok’, ‘status’: 200, ‘version’: ‘1.20.3’, ‘api_version’: 2}
** Остальная информация о Foreman:**
ii foreman 1.20.3-2
ii foreman-cli 1.20.3-2
ii foreman-debug 1.20.3-2
ii foreman-installer 1.20.3-2
ii foreman-postgresql 1.20.3-2
ii foreman-proxy 1.20.3-2
ii ruby-foreman-default-hostgroup 5.0.0-1
ii ruby-hammer-cli-foreman 0.15.1-1