Saltstack itera dados de pilares de segundo nível

4

Eu posso estar perdendo algo ou isso pode ser o caminho errado para os dados do pilar do layout.

Eu quero fazer uma iteração no segundo nível de dados de pilares.

Exemplo de pilar:

repo:
     Option1:
        version1:
            display_name: "abcde"
        version2:
            display_name: "fghij"
     Option2:
        version1:
            display_name: "klmn"'

Sls:

{% for version, versioninfo in salt['pillar.get']('repo', {}).iteritems() %}
{{ versioninfo[] }}{{ versioninfo[]['display_name'] }}
{% endfor %}'

Eu quero retornar cada versão e nome de exibição, ignorando efetivamente o primeiro nível dos dados do pilar. Obviamente, o jinja acima não funciona, mas há uma maneira de fazer isso?

    
por Joseph Gardner 04.07.2014 / 11:27

1 resposta

8

Você precisa de dois níveis de iteração. .iteritems() retorna a chave e os valores (itens) para essa chave. Sua primeira iteração lhe dará acesso aos nomes e versões das opções. Sua segunda iteração lhe dará o display_name.

{% for option, versions in salt['pillar.get']('repo', {}).iteritems() %}
  {% for version, info in versions.iteritems() %}
    {{ version }}:{{ info['display_name'] }} 
  {% endfor %}
{% endfor %}

OU você pode fazer isso:

{% for option, versions in salt['pillar.get']('repo', {}).iteritems() %}
  {% for version in versions %}
    {{ version }}:{{ versions[version]['display_name'] }} 
  {% endfor %}
{% endfor %}
    
por 11.07.2014 / 17:57