zenoss_client: A Ruby library for REST access to Zenoss

This is a work-in-progress to create an easy to use client REST API for Zenoss (www.zenoss.com) written in Ruby. I love Zenoss as a product, but I am much more efficient in Ruby than Python so I decided to start hacking this library together. It is very incomplete and I am just adding functionality as I need it or it is requested.

Cheers,

Dan Wanek

REQUIREMENTS:

Gems:

  • tzinfo: For Python DateTime to Ruby DateTime conversion

UNSUPPORTED REST METHODS:

Some methods within Zope are unsupported due to type conversion issues. I have created a work-around but you must add a custom Python script to Zope in order to do this. Please see this blog post for information on how add the custom script:

distributed-frostbite.blogspot.com/2010/04/using-ruby-with-zenoss-part-1.html

UPDATE: The script itself is now part of the source tree and can be found here: tools/callZenossMethod.py It should still be installed in the same fashion as the blog post steps through.

TO USE:

A gem is now available. 'gem install zenoss_client'

require 'zenoss'

# You must set the URI before doing anything else Zenoss.uri 'zenhost:port/zport/dmd/'

# Add the appropriate credentials Zenoss.set_auth('user','pass') # This returns the base DeviceClass '/zport/dmd/Devices' # It is the equivilent in zendmd of 'dmd.Devices' devices = Zenoss.devices

# Search for a device dev = devices.find_device_path('devname')

# List all implemented REST methods for this object puts dev.zenoss_methods.sort.join(', ')

# Get the uptime of the device dev.sys_uptime

# Get a list of events for this system
dev.get_events

Have fun and let me know what needs to be fixed / added.