ZenPack Complexity

From Zenoss Wiki
This is the approved revision of this page, as well as being the most recent.
Jump to: navigation, search

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.

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/.