我正在使用反应性模式在python中开发一个juju魅力。我所有的钩子都是使用“基本”底层提供的装饰器来调用的。在尝试部署魅力时,我遇到了一个错误。为了解决错误,我使用了'juju调试-钩子‘和'juju -r’(dhx调试插件),但我找不到一种方法来运行魅力代码使用python遵循的反应模式.正如我所理解的,(例如,当使用dhx进行调试时),魅力执行会在导致错误的钩子之前返回到状态,然后开发人员登录到远程调试会话中。运行钩子是开发者的责任。通常,这些钩子将位于/hooks目录下,只需执行它们即可运行。这是不可能使用反应模式,因为没有进入点的钩子,但一切只是一系列的反应状态.
发布于 2016-12-16 14:25:18
我也有同样的问题,因为在某种程度上,即使当我得到安装钩子失败的错误时,我的set_state('myservice.installed')也会被触发。我没有找到具体的解决方案来运行特定的代码,但是一个很好的解决方法是更改通常会触发代码并重新运行hooks/install的事件。我只在juju debug-hooks,而不是juju dhx上试过,但这做了我的工作。
在我的例子中,我看到我的当前状态被设置为“安装”。通过更改事件以触发代码,我能够重新运行安装钩子。在我的debug-hooks会话中,我可以看到我的钩子哪里失败了。
from charms.reactive import when, set_state
import charms.apt
@when('myservice.installed')
def install():
charms.apt.queue_install(['some-package'])
// do some extra stuff
set_state('myservice.installed')发布于 2017-10-05 13:37:20
通过在hooks/目录中运行钩子来运行反应性魅力。该钩子将启动反应性框架并启动“级联状态”。
hooks/目录中的钩子文件由layer-basic和charm build创建。如果钩子文件不存在于layer-basic目录中,请确保在layer.yaml文件中包含hooks/。
您可以在朱朱博士中找到有关调试反应性魅力的更多信息。
https://askubuntu.com/questions/804465
复制相似问题