如何知道ansible中ovirt_*模块的嵌套_属性名称?怎么把它们都拿来?

如何知道ansible中ovirt_*模块的嵌套_属性名称?怎么把它们都拿来?,ansible,ovirt,Ansible,Ovirt,令我惊讶的是,由于ansible 2.9(我相信)ovirt信息模块嵌套的dictrionaries在默认情况下不会被获取。而且,由于最有价值的数据通常驻留在那里,我正在寻找获取它们的简单方法。刚开始 fetch_nested: yes 通常只提供ID,这不是很有用,为了获得所需的数据,我需要知道给定模块的属性字典的确切名称,这是有问题的,直到我看到用该字典获取的输出(鸡或蛋) 文档对attibute的名称非常吝啬,例如: -嵌套的_属性指定应从API获取的属性列表。仅当fetch_neste

令我惊讶的是,由于ansible 2.9(我相信)ovirt信息模块嵌套的dictrionaries在默认情况下不会被获取。而且,由于最有价值的数据通常驻留在那里,我正在寻找获取它们的简单方法。刚开始

fetch_nested: yes
通常只提供ID,这不是很有用,为了获得所需的数据,我需要知道给定模块的属性字典的确切名称,这是有问题的,直到我看到用该字典获取的输出(鸡或蛋)

文档对attibute的名称非常吝啬,例如:

-嵌套的_属性指定应从API获取的属性列表。仅当fetch_nested“为true”时,此参数才适用。[默认值:(空)]类型:列表版本\添加:2.3

对于大多数ovirt*\u信息模块,此条目在文档中是相同的,例如ovirt\u事件\u信息、ovirt\u存储\u域\u信息、ovirt\u nic\u信息(具有不同的嵌套数据和不同的属性名称)

如果有一种方法可以把它们全部取出来,那就太好了,比如:

        nested_attributes: 
        - all
遗憾的是,这不起作用。如果有人告诉我获取attr名称的明显方法,我将不胜感激。没有它,我发现ovirt模块很难使用

我知道更改是为了速度而应用的,但它似乎不那么友好,可能会破坏为以前版本编写的代码


描述ovirt*\u信息模块的行为在ovirt 4.4中观察到,我怀疑ansible ovirt模块的行为是否会与ovirt 4.3有所不同,例如,但谁知道…

首先感谢这个问题,老实说,我也有一段时间在脑子里想着它

获取嵌套属性的所有名称的最简单方法可能是使用API。 例如,您需要知道VMs模板的所有可能属性,因此可以转到
https://FQCN/api/vms/ID
在这里您可以看到模板href,在这里您可以看到所有可用的属性。 不是最好的方法,但最简单

我对如何改进/解决这个问题没有什么想法,但我需要小心不要破坏任何向后兼容性

因此,如果您可以在GitHub repo[1]上就此提出一个问题,我们可以与其他开发人员进行讨论


[1]

我终于打开了一个功能请求。至于建议的解决方案,我无法使用它,因为我无法遵循指定的url。我可以访问api/vms/ID,但没有“模板”端点。很抱歉,这是我的错误。我将修复该示例并用我的进度对功能请求进行注释。