Zenoss Developer's Guide


Table of Contents

1. Introduction
1. Overview
2. Standard Model
3. Availability
4. Events
5. Performance
2. Zenoss Code and Function Documentation
1. Where it is Available
3. Coding Guidelines
1. Style Guidelines
2. Docstrings
4. Programming Techniques
1. Calling Methods Using Rest
1.1. How To Call Methods Using Rest
1.2. Sending an Event
1.2.1. Using a REST Call
1.2.2. How to Call Methods Using REST
1.2.3. Using XML-RPC
1.2.4. Example Usage in Other Languages
5. Device Management
1. Adding Devices Programatically
1.1. Using a REST call
1.2. Using an XML-RPC Call from Python
1.3. XML-RPC Attributes
2. Editing Device Information
2.1. Using a REST call
2.2. Using an XML-RPC Call from Python
3. Deleting A Device
3.1. Using a REST call
3.2. Using an XML-RPC Call from Python
4. Checking If A Device Exists
4.1. Using a REST call
4.2. Using an XML-RPC Call from Python
5. Exporting a Device List
6. Zen DMD: Command-line Access to the Zenoss Object Database
1. ZenDMD
7. ZenPacks
1. ZenPack Basics
2. Creating a ZenPack
3. ZenPack Names
4. Specifying Dependencies
5. Location of ZenPack Files
6. ZenPack Structure and Contents
7. Building and Distributing ZenPacks
8. Migrating between versions
9. Converting older ZenPacks to ZenPack eggs
10. ZenPack.py
11. ZenPackPersistence.py
12. Providing DataSource classes
13. Providing daemons
14. Setuptools and the zenpacksupport egg
15. Where to Get More Information
8. Writing A Zenoss Performance Collector
9. Writing a New Zenoss Report
1. Writing a New Zenoss Report
2. Plugins
3. Describe the use of the Table Macros
4. Adding Export Buttons to Reports
10. zProperty Management
1. Adding a zProperty
1.1. Adding a zProperty to an Event
1.2. Adding a zProperty to a Device
2. Migrating the zProperty Code
11. Extending the Zenoss Model
1. How to Add a Zen Model Relationship
1.1. One-to-One (1:1) Relationships
2. One-to-Many (1:N) Relationships
3. Many-to-Many (M:N) Relationships
3.1. One-to-Many (1:N) Container Relationships
4. Zenoss XML Schema
4.1. XML Schema Breakdown
4.1.1. object Element
4.1.2. objects Element
4.1.3. property Element
4.1.4. tomany Element
4.1.5. tomanycont Element
4.1.6. toone Element
4.1.7. link Element
5. Zenoss Permissions
5.1. Adding New Permissions
5.2. Assigning Permissions to a Method
5.3. Checking Links
12. Event Classes
1. Adding an Event Class for Internal Use
1.1. Add to ZenEventClasses
1.2. Add class permanently to the ZODB
1.2.1. Add the class to the import XML
1.2.2. Write a migrate script
13. Extending the User Interface
1. Writing a ZPT in Zenoss
2. Adding Tabs
3. Creating a Dialog
4. Adding a New Menu or Menu Item
5. Creating a Table Using ZenTableManager
6. Creating an Editable Table
7. How to Save Properties via an Edit Screen
8. Creating a Dashboard Portlet
9. Customizing the Logo in The Zenoss Interface
14. Getting a DB Connection from the Pool
1. The Pool
2. The Code
15. Migrating Zenoss Code
1. Introduction and Steps
2. How It Works
3. What You Write
3.1. Implement cutover()
3.2. Supporting Code
3.3. Testing and Deployment
16. Testing
1. Zenoss Unit Tests
1.1. Introduction
1.2. Zenoss' Test Runner
1.3. Integrating With Buildbot
2. Functional User Interface Testing
2.1. Introduction
2.2. Installing and Running
2.3. Usage
2.4. Boiler Plate
2.5. Massaging Session Data
2.6. Selenium
A. Event Database Dictionary
B. TALES Expressions
1. Examples
1.1. ping
1.2. DNS forward lookup
1.3. DNS reverse lookup
1.4. snmpwalk
2. TALES Device Attributes
3. TALES Event Attributes
Glossary

List of Tables

6.1.