代码之家  ›  专栏  ›  技术社区  ›  Jean-Paul Calderone

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

  •  2
  • Jean-Paul Calderone  · 技术社区  · 15 年前

    Zenback开发似乎涉及到各种持久状态的创建。存在显式表示持久状态的模型类。存在与模型对象关联的外观。有持久类(数据源、图表等)的组织者和实例。

    考虑到在开发过程中,很多事情在做对之前就做错了,并且考虑到装载一个做错了的zenback会对它所装载的zenoss实例产生持久的影响,并且这些后果很难撤销,那么zenback的开发通常采用什么方法呢?

    2 回复  |  直到 13 年前
        1
  •  2
  •   Lennart Regebro    15 年前

    我不知道Zenoss的具体情况,但是这种情况对于任何一种或另一种形式的持久配置的系统都很常见,例如Zope和Plone。

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

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

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

        2
  •  2
  •   John P. Fisher    13 年前

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

    告诫—— 如果你做了一个坏的zenback-不,等等- 什么时候 你做了一个坏的,它可能会卡在Zope的数据库里,而且没有办法把它弄出来。所以-

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

    稍后,您将需要使用zenrestore来恢复以清除混乱。

    我认为有两个答案:

    1)如果它是portlet-

    只能使用egg安装portlet。通常,Zenoss文档建议您使用GUI界面创建鸡蛋,但这会导致一次荒谬的开发迭代。但是在其他方面的文件中也有解释。如果您的代码(可能从一个众所周知的社区portlet开始,如show graph或google maps)对于portlet是正确的,而不是常规的zenpacks,那么

    • 您在标准zenback表单中命名代码的顶部目录, 有版本。

    • 将CD放入该目录并运行

    python setup.py bdist_egg

    这将创建dist和build目录。

    • 鸡蛋将在dist目录中。

    • 使用GUI安装鸡蛋。

    • 注意它没有完全安装…GRRRRR

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

    • 测试。

    • 使用GUI删除portlet。重复。

    高查斯: -您必须有setup.py,并且可能在顶部目录的readme.txt中有一个或多个-install.txt manifest.

    • setup.py必须与目录名匹配。

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

    • 我想运行脚本如下,以确保: rm -f ./dist ./build ; python setup.py bdist_egg

    2)如果是普通的zenback

    医生会告诉你怎么做。

    • 从任何来源安装Zenpack;通常,您只需从GUI创建的空版本开始。

    • 从复制文件 /usr/local/zenoss/zenoss/Zenpacks/yourzenpack 进入代码开发区域。

    • 使用GUI卸载zenback。

    • 作为Zenoss用户,在命令行上运行zpack install--link命令(查找语法),以安装实际位于代码区域中的Zenpack。

    • 测试

    • 更新您的代码。

    • 在命令行上作为zenoss运行 Zopectl重启;Zenhub重启

    • 测试。

    • 重复。要快乐。