使用Salt的LocalClient,如何在test.ping命令中实现相同的结果或指定'-v'arg?

时间:2014-08-21 20:49:11

标签: python salt-stack

使用CLI,我可以输入以下内容:

  盐' *' test.ping -v

结果输出如下:

  

minion_A:
      真
  minion_B:
      真
  minion_C:
      真
  minion_D:
      Minion没有回来

如何使用LocalClient获得相同的结果? 这就是我目前正在尝试的内容,只返回响应为True的仆从:

self.localClient.cmd('*', 'test.ping', ['-v'])  

更新
根据命令中可能存在带有arg元组的 bug 的指示,我还尝试了以下内容:

args = ('-v',)
return self.localClient.cmd('*', 'test.ping', arg=args)

......遗憾的是,仍然没有成功

3 个答案:

答案 0 :(得分:6)

test.ping函数不接受任何参数,-v传递给salt命令。请参阅:ping

以下两个命令完全相同:

# salt '*' test.ping -v
Executing job with jid 20140825123756314894
-------------------------------------------

palabras:
    True

# salt '*' -v test.ping
Executing job with jid 20140825124044472307
-------------------------------------------

palabras:
    True

要获取原始输出的原始版本,请使用以下代码。 (您可以直接调用SaltCMD来获取完整的格式化输出,但它会使用自己的LocalClient。)

from pprint import pprint
import salt.client
local = salt.client.LocalClient()
pprint( local.cmd_full_return(
    '*', 'test.ping', verbose=True,
    ) )

输出

Executing job with jid 20140825131629740741
-------------------------------------------

{'palabras': {'ret': True, 'success': True}}

答案 1 :(得分:2)

文档中未提及参数show_timeout,可以设置为True以包含超时的结果,并且每次都不会打印调试信息。使用salt 2015.8.4 (Beryllium)进行了测试,但在撰写本文时看起来像still defaultsFalse

import salt.client
from pprint import pprint
local = salt.client.LocalClient()

# Use show_timeout=True to make salt return
# results for disconnected minions
pings = local.cmd('*', 'test.ping', show_timeout=True)
pprint(pings)

输出

{'host_one': True,
 'host_two': 'Minion did not return. [Not connected]',
 'host_three': True}

答案 2 :(得分:0)

我能做的最好的事情就是从localClient a test.ping执行。

如果回答是{},我假设从盐主人那里得到假回报。 否则,收到True。