Приветствую. Ролью URI хожу в API нашего PowerDNS, например, для занесения

TXT записей. Бывает, что надо за один раз добавить несколько TXT записей для одного домена. Для выполнения этой операции PowerDNS имеет метод REPLACE (удаляет существующую запись, если она существует, и добавляют новую). Метода, который бы просто добавлял запись к уже существующим нет. Тело запроса оформлено при помощи Jinja2 шаблона.
Учитывая специфику работы метода REPLACE, я пытаюсь в одном запросе указать несколько записей сразу. PowerDNS такое позволяет, но есть проблема в оформлении и обработке Jinja2 шаблона. При помощи цикла я перебираю ключи в словаре, и для каждого ключа я извлекаю переменную, которую хочу подставить в блок метода REPLACE, чтобы в итоге получить запрос, содержащий несколько TXT записей. В предоставленном шаблоне всё работает, метод обрабатывается штатно, за исключением вывода переменной для ключа. Получается, что надо поставить "переменную в переменную". Как такое провернуть?

В переменную record, в поле content надо добавить значение i[1]['dns-01'].resource_value

{ "rrsets":
[
{
"name": "{{ sample_com_challenge.challenge_data[item]['dns-01'].record }}.",
"type": "TXT",
"ttl": 120,
"changetype": "REPLACE",
"records": [
{% set record = [] %}
{% for i in sample_com_challenge.challenge_data.items() %}
{{ record.append( {
"content": '{{ i[1]['dns-01'].resource_value }}',
"disabled": false,
"set-ptr": false
} ) }}
{% endfor %}
{{ record | join(", ") }}
]
}
]
}


На выходе я получаю:

{ "rrsets":
[
{
"name": "example.com.",
"type": "TXT",
"ttl": 120,
"changetype": "REPLACE",
"records":
[
{
"content": "i[1]['dns-01'].resource_value",
"disabled": false,
"set-ptr": false
},
{
"content": "i[1]['dns-01'].resource_value",
"disabled": false,
"set-ptr": false
}
]
}
]
}

Что хочу получить:

{ "rrsets":
[
{
"name": "example.com.",
"type": "TXT",
"ttl": 120,
"changetype": "REPLACE",
"records":
[
{
"content": "TXT RECORD 1",
"disabled": false,
"set-ptr": false
},
{
"content": "TXT RECORD 2",
"disabled": false,
"set-ptr": false
}
]
}
]
}

1 ответов

14 просмотров
Дмитрий-Норкин Автор вопроса

Отвечаю на свой же запрос. Вот такая конструкция правильно отрабатывает: { "rrsets": [ { "name": "{{ sample_com_challenge.challenge_data[item]['dns-01'].record }}.", "type": "TXT", "ttl": 120, "changetype": "REPLACE", "records": [ {% set record = [] %} {% for i in sample_com_challenge.challenge_data.items() %} {{ record.append( { "content": "\""+i[1]['dns-01'].resource_value+"\"", "disabled": false, "set-ptr": false } ) }} {% endfor %} {{ record | join(", ") }} ] } ] }

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

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

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
Всем добрый вечер, Рад оказаться в кругу единомышленников. Начинаю погружаться в мир .net веба. Зовут Ерасыл 🖖 У меня назрел вопрос: Какой процент проектов, прошедшие через в...
Ерасыл
6
Чому? Да тому що без GiT не уявляю нормального проекта а коли код в базі то то так собі
Dmytro Lukianenko
3
Карта сайта