如何在ansible中知道ovirt_*模块的nested_attributes名称?如何全部获取?

问题描述

令我惊讶的是,由于 ansible 2.9(我相信)ovirt 信息模块嵌套的字典不是获取的。而且,由于最有价值的数据通常驻留在那里,我正在寻找获取它们的简单方法。只是设置

fetch_nested: yes

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

文档在属性名称方面非常吝啬,例如:

- nested_attributes Specifies list of the attributes which should be fetched from the API. This parameter apply only when fetch_nested' is true'. [Default: (null)] type: list version_added: 2.3

这个条目在大多数 ovirt*_info 模块的文档中是相同的,例如ovirt_event_info、ovirt_storage_domain_info、ovirt_nic_info(嵌套数据不同,属性名不同)。

如果有办法把它们全部取出来就好了,比如:

        nested_attributes: 
        - all

遗憾的是这不起作用。如果有人向我指出获取 attr 名称的明显方法,我将不胜感激,如果没有它,我会发现 ovirt 模块难以使用。

我知道应用这些更改是为了提高速度,但它似乎不太用户友好,并且可能会破坏为以前版本编写的代码

描述的 ovirt*_info 模块行为是在 ovirt 4.4 中观察到的,例如,我怀疑 ansible ovirt 模块的行为会与 ovirt 4.3 不同,但谁知道...

解决方法

首先感谢这个问题,老实说,我也有一段时间想过这个问题。

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

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

因此,如果您可以在 GitHub 存储库 [1] 上围绕此问题提出问题,我们可以与其他开发人员就此展开讨论。

[1] http://github.com/ovirt/ovirt-ansible-collection