ZenPack Complexity
This page documents an ongoing effort to document various aspects of ZenPack complexity. By complexity, we are referring to the level of development of ZenPack functionality. A ZenPack that is more complex is one that has more or more advanced functionality than a comparable ZenPack.
The great majority of extension points are well-known and discoverable without executing any of the ZenPack code and can be inspected by an automated program.
Contents
General Configuration
Defined by >0 <object> elements in $ZP_DIR/objects/*.xml.
Event Transforms
Defined by the presence of EventClass or EventClassInst objects in $ZP_DIR/objects/*.xml with content in the transform property.
Command Datasource Plugins
Defined by the presence of a script within the ZenPack referenced in the commandTemplate property of a BasicDataSource class object in $ZP_DIR/objects/*.xml. Commonly these scripts are found in $ZP_DIR/libexec/, but this isn't mandatory or the case for many ZenPacks.
Miscellaneous Scripts
Defined by the presence of executable files in $ZP_DIR/bin/.
Datasource Types
Defined by the presence of Python modules in $ZP_DIR/datasources/.
Modeler Plugins
Defined by the presence of Python modules in $ZP_DIR/modeler/plugins/ (recursively.)
User Interface Components
Defined by the presence of resourceDirectory or viewlet elements in $ZP_DIR/*.zcml (recursively.)
Model Extension
Defined by the presence of modules and classes defined in $ZP_DIR that are subclasses of ZenModelBase. Sometimes hinted at by __init__.productNames, but not mandatory. This one could be tricky to determine without executing code.
API Extensions
Defined by the presence of adapter elements in $ZP_DIR/*.zcml (recursively) with a provides attribute referencing a subclass of Products.Zuul.interfaces.IInfo. This is also a good sign of model extension.
New APIs
Defined by the presence of adapter elements in $ZP_DIR/*.zcml (recursively) with a provides attribute referencing a subclass of Products.Zuul.interfaces.IFacade.
Collector Daemons
Defined by the presence of executable files in $ZP_DIR/daemons/.
Hub Services
Defined by the presence of Python modules in $ZP_DIR/services/. Typically associated with a collector daemon.
Impact Adapters
Defined by the presence of adapter elements in $ZP_DIR/*.zcml (recursively) with a provides attribute referencing a subclass of ZenPacks.zenoss.Impact.impactd.interfaces.IRelationshipDataProvider, ZenPacks.zenoss.Impact.impactd.interfaces.INodeTriggers, or ZenPacks.zenoss.Impact.stated.interfaces.IStateProvider.
ETL Adapters
Defined by the presence of adapter elements in $ZP_DIR/*.zcml (recursively) with a provides attribute reference a subclass of Products.Zuul.interfaces.IReportableFactory or Products.Zuul.interfaces.IReportableFactory.
Unit Tests
Defined by the presence of Python modules in $ZP_DIR/tests/.