如果存在PuppetDb Python脚本获取事实?

时间:2017-05-15 19:03:39

标签: python puppet

我正在使用PuppetDb python library。如果它存在,我想打印一个事实的值。

for group in groups:
  node = puppetdb.node(group[0])
  if hasattr(node.facts, 'custom_fact'):
    print node.fact('custom_fact')

我对python来说比较新,但是我读了here上面的方法应该允许我检查对象是否有属性。

不确定我是否误解了说明或者PuppetDb对象的行为是否不同。

如果custom_fact存在,我该怎么打印?

编辑:当我使用print node.facts时,它表示node.facts是绑定方法。 所以我也尝试了这个(osfamily这个事实,因为它应该总是返回一些东西):

for group in groups:
  node = puppetdb.node(group[0])
  facts = node.facts()
  print facts
  if hasattr(facts, 'osfamily'):
    print facts('osfamily')

print facts返回<generator object facts at 0x7f906ffe35f0>

print node.facts('custom_fact')永远不会运行。

同时尝试dir(facts)寻找不会返回任何内容的属性,这让我相信这不是一个普通的对象。

1 个答案:

答案 0 :(得分:0)

我发现使用try/except效果更好:

for group in groups:
  print group[0]
  node = puppetdb.node(group[0])
  try:
    print node.fact('custom_fact').value
  except:
    pass