在解析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')]))])
现在我的理解是,当我在上面的结果上用下面一行做item()时,它应该可以工作
{% 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
中获取列表,但似乎没有任何方法可以帮助
答案 0 :(得分:0)
要么我不太了解Python,要么就会发生奇怪的事情。只需添加支票即可完成上述工作。所以工作块看起来像(当然是部分代码):
O(sqrt(n))
我的理解是{% set hostname = salt['publish.publish']('roles:*{}*'.format(role), 'grains.item', 'fqdn', 'grain') %}
{% if hostname is not none %}
{% for host, site in hostname.items() %}
检查仅用于检查以防if
为空。但看起来即使有数据 - 如果需要检查。仍然很想知道这个谜!