2

ZenPackの開発には、さまざまな永続的な状態の作成が含まれているようです。明示的に永続的な状態を表すモデルクラスがあります。モデルオブジェクトに関連付けられているスキンがあります。永続クラス(データソース、グラフなど)のオーガナイザーとインスタンスがあります。

開発中に、多くのことが正しく行われる前に間違って行われることを考慮し、間違ったことを行うZenPackをロードすると、ロードされるZenossインスタンスに永続的な影響があり、これらの結果を元に戻すのは難しいことを考慮すると、 ZenPackの開発のための通常のアプローチ?

4

2 に答える 2

2

Zenossについては特に何も知りませんが、この状況は、たとえばZopeやPloneのように、何らかの形で永続的な構成を持つシステムによく見られます。

そしてワークフローは、削除および複製できるテスト環境を作成することですが、部分的および全体的にです。たとえば、典型的なPloneサイトの場合、すべての依存関係を含む開発環境を複製できるビルドアウトがあります。次に、開発する拡張モジュールに、必要に応じて永続構成をセットアップできるスクリプト/関数があります。

これにより、目的の状態を簡単に再現できます。

ワークフローの「ステージ」もあります。開発。通常、各開発者のローカルマシンで行われます。テストサーバーで実行されるステージング/テスト。これは、実稼働マシンの永続状態をステージングマシンにコピーしてから、セットアップ/アップグレードスクリプトを実行し、すべてが機能することを確認することによって行われます。最後に、本番サーバーをアップグレードします。

于 2009-10-15T15:49:53.947 に答える
2

私は今週、Zenoss3.1でこの問題に取り組んでいます。

警告-あなたが悪いzenpack を作った場合-待つ必要はありません-あなたが悪いzenpackを作ったとき、それはZopeのdbで立ち往生する可能性があり、それをAFAIKから出す方法はありません。それで-

まず、GUIを使用して、クリーンなZenossサイトの完全バックアップを作成します。

後で、混乱をクリーンアップするためにzenrestoreを使用して復元する必要があります。

2つの答えがあると思います:

1)ポートレットの場合-

ポートレットは、卵を使用してのみインストールできます。通常、Zenossのドキュメントでは、GUIインターフェイスを使用して卵を作成することを推奨していますが、それはばかげた開発の反復になります。ただし、他の方法のドキュメントに説明があります。おそらくShowGraphやGoogleMapsなどのよく知られたコミュニティポートレットで始まるコードが、通常のzenpackではなく、ポートレットに対して正しい場合は、

  • コードのトップディレクトリに、バージョンを含む標準のzenpack形式で名前を付けます。

  • そのディレクトリにcdして実行します

python setup.py bdist_egg

これにより、distおよびbuildディレクトリが作成されます。

  • 卵はdistディレクトリにあります。

  • GUIを使用してeggをインストールします。

  • 完全にインストールされていないことに注意してください...grrrrrr。

  • デーモンを再起動します-zopectl restart ; zenhub restart

  • テスト。

  • GUIを使用してポートレットを削除します。繰り返す。

落とし穴: -setup.pyと、おそらく1つ以上のINSTALL.txtMANIFEST.inREADME.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

  • テスト。

  • 繰り返す。幸せになる。

于 2011-08-11T21:21:22.833 に答える