Объединить строку для создания переменной в jinja2 - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь работать с шаблоном для управления некоторой информацией о сервере.
Код работает одинаково для prod или stage.

{%- for key_uber, value_uber in uber_dict|dictsort -%}
    {%- for env_item in ["stage" , "prod"] -%}
        {#SET UP OPERATION#}
        {%- if value_uber.environment.prod == false and value_uber.prod != [] -%}
            {%- set operation_type = 'create' -%}
        {%- elif value_uber.environment.prod != false and value_uber.prod != [] -%}
            {%- set operation_type = 'update' -%}
        {%- else -%}
            {%- set operation_type = 'cancel' -%}
        {%- endif -%}
    {%- endfor -%}
    {{- card_list.append(operation_type) -}}
{%- endfor -%}

По сути, я хотел бы заменить env_item для всех продуктов или этапов.
Можно ли объединить или объединить переменную для создания новой переменной?

Разъяснение и примеры
Итак, позвольте мне попытаться добавить некоторые пояснения и некоторые примеры uber_dict

Это основа c Состав Uber_dict:

{
  "app_1": {

    "criticality": "3 - Normal",
    "owner": [
      "owner1@nomail.com"
    ],
    "prod": [
      "server1",
      "server2"
    ],
    "stage": [
      "server3",
      "server4"
    ]
  },
  "app_2": {
    "criticality": "3 - Normal",
    "owner": [
      "owner2@nomail.com"
    ],
    "prod": [
      "server1"
    ],
    "stage": [
      "server5"
    ]
  }
 }

Я пытаюсь сделать код шаблона независимым от среды.
Когда я вызываю value_uber.environment.prod , вместо того, чтобы иметь prod, я могу иметь prod или stage Например:

value_uber.environment.prod -> value_uber.environment.env_item

Спасибо

1 Ответ

0 голосов
/ 22 января 2020

В конце концов это оказалось проще, чем я думал.

{%- for key_uber, value_uber in uber_dict|dictsort -%}
    {%- for env_item in ["stage" , "prod"] -%}
        {#SET UP OPERATION#}
        {%- if value_uber.environment[env_item] == false and value_uber[env_item] != [] -%}
            {%- set operation_type = 'create' -%}
        {%- elif value_uber.environment[env_item] != false and value_uber[env_item] != [] -%}
            {%- set operation_type = 'update' -%}
        {%- else -%}
            {%- set operation_type = 'cancel' -%}
        {%- endif -%}
    {%- endfor -%}
    {{- card_list.append(operation_type) -}}
{%- endfor -%}
...