#8.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.
#8.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 forget to escape the "&" or wrap the URL in single quotes.
$ 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"
#8.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 positional parameters, and calling loadDevice
on your proxy object.
>>> from xmlrpclib import ServerProxy >>> url = 'http://admin:zenoss@MYHOST:8080/zport/dmd/DeviceLoader' >>> serv = ServerProxy(url) >>> serv.loadDevice('NEWDEVICE', '/Server/Linux')
You can check on the device with another XML-RPC call:
>>> from xmlrpclib import ServerProxy >>> cp = 'Devices/Server/Linux/devices' >>> url = 'http://admin:zenoss@MYHOST:8080/zport/dmd/%s/NEWDEVICE' % cp >>> serv = ServerProxy(url) >>> print serv.getManageIp()
#8.1.3. XML-RPC Attributes
Table 8.1. XML-RPC Attributes and Descriptions
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" |