在解析salt命令的结果时,我遇到了一个相当奇怪的问题 . 我正在运行的命令是
{% set hostname = salt['publish.publish']('roles:*{}*'.format(role), 'grains.item', 'fqdn', 'grain') %}
输出如下:
OrderedDict([('1.server.com', OrderedDict([('fqdn', '1.server.com')])), ('0.server.com', OrderedDict([('fqdn', '0.server.com')]))])
现在我的理解是,当我在上面的结果上使用下面一行上的items()时,它应该工作
{% for hostname, fqdn in salt['publish.publish']('roles:*{}*'.format(role), 'grains.item', 'fqdn', 'grain').items() %}
但是当我在上面的行中使用 items()
时,我开始遇到错误:
failed: Jinja variable 'None' has no attribute 'items'
我尝试了其他几种方法(做items() . items()或将结果存储在变量中然后运行for循环)以获得 OrderedDict
列表,但似乎没有任何方法可以提供帮助 .
1 回答
要么我不太了解Python,要么就会发生奇怪的事情 . 只需添加支票即可完成上述工作 . 所以工作块看起来像(当然是部分代码):
我的理解是
if
检查仅用于检查以防hostname
为空 . 但看起来即使有数据 - 如果需要检查 . 知道这个谜仍然很好奇!