4. What is the structure of a ZenPack?

HelloWorldZenPack is an example ZenPack that illustrates many of the capabilities of the ZenPack architecture. Because of this it is much more complex than many ZenPacks will ever need to be. However, if you need to include more than just database objects in your ZenPack then HelloWorldZenPack is the best reference for how to do so. HelloWorldZenPack and other Community ZenPacks are available at http://www.zenoss.com/community/projects/zenpacks.

4.1. HelloWorldZenPack/

In the top level directory of our ZenPack contains our Model Extensions, this would be the Python code that may extend the existing object model in any way. In this example, we have two files, init.py and HelloWorld.py. You are not required to have an init.py file or any other files at this level. You are also not restricted to any particular number of files.

4.1.1. HelloWorldZenPack/init.py

Just like in a Python module, init.py contains any initialization code for your ZenPack.

4.1.2. HelloWorldZenPack/HelloWorld.py

Includes some example Model Extensions, which illustrates the implementation of new objects with attributes and relationships. In the file, Device, Group, Location, Admin classes are defined. Each class has an attribute and some sort of relationship with one another.

4.1.3. HelloWorldZenPack/daemons

This directory should exist in the ZenPack however this directory may be left empty. This directory contains binaries which represent additional daemons for Zenoss.

Once the ZenPack is installed the daemon will be started during a zenoss start.

4.1.4. HelloWorldZenPack/modeler

This directory should exist in the ZenPack however this directory may be left empty.

4.1.5. HelloWorldZenPack/objects

This directory should exist in the ZenPack however this directory may be left empty. This directory contains xml files to be imported into the ZeoDB. When imported an object will be instantiated based on the data in the xml files. Each xml may contain one or many object definitions.

This file is not usually edited by hand. Instead it is created during the ZenPack export process. During export of a ZenPack, Zenoss will create an objects.xml which includes any Zeo database objects which have been added to the ZenPack through the user interface. If you wish to export Zeo objects manually you can do so with the zendump command:

zendump --dataroot=<PATH_TO_OBJECT> --outfile=<XML_OUTPUT_FILE>

4.1.6. HelloWorldZenPack/reports

This directory should exist in the ZenPack however this directory may be left empty. This directory contains report plugins to be added to Zenoss.

4.1.7. HelloWorldZenPack/skins/HelloWorldZenPack

This directory should exist in the ZenPack however this directory may be left empty. This directory contains page templates that add new UI to Zenoss. The "skins" directory will be registered with Zope as a Directory View and acts like other "skins" directories within $ZENHOME/Products directory.