2009-10-15 63 views
2

ZenPack開發似乎涉及創建各種持久狀態。有表示持久狀態的模型類。有與模型對象關聯的皮膚。有組織者和持久類的實例(數據源,圖表等)。什麼是Zenoss ZenPack開發的典型工作流程?

考慮到在開發過程中,許多事情在它們做對之前做錯了,並且考慮到加載一個錯誤操作的ZenPack會對其載入的Zenoss實例產生持續影響,並且這些後果很難撤消,開發ZenPack的常用方法是什麼?

回答

2

我對Zenoss沒有什麼特別的瞭解,但是這種情況對於任何一種形式持久化配置的系統來說都很常見,例如Zope和Plone。

而工作流程是您創建一個可以刪除和複製的測試環境,但部分和全部。例如,對於典型的Plone站點,您有一個buildout,它允許您複製包括所有依賴項的開發環境。然後,在您開發的擴展模塊中,您有一個腳本/函數,可以讓您根據需要設置持久性配置。

這會導致您能夠輕鬆地重新創建所需的狀態。

您還有工作流程「階段」。開發,通常在每個開發人員本地機器上完成。分期/測試,這是在測試服務器上完成的。這是通過將生產機器持久狀態複製到登臺機器,然後運行任何設置/升級腳本並確保一切正常。最後你升級生產服務器。

+0

我希望有一些更模塊化或輕量級的東西(即「快」)。不過,我認爲這不是事情有時候的方式。我從此停止了與Zenoss的合作,所以我沒有機會通過這個來看看它是如何工作的。不過,由於沒有其他人表示支持,我猜想這可能是Zenoss開發所期望的。謝謝。 – 2009-12-02 17:06:40

+0

您能否向我們提供一些如何製作ZODB副本的提示? – Bunyk 2014-06-27 10:50:18

+0

@Bunyk:你複製Data.fs文件。請注意,應用程序也可以將數據存儲在Data.fs文件之外。例如,Plone將圖像和文件存儲在您必須複製的blobstorage目錄中。 – 2014-06-29 18:22:10

2

本週我正在用Zenoss 3.1處理這個問題。

Caveat- 如果你做一個壞的zenpack - 無需等待 - 你犯了一個糟糕的一個,它可能會卡在Zope的數據庫,有沒有辦法把它弄出來AFAIK。所以 -

首先使用GUI做一個乾淨的Zenoss站點的完整備份。

以後你需要使用zenrestore來恢復清理垃圾。

有兩個答案,我想:

1)如果只能用一個雞蛋可以安裝它的一個portlet-

的Portlet。通常Zenoss文檔建議你使用GUI界面來創建雞蛋,但是這使得開發迭代變得荒謬。但是在其他方面的文檔中有解釋。如果你的代碼,可能開始一個衆所周知的社區門戶像顯示圖形或谷歌地圖,是門戶正確的,而不是常規的zenpacks,然後

  • 你的名字你的代碼的標準zenpack的頂級目錄表格, 與版本。

  • cd進入這個目錄並運行

python setup.py bdist_egg

,這將創造DIST並建立目錄。

  • 雞蛋將在dist目錄中。

  • 使用GUI安裝雞蛋。

  • 注意其未完全安裝... grrrrrr。

  • 重新啓動守護程序 - zopectl restart ; zenhub restart

  • 測試。

  • 使用GUI刪除portlet。重複。

陷阱: - 必須setup.py,並在頂級目錄,也許一個或多個OF- INSTALL.TXT MANIFEST.in的README.txt。

  • Setup.py必須與您的目錄名稱匹配。

  • 如果使用舊的或複製與他們初始化初始化 .py文件 .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

  • 測試。

  • 重複。要開心。