2009/11/16 Glenn Bailey <gbailey(a)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