Python 使用方法失败;'模块“对象”没有属性“转储”
如前所述,我注意到Ansible中出现了一种奇怪的新行为 我有一个软件,它与一些测试文件一起安装到系统中,执行测试,然后删除它们的所有痕迹。我用它格式化输出并调用Goss 在Ansible 2.3左右的较新版本中,当测试失败,而不是获得合理的输出时,据我所知,我会收到以下不直观的错误消息,并且我的插件没有任何输出:Python 使用方法失败;'模块“对象”没有属性“转储”,python,ansible,Python,Ansible,如前所述,我注意到Ansible中出现了一种奇怪的新行为 我有一个软件,它与一些测试文件一起安装到系统中,执行测试,然后删除它们的所有痕迹。我用它格式化输出并调用Goss 在Ansible 2.3左右的较新版本中,当测试失败,而不是获得合理的输出时,据我所知,我会收到以下不直观的错误消息,并且我的插件没有任何输出: [WARNING]: Failure using method (v2_runner_on_failed) in callback plugin (<ansible.plugi
[WARNING]: Failure using method (v2_runner_on_failed) in callback plugin
(<ansible.plugins.callback.default.CallbackModule object at 0x7fb5e92efd50>):
'module' object has no attribute 'dumps'
我的成功/失败方法定义如下:
def succeed(module, **kwargs):
module.exit_json(changed=False, failed=False, goss_failed=False, **kwargs)
def fail(module, message, **kwargs):
module.fail_json(msg=message, failed=True, goss_failed=True, **kwargs)
有什么想法吗?这里有一个猜测:
ansible在ansible.plugins.callback中创建了一个模块,该模块恰好也包含一个。当你使用回调插件时,你会得到ansible.plugins.callback.json,它不包含转储。您可以通过将from\uuuuu future\uuuuu import absolute\u import添加到您的插件来修复此问题
无法复制它的原因可能是您正在本地使用Python 3,它默认为绝对导入。这里有一个猜测:
ansible在ansible.plugins.callback中创建了一个模块,该模块恰好也包含一个。当你使用回调插件时,你会得到ansible.plugins.callback.json,它不包含转储。您可以通过将from\uuuuu future\uuuuu import absolute\u import添加到您的插件来修复此问题
您无法复制它的原因可能是您正在本地使用Python 3,它默认为绝对导入。除了接受的答案之外,只想指出有两个文件需要添加导入语句 playbooks/callback_插件/sqs.py 及 playbooks/callback_plugins/task_timing.py 我没有更新task_timing.py文件,因此错误仍然存在。在这里指出这一点,以防其他人也面临同样的问题
来源:除了接受的答案之外,我只想指出有两个文件需要添加import语句 playbooks/callback_插件/sqs.py 及 playbooks/callback_plugins/task_timing.py 我没有更新task_timing.py文件,因此错误仍然存在。在这里指出这一点,以防其他人也面临同样的问题
来源:非常好,我已经更新了我的模块,现在将尝试复制功能。确认:这就是问题所在。添加绝对_导入修复了它!非常感谢你!非常好,我已经更新了我的模块,现在将尝试复制功能。确认:这就是问题所在。添加绝对_导入修复了它!非常感谢你!
def succeed(module, **kwargs):
module.exit_json(changed=False, failed=False, goss_failed=False, **kwargs)
def fail(module, message, **kwargs):
module.fail_json(msg=message, failed=True, goss_failed=True, **kwargs)