0
有辭典鍵過濾掉從字典
{% set intellij = salt['grains.filter_by']({
'default': {
'orig_name': 'idea-IC-145.1617.8',
'download_url': 'www.example.com',
'archive_format': 'tar',
'archive_opts': 'xfz',
'owner': 'root',
'owner_link_location': '/blabla/bin/idea',
},
}, merge=salt['pillar.get']('intellij')) %}
(在map.jinja定義)和一些函數定義接受的參數幾乎與字典的鍵(讓我們承擔的「功能」同樣實際上是一個宏)
{% macro some_macro(state_id, orig_name, download_url, archive_format, owner, archive_opts=None) %}
我想過濾掉一些鍵,這樣我可以這樣調用:
{{ some_macro('some_state', **intellij) }}
我已經試過各種結構,如:
{{ some_macro('intellij', **(intellij|rejectattr("owner_link_location"))) }}
這將產生
Jinja error: call() argument after ** must be a mapping, not generator
快譯通,理解(而不是神社過濾器)也不起作用。
如何實現上述功能(過濾出鍵或至少用簡潔的方式用「提取」和過濾的字典調用函數)?
似乎「some_macro」的定義是不隨你怎麼稱呼它是一致的。你可以粘貼你的支柱文件的內容來提供更多的細節嗎? –
支柱是空的,不會覆蓋任何東西。我修復了錯字,謝謝! – lakier
看來,rejectattr只能用於過濾列表,但'intellij'正在映射。如果你只是想過濾鍵,爲什麼不把宏定義爲'''some_macro(state_id,orig_name,download_url,archive_format,owner,archive_opts = None,owner_link_location = None)''' –