Ceilometer/blueprints/vmware-vcenter-server

= Support for VMware vCenter Server =

Although Nova provides support for VMware vCenter Server, Ceilometer does not. It does not collect metrics of virtual machines deployed on VMware virtualization platform. It will be necessary to extend this support in Ceilometer. The aim is to implement a polling agent that queries samples from VMware vCenter Server:
 * 1) for existing meters.
 * 2) create new meters in Ceilometer for which VMware vCenter Server provides data.

Nature of Plugin
Ceilometer agents are one of the following types (refer to this for more details)
 * Bus listener agent - the product being monitored itself generates events and posts on the Oslo notification bus from where Ceilometer will extract it.
 * Push agents - sits with the product being monitored, fetch data from the product and pushes it on the bus.
 * Polling agents - sits external to the product being monitored, polls some API exposed by it and communicates it to Ceilometer collection agents.

For bus listener or push agents we will require changes in VC for pushing/ publishing the performance samples, which is not possible. So we are going ahead with the polling agent paradigm where we have a pollster to query 'Performance' statistics from VC. The pollster will be plugged-in to the existing framework of Ceilometer plugins.

Executing VC APIs

 * Pysphere, PyVmomi are currently not an option because of licensing issues.
 * Nova driver for VC uses SUDS (a SOAP client) library for executing VC APIs. vSphere WSDL definitions are given as an input to SUDS and it takes care of marshalling the responses to Python objects.
 * Same utility files are being used by VMware drivers for Cinder and Glance. Currently each module has duplicated files due to lack of a common module. So VMware driver for Ceilometer will have to do same.
 * There is an internal effort to extract the utilities to a common module. After the availability of this all the VMware drivers will start using the utilities from the common module.