问题描述
令我惊讶的是,由于 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] 上围绕此问题提出问题,我们可以与其他开发人员就此展开讨论。