1

作为juju框架的新手,我正在研究简单machine的部署,目的是action在其上执行简单的操作。

所以,我创建了一个charm包,构建它并使用juju. 该包包含一个action名为“touch”,它接受一个字符串(即:文件名)作为输入,并在机器上创建一个具有该名称的文件。

在机器变为“活动”之后,当我使用以下命令列出已部署机器中的操作时:

juju actions charmLayer

action在它的描述旁边列出了我的列表。

现在,当执行“触摸”动作时,使用:

juju run-action charmLayer/0 touch filename="/home/ubuntu/manual.txt"

我收到以下消息:

使用 ID 排队的操作:d6b39965-9a2c-41c6-8db7-b4060e587033

然后,当我检查动作状态时:

juju show-action-status d6b39965-9a2c-41c6-8db7-b4060e587033

我得到以下信息:

行动:

动作:触摸

完成时间:“2019-05-03 11:56:51”

编号:d6b39965-9a2c-41c6-8db7-b4060e587033

状态:失败

单元:

魅力层/0

然后当我检查动作输出时:

juju show-action-output d6b39965-9a2c-41c6-8db7-b4060e587033

我得到以下信息:

消息:退出状态 1

状态:失败

定时:

完成时间:2019-05-03 11:56:51 +0000 UTC

入队:2019-05-03 11:56:48 +0000 UTC

开始时间:2019-05-03 11:56:51 +0000 UTC

检查日志时使用:

juju debug-log

我看到以下输出:

unit-charmLayer-0: 13:23:14 调试 unit.charmLayer/0.touch Traceback(最近一次通话最后):

unit-charmLayer-0: 13:23:14 调试 unit.charmLayer/0.touch 文件“/var/lib/juju/agents/unit-charmLayer-0/charm/actions/touch”,第 6 行,在

unit-charmLayer-0: 13:23:14 DEBUG unit.charmLayer/0.touch from charms.reactive import main, set_flag

unit-charmLayer-0: 13:23:14 调试 unit.charmLayer/0.touch ImportError: No module named 'charms.reactive'

我的问题是为什么我会得到ImportError这个charms.reactive

4

1 回答 1

0

你可以发布你的代码吗?如果我们能看到你是如何构成你的魅力的,我们也许可以提供帮助。(这应该是评论,而不是答案。我没有代表)。

作为回答,您是在导入charms.reactive 吗?如果您正在编写一个响应式魅力,那么如果您这样做了,它应该已经包含在内了charm init。否则,您可能需要import charms.reactive在 Python 脚本的顶部添加。

于 2019-05-07T19:43:26.320 回答