Zenoss ZenPack开发的典型工作流程是什么?

时间:2009-10-15 15:35:54

标签: python database zenoss

ZenPack开发似乎涉及创建各种持久状态。有一些模型类代表显式持久状态。存在与模型对象相关联的皮肤。有组织者和持久类的实例(数据源,图表等)。

考虑到在开发过程中,许多事情在完成之前就做错了,并且考虑到加载一个做错事的ZenPack会对Zenoss实例造成持续影响,并且这些后果很难撤消,开发ZenPack的常用方法是什么?

2 个答案:

答案 0 :(得分:2)

我对Zenoss没有具体了解,但这种情况对于任何以某种形式持续配置的系统来说都很常见,例如Zope和Plone。

工作流程是您创建一个可以删除和复制的测试环境,但部分和整体。例如,对于典型的Plone站点,您可以使用buildout来复制开发环境,包括所有依赖项。然后在您开发的扩展模块中,您有一个脚本/函数,允许您根据需要设置持久性配置。

这使您能够轻松地重新创建所需的状态。

您还有工作流程“阶段”。开发,通常在每个开发人员本地机器上完成。暂存/测试,在测试服务器上完成。这是通过将生产计算机持久状态复制到登台计算机,然后运行任何设置/升级脚本,并确保一切正常来完成的。最后升级生产服务器。

答案 1 :(得分:2)

本周我正在与Zenoss 3.1合作解决这个问题。

<强>买者 - 如果你做了一个糟糕的zenpack - 没有等待 - 你犯了一个坏的时候,它可能会被困在Zope的数据库中,并且没有办法把它拿出AFAIK。所以 -

首先使用GUI对干净的Zenoss网站进行完整备份。

稍后您需要使用zenrestore进行恢复以清理混乱。

我认为有两个答案:

1)如果是一个portlet -

只能使用鸡蛋安装Portlet。通常,Zenoss文档建议您使用GUI界面创建鸡蛋,但这会产生一个荒谬的开发迭代。但是在其他方面的文档中有解释。如果您的代码(可能从知名社区portlet开始,如Show Graph或Google Maps)对于portlet而言是正确的,而不是常规zenpacks,那么

  • 您在标准zenpack表单中命名代码的顶级目录, 与版本。

  • 进入该目录并运行

python setup.py bdist_egg

将创建dist和build目录。

  • 鸡蛋将在dist目录中。

  • 使用GUI安装鸡蛋。

  • 注意它没有完全安装...... grrrrrr。

  • 重启守护进程 - zopectl restart ; zenhub restart

  • 测试。

  • 使用GUI删除portlet。重复。

<强>陷阱:   - 你必须在顶层目录中有setup.py和一个或多个INSTALL.txt MANIFEST.in README.txt。

  • Setup.py必须与您的目录名称匹配。

  • 如果您使用旧的或复制的 init .py文件及其 init .pyc版本,则可能需要删除这些pyc文件以强制执行用于重新创建它们的python脚本。

  • 我喜欢按如下方式运行脚本以确定: rm -f ./dist ./build ; python setup.py bdist_egg

2)如果是普通的zenpack

文档告诉你如何做到这一点。

  • 从任何来源安装你的zenpack;通常你会从GUI创建的空白开始。

  • 将文件从/usr/local/zenoss/zenoss/Zenpacks/yourzenpack复制到您的代码开发区域。

  • 使用GUI卸载zenpack。

  • 在命令行中以zenoss用户身份运行zpack install --link命令(查找语法)以安装实际存在于代码区域中的zenpack。

  • 测试

  • 更新您的代码。

  • 在zenoss的命令行中,运行zopectl restart ; zenhub restart

  • 测试。

  • 重复。快乐。