1. Adding Devices Programatically

Devices can be added to Zenoss through the UI but also through a programmatic interface. This how to will describe adding a device using that interface.

1.1. Using a REST call

Adding a device through a rest call can be done by a simple web get. In this example we will use wget to add a device. If you use wget don't for get to escape the "&" or wrap the URL in single quotes.

[zenos@zenoss $] wget 'http://admin:zenoss@MYHOST:8080/zport/dmd/DeviceLoader/loadDevice?deviceName=NEWDEVICE&devicePath=/Server/Linux'

The result of this command will be the log of auto-discovery and you can look for the string "NEWDEVICE loaded!" to see if it was successful. Possible failure messages are: "NEWDEVICE exists" and "no snmp found"

1.2. Using an XML-RPC Call from Python

This is an example of how to add a device using python. Because XML-RPC can be used from any language feel free to use your favorite. What is important here is the base URL in ServerProxy, passing named parameters, and calling "loadDevice" on your proxy object.

>>> from xmlrpclib import ServerProxy
>>> serv = ServerProxy('http://admin:zenoss@MYHOST:8080/zport/dmd/DeviceLoader')
>>> dev = {'deviceName':'NEWDEVICE', 'devicePath':'/Server/Linux'}
>>> serv.loadDevice(dev)

You can check on the device with another XML-RPC call:

>>> from xmlrpclib import ServerProxy
>>> serv = ServerProxy('http://admin:zenoss@MYHOST:8080/zport/dmd/Devices/Server/Linux/devices/NEWDEVICE')
>>> print serv.getManageIp()

1.3. XML-RPC Attributes

 XML-RPC Attributes Description
deviceName the name or IP of the device. If it's a name it must resolve in DNS
devicePath the device class where the first "/" starts at "/Devices" like "/Server/Linux" the default is "/Discovered"
tag the tag of the device
serialNumber the serial number of the device
zSnmpCommunity snmp community to use during auto-discovery if none is given the list zSnmpCommunities will be used
zSnmpPort snmp port to use default is 161
zSnmpVer snmp version to use default v1 other valid values are v2
rackSlot the rack slot of the device.
productionState production state of the device default is 1000 (Production)
comments any comments about the device
hwManufacturer hardware manufacturer this must exist in the database before the device is added
hwProductName hardware product this must exist in the manufacturer object specified
osManufacturer OS manufacturer this must exist in the database before the device is added
osProductName OS product this must exist in the manufacturer object specified
locationPath path to the location of this device like "/Building/Floor" must exist before device is added
groupPaths list of groups for this device multiple groups can be specified by repeating the attribute in the url
systemPaths list of systems for this device multiple groups can be specified by repeating the attribute in the url
statusMonitors list of status monitors (zenping) for this device default is "localhost"
performanceMonitor performance monitor to use default is "localhost"
discoverProto discovery protocol default is "snmp" other possible value is "none"