Народ, подскажите, пожалуйста как модулю uri запретить рендерить тело запроса? задача -

через HTTP Api залить витрину в графану
шаги такие:
- заливаются папки, запоминаются их ИДшники
- читаются витрины из JSONок, из них формируются тела запросов, куда подставляется ИД папки
- тело запроса передается в таск, выполняющий запрос, таким образом:
- name: Push dashboard
include_tasks: execute_request.yml
vars:
api: "{{ grafana.api.dashboards }}"
body: "{{ request }}"

а дальше execute_request.yml:
- name: Execute POST request
register: post_response
uri:
url: "......."
headers:
Accept: "application/json"
Content-type: "application/json"
Authorization: "{{ token }}"
method: POST
body: "{{ body }}"
body_format: json

И всё было прекрасно, пока среди источников данных не появился эластик, в запросах которого используются конструкции вида {{someone.keyword}}, которые ансибл пытается шаблонизировать и, ожидаемо, падает с ошибкой отсутствия переменной

Пробовал менять body_format на raw, как-то менять тело запроса фильтрами to_json, string - всё равно тело проходит попытку рендера.
Модуль grafana_dashboard не подходит, через него залить витрину в нужную папку возможности нет (или я был невнимателен и такое можно?).

Добавлю еще, что кейс с графаной - только один из множества.
Другие сервисы, у которых в теле используются конструкции {{ ... }} испытывают абсолютно аналогичную боль.

1 ответов

4 просмотра

Боль ты получаешь, только когда используешь в шаблоне или переменных двойные фигурные скобки, которые (ой, сюрприз!) воспринимаются шаблонизатором как обращение к шаблонизатору. А вообще в доке по Jinja2 вот чего пишут: https://jinja.palletsprojects.com/en/2.11.x/templates/#escaping.

Похожие вопросы

Обсуждают сегодня

Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
с помощью чего можно бота добавить как админа в чат? (условно в боте есть кнопка, нажатие на которую приводит тебя к выбору чата и выдаче прав боту)
ηє νєямσяє
5
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
Добрый день, подскажите как правильно сделать filter в backend-e. Есть модель (товар) у который связь belongsToMany (компания), компаний > 4k, поэтому выборку типа ->all(); н...
Max Dubovsky
7
А как заставить поиск искать? Есть такая формочка <select class="form-control custom-select" name="brand_id" data-handler="onGetBrands"></select>
Денис Александрович
5
А цены чем оправданы?
Lencore
7
Каким то образом можно определить ширину экрана пользователя перед загрузкой partial-а? Надо рассчитать ширину кадров слайдера для ресайза картинок для container-fluid.
Point 111
22
напомните, как заменить placeholder , а не добавить содержимое ?
Artem N
4
Карта сайта