[libvirt] vCenter behaviour

Howdy, I was taking a look at libvirt for controlling a couple of vCenter clusters and noticed it will only let you login directly to an ESX host and not the vCenter server itself. You can pass the "vcenter=" command but this seems to just tell what vcenter server to use and doesn't directly access it. If you do a "list" it still just lists the devices on the given ESX host. For a quick test I modified the esx_driver.c and added the following (I am no c programmer BTW): if (STRCASEEQ(conn->uri->scheme, "esx")) { if (priv->host->productVersion != esxVI_ProductVersion_VPX25 && priv->host->productVersion != esxVI_ProductVersion_VPX40 && priv->host->productVersion != esxVI_ProductVersion_ESX35 && priv->host->productVersion != esxVI_ProductVersion_ESX40) { Which would then let me connect directly to the vCenter server and list all the vm's on it. Am I missing something? I'm new to libvirt, but all management of a ESX cluster is always done through vCenter, and not the host. Sorry if this message is redundant as I didn't see anything blaring in the archives ;-) glenn terremark

2009/11/16 Glenn Bailey <gbailey@terremark.com>:
Howdy,
I was taking a look at libvirt for controlling a couple of vCenter clusters and noticed it will only let you login directly to an ESX host and not the vCenter server itself. You can pass the "vcenter=" command but this seems to just tell what vcenter server to use and doesn't directly access it. If you do a "list" it still just lists the devices on the given ESX host. For a quick test I modified the esx_driver.c and added the following (I am no c programmer BTW):
if (STRCASEEQ(conn->uri->scheme, "esx")) { if (priv->host->productVersion != esxVI_ProductVersion_VPX25 && priv->host->productVersion != esxVI_ProductVersion_VPX40 && priv->host->productVersion != esxVI_ProductVersion_ESX35 && priv->host->productVersion != esxVI_ProductVersion_ESX40) {
Which would then let me connect directly to the vCenter server and list all the vm's on it. Am I missing something? I'm new to libvirt, but all management of a ESX cluster is always done through vCenter, and not the host. Sorry if this message is redundant as I didn't see anything blaring in the archives ;-)
glenn terremark
Well, the ESX driver was not designed to work that way. The current design assumes virtual machines run on ESX hosts and a vCenter is some higher management instance that is necessary for migration. But from an API point-of-view a vCenter is like an ESX host, a compute resource with virtual machines attached to it. So there is basically no problem in handling a vCenter like a single ESX server. It'll need some tweaks in the ESX driver, but most of its functions should work without changes. I would like to introduce a vpx:// scheme beside esx:// and gsx:// to refer to a vCenter. I'll take care of this after I've finished some other pending patches for the ESX driver. Adding support for this doesn't seem to be very complicated, so stay tuned :-) Matthias

Which would then let me connect directly to the vCenter server and list all the vm's on it. Am I missing something? I'm new to libvirt, but all management of a ESX cluster is always done through vCenter, and not the host. Sorry if this message is redundant as I didn't see anything blaring in the archives ;-)
glenn terremark
Well, the ESX driver was not designed to work that way. The current design assumes virtual machines run on ESX hosts and a vCenter is some higher management instance that is necessary for migration. But from an API point-of-view a vCenter is like an ESX host, a compute resource with virtual machines attached to it. So there is basically no problem in handling a vCenter like a single ESX server. It'll need some tweaks in the ESX driver, but most of its functions should work without changes. I would like to introduce a vpx:// scheme beside esx:// and gsx:// to refer to a vCenter.
I'll take care of this after I've finished some other pending patches for the ESX driver.
Adding support for this doesn't seem to be very complicated, so stay tuned :-)
After reading through the design philosophy of libvirt I came to the realization that it's used on a host based level, not a management server level (or at least that's what I got out of it, heh) so I figured this may be out of scope after posting. Correct, talking directly to vCenter should be no different than talking to an ESX host as the API is the same. Like I said, a quick hack to allow the driver to talk directly to vCenter worked, although a few errors were spout out ;-)
participants (2)
-
Glenn Bailey
-
Matthias Bolte