尝试以csv作为逗号对输出进行故障安全逻辑,通过JInja2模板将每列分隔开。故障安全逻辑应该告诉我模块或技术中的任何项目是否丢失。任何帮助,以了解jinja2模板的逻辑。
变量
swproduct_list:
header: Sw product,sw product module,technology
details:
- name: BASE PACKAGE
Modules:
- Polygon Manager
- Common Manager
tech:
- SPRING CLOUD
- SPRING CLOUD
- name: DMA
Modules:
- KUA on demand
- KUA parameters
tech:
- SPRING CLOUD
- SPRING CLOUD期望输出
Sw product,sw product module,technology
DMA,KUA on demand,SPRING CLOUD
DMA,KUA parameters,SPRING CLOUD
BASE PACKAGE,Polygon Manager,SPRING CLOUD
BASE PACKAGE,Common Manager,SPRING CLOUD解决方案- Jinja2模板
{% for intf in swproduct_list.details -%}
{% for ll in intf.Modules -%}
{{ intf.name }},{{ ll }},{{ intf.tech[loop.index0] }}
{% endfor %}
{% endfor %}发布于 2021-12-12 11:52:54
感谢Zeitounator在a comment中提出的建议
创建一个任务,在呈现模板之前使用
fail或assert模块检查每个元素是否有相同数量的模块和技术。
在启动jinja模板之前,我应用了以下assert方法,并且它工作了:
- set_fact:
check_total: |
{
'modules_total': {{ (swproduct_list.details | selectattr('Modules', 'defined') | map(attribute='Modules') | flatten | list) | length }},
'tech_total': {{ (swproduct_list.details | selectattr('tech', 'defined') | map(attribute='tech') | flatten | list) | length }},
}
- debug:
var: check_total
- assert:
that:
- check_total.modules_total == check_total.tech_total
quiet: true
fail_msg: >
total no of modules should match with total no of techhttps://stackoverflow.com/questions/70297713
复制相似问题