【问题标题】:How to filter results from ansible tower api query如何过滤来自 ansible tower api 查询的结果
【发布时间】:2019-11-04 04:02:30
【问题描述】:

使用邮递员,我只需要显示 name=TestWorkflow 的结果

以下是我的查询返回的结果: 获取http://ansible-awx.pxdtools.io:8000/api/v2/workflow_job_template_nodes/

{
    "results": [
        {
            "id": 1323,
            "summary_fields": {
                "workflow_job_template": {
                    "id": 121,
                    "name": "TestWorkflow",
                }
              }
        },
        {
            "id": 29,
            "summary_fields": {
                "workflow_job_template": {
                    "id": 61,
                    "name": "Livraison en TEST",
                },
            }
        }
    ]
}

我已经尝试了很多这些过滤器:https://docs.ansible.com/ansible-tower/latest/html/towerapi/filtering.html

此查询不起作用,因为名称在 results/summary_fields 中

获取http://ansible-awx.pxdtools.io:8000/api/v2/workflow_job_template_nodes/?name=TestWorkflow

{
    "detail": "WorkflowJobTemplateNode has no field named 'name'"
}

我想要的预期结果是

{
    "results": [
        {
            "id": 1323,
            "summary_fields": {
                "workflow_job_template": {
                    "id": 121,
                    "name": "TestWorkflow",
                }
              }
        }
    ]
}

【问题讨论】:

    标签: django api ansible filtering


    【解决方案1】:

    试试下面selectattr的任务

    - set_fact:
        results: "{{ data.results|
                     selectattr('summary_fields.workflow_job_template.name',
                                'match',
                                'TestWorkflow')|
                     list }}"
    

    【讨论】:

    • 我的第一个想法是直接从我的 get 中过滤,但如果不可能,我想你的建议 io 可以正常工作,但我必须修复其他事情,因为我的 GET 有很多结果,所以页面不同循环,我必须找到方法。
    • 可以选择自己写filters。见examples
    猜你喜欢
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2021-02-21
    • 1970-01-01
    相关资源
    最近更新 更多