Ансибл Джинджа или Питон; расчет на динамической структуре JSON - PullRequest
0 голосов
/ 02 июля 2018

Я работаю над ANSIBLE 2.5, Python 2.7. Я должен выполнить расчет динамической переменной JSON. Переменная является динамической; может содержать от 1 до 1000 объектов: Пример:

var: [
    {   "name": "object1",
        "value": 1,
        "oper": 2
    },
    {   "name": "objectN",
        "value": 40,
        "oper": 8
    }
 ]

Операция, которую я должен выполнить, довольно проста: результат = (var.object_1.value * var.object_1.oper) + (var.object_2.value * var.object_2.oper) + (var.object_N.value * var.object_N.oper) ... Как бороться с этой операцией? Есть ли функция jinja для работы со структурой json, или мне нужно создать собственный «фильтр» для работы с функциями python? Спасибо всем за ваши советы!

1 Ответ

0 голосов
/ 02 июля 2018

Самое простое решение - использовать цикл (вам нужно Jinja2 2.10 для выполнения заданий для работы):

- set_fact:
    my_sum: "{% set ns = namespace(sum=0) %}{% for e in var %}{% set ns.sum = ns.sum + e.value * e.oper %}{% endfor %}{{ ns.sum }}"
...