On Fri, Jan 15, 2010 at 04:35:06PM +0100, Matthias Bolte wrote: > This stops libvirt from probing for a libvirtd on the ESX server and > sets the base for the implementation of the secondary drivers. > --- > src/Makefile.am | 5 ++ > src/esx/esx_device_monitor.c | 93 +++++++++++++++++++++++++++++++ > src/esx/esx_device_monitor.h | 29 ++++++++++ > src/esx/esx_driver.c | 28 +++++----- > src/esx/esx_driver.h | 20 +++++++- > src/esx/esx_interface_driver.c | 96 ++++++++++++++++++++++++++++++++ > src/esx/esx_interface_driver.h | 29 ++++++++++ > src/esx/esx_network_driver.c | 101 ++++++++++++++++++++++++++++++++++ > src/esx/esx_network_driver.h | 29 ++++++++++ > src/esx/esx_secret_driver.c | 91 +++++++++++++++++++++++++++++++ > src/esx/esx_secret_driver.h | 28 ++++++++++ > src/esx/esx_storage_driver.c | 117 ++++++++++++++++++++++++++++++++++++++++ > src/esx/esx_storage_driver.h | 29 ++++++++++ > 13 files changed, 680 insertions(+), 15 deletions(-) > create mode 100644 src/esx/esx_device_monitor.c > create mode 100644 src/esx/esx_device_monitor.h > create mode 100644 src/esx/esx_interface_driver.c > create mode 100644 src/esx/esx_interface_driver.h > create mode 100644 src/esx/esx_network_driver.c > create mode 100644 src/esx/esx_network_driver.h > create mode 100644 src/esx/esx_secret_driver.c > create mode 100644 src/esx/esx_secret_driver.h > create mode 100644 src/esx/esx_storage_driver.c > create mode 100644 src/esx/esx_storage_driver.h > > diff --git a/src/Makefile.am b/src/Makefile.am > index 324030b..7d426ae 100644 > --- a/src/Makefile.am > +++ b/src/Makefile.am > @@ -214,6 +214,11 @@ ONE_DRIVER_SOURCES = \ > > ESX_DRIVER_SOURCES = \ > esx/esx_driver.c esx/esx_driver.h \ > + esx/esx_interface_driver.c esx/esx_interface_driver.h \ > + esx/esx_network_driver.c esx/esx_network_driver.h \ > + esx/esx_storage_driver.c esx/esx_storage_driver.h \ > + esx/esx_device_monitor.c esx/esx_device_monitor.h \ > + esx/esx_secret_driver.c esx/esx_secret_driver.h \ > esx/esx_util.c esx/esx_util.h \ > esx/esx_vi.c esx/esx_vi.h \ > esx/esx_vi_methods.c esx/esx_vi_methods.h \ > diff --git a/src/esx/esx_device_monitor.c b/src/esx/esx_device_monitor.c > new file mode 100644 > index 0000000..c813adf > --- /dev/null > +++ b/src/esx/esx_device_monitor.c > @@ -0,0 +1,93 @@ > + > +/* > + * esx_device_monitor.c: device monitor methods for managing VMware ESX > + * host devices > + * > + * Copyright (C) 2010 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this library; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#include <config.h> > + > +#include "internal.h" > +#include "virterror_internal.h" > +#include "util.h" > +#include "memory.h" > +#include "logging.h" > +#include "uuid.h" > +#include "esx_driver.h" > +#include "esx_device_monitor.h" > +#include "esx_vi.h" > +#include "esx_vi_methods.h" > +#include "esx_util.h" > + > +#define VIR_FROM_THIS VIR_FROM_ESX > + > +#define ESX_ERROR(conn, code, fmt...) \ > + virReportErrorHelper(conn, VIR_FROM_ESX, code, __FILE__, __FUNCTION__, \ > + __LINE__, fmt) > + > + > + > +static virDrvOpenStatus > +esxDeviceOpen(virConnectPtr conn, > + virConnectAuthPtr auth ATTRIBUTE_UNUSED, > + int flags ATTRIBUTE_UNUSED) > +{ > + if (STRNEQ(conn->driver->name, "ESX")) { > + return VIR_DRV_OPEN_DECLINED; > + } > + > + conn->devMonPrivateData = conn->privateData; > + > + return VIR_DRV_OPEN_SUCCESS; > +} > + > + > + > +static int > +esxDeviceClose(virConnectPtr conn) > +{ > + conn->devMonPrivateData = NULL; > + > + return 0; > +} > + > + > + > +static virDeviceMonitor esxDeviceMonitor = { > + "ESX", /* name */ > + esxDeviceOpen, /* open */ > + esxDeviceClose, /* close */ > + NULL, /* numOfDevices */ > + NULL, /* listDevices */ > + NULL, /* deviceLookupByName */ > + NULL, /* deviceDumpXML */ > + NULL, /* deviceGetParent */ > + NULL, /* deviceNumOfCaps */ > + NULL, /* deviceListCaps */ > + NULL, /* deviceCreateXML */ > + NULL, /* deviceDestroy */ > +}; > + > + > + > +int > +esxDeviceRegister(void) > +{ > + return virRegisterDeviceMonitor(&esxDeviceMonitor); > +} > diff --git a/src/esx/esx_device_monitor.h b/src/esx/esx_device_monitor.h > new file mode 100644 > index 0000000..e72a5b6 > --- /dev/null > +++ b/src/esx/esx_device_monitor.h > @@ -0,0 +1,29 @@ > + > +/* > + * esx_device_monitor.h: device monitor methods for managing VMware ESX > + * host devices > + * > + * Copyright (C) 2010 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this library; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#ifndef __ESX_DEVICE_MONITOR_H__ > +#define __ESX_DEVICE_MONITOR_H__ > + > +int esxDeviceRegister(void); > + > +#endif /* __ESX_DEVICE_MONITOR_H__ */ > diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c > index ddda66e..5aa3237 100644 > --- a/src/esx/esx_driver.c > +++ b/src/esx/esx_driver.c > @@ -2,7 +2,7 @@ > /* > * esx_driver.c: core driver methods for managing VMware ESX hosts > * > - * Copyright (C) 2009 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > + * Copyright (C) 2009, 2010 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > * Copyright (C) 2009 Maximilian Wilhelm <max@xxxxxxxxxxx> > * > * This library is free software; you can redistribute it and/or > @@ -33,6 +33,11 @@ > #include "logging.h" > #include "uuid.h" > #include "esx_driver.h" > +#include "esx_interface_driver.h" > +#include "esx_network_driver.h" > +#include "esx_storage_driver.h" > +#include "esx_device_monitor.h" > +#include "esx_secret_driver.h" > #include "esx_vi.h" > #include "esx_vi_methods.h" > #include "esx_util.h" > @@ -46,18 +51,6 @@ > > static int esxDomainGetMaxVcpus(virDomainPtr domain); > > -typedef struct _esxPrivate { > - esxVI_Context *host; > - esxVI_Context *vCenter; > - virCapsPtr caps; > - char *transport; > - int32_t maxVcpus; > - esxVI_Boolean supportsVMotion; > - esxVI_Boolean supportsLongMode; /* aka x86_64 */ > - esxVI_Boolean autoAnswer; > - int32_t usedCpuTimeCounterId; > -} esxPrivate; > - > > > static esxVI_Boolean > @@ -3479,7 +3472,14 @@ static virDriver esxDriver = { > int > esxRegister(void) > { > - virRegisterDriver(&esxDriver); > + if (virRegisterDriver(&esxDriver) < 0 || > + esxInterfaceRegister() < 0 || > + esxNetworkRegister() < 0 || > + esxStorageRegister() < 0 || > + esxDeviceRegister() < 0 || > + esxSecretRegister() < 0) { > + return -1; > + } > > return 0; > } > diff --git a/src/esx/esx_driver.h b/src/esx/esx_driver.h > index 85f4b32..18e821b 100644 > --- a/src/esx/esx_driver.h > +++ b/src/esx/esx_driver.h > @@ -2,7 +2,7 @@ > /* > * esx_driver.h: core driver methods for managing VMware ESX hosts > * > - * Copyright (C) 2009 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > + * Copyright (C) 2009, 2010 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > * Copyright (C) 2009 Maximilian Wilhelm <max@xxxxxxxxxxx> > * > * This library is free software; you can redistribute it and/or > @@ -24,6 +24,24 @@ > #ifndef __ESX_DRIVER_H__ > #define __ESX_DRIVER_H__ > > +#include "internal.h" > +#include "capabilities.h" > +#include "esx_vi.h" > + > +typedef struct _esxPrivate { > + esxVI_Context *host; > + esxVI_Context *vCenter; > + virCapsPtr caps; > + char *transport; > + int32_t maxVcpus; > + esxVI_Boolean supportsVMotion; > + esxVI_Boolean supportsLongMode; /* aka x86_64 */ > + esxVI_Boolean autoAnswer; > + int32_t usedCpuTimeCounterId; > +} esxPrivate; > + > + > + > int esxRegister(void); > > #endif /* __ESX_DRIVER_H__ */ > diff --git a/src/esx/esx_interface_driver.c b/src/esx/esx_interface_driver.c > new file mode 100644 > index 0000000..7664e4a > --- /dev/null > +++ b/src/esx/esx_interface_driver.c > @@ -0,0 +1,96 @@ > + > +/* > + * esx_interface_driver.h: interface driver methods for managing VMware ESX > + * host interfaces > + * > + * Copyright (C) 2010 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this library; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#include <config.h> > + > +#include "internal.h" > +#include "virterror_internal.h" > +#include "util.h" > +#include "memory.h" > +#include "logging.h" > +#include "uuid.h" > +#include "esx_driver.h" > +#include "esx_interface_driver.h" > +#include "esx_vi.h" > +#include "esx_vi_methods.h" > +#include "esx_util.h" > + > +#define VIR_FROM_THIS VIR_FROM_ESX > + > +#define ESX_ERROR(conn, code, fmt...) \ > + virReportErrorHelper(conn, VIR_FROM_ESX, code, __FILE__, __FUNCTION__, \ > + __LINE__, fmt) > + > + > + > +static virDrvOpenStatus > +esxInterfaceOpen(virConnectPtr conn, > + virConnectAuthPtr auth ATTRIBUTE_UNUSED, > + int flags ATTRIBUTE_UNUSED) > +{ > + if (STRNEQ(conn->driver->name, "ESX")) { > + return VIR_DRV_OPEN_DECLINED; > + } > + > + conn->interfacePrivateData = conn->privateData; > + > + return VIR_DRV_OPEN_SUCCESS; > +} > + > + > + > +static int > +esxInterfaceClose(virConnectPtr conn) > +{ > + conn->interfacePrivateData = NULL; > + > + return 0; > +} > + > + > + > +static virInterfaceDriver esxInterfaceDriver = { > + "ESX", /* name */ > + esxInterfaceOpen, /* open */ > + esxInterfaceClose, /* close */ > + NULL, /* numOfInterfaces */ > + NULL, /* listInterfaces */ > + NULL, /* numOfDefinedInterfaces */ > + NULL, /* listDefinedInterfaces */ > + NULL, /* interfaceLookupByName */ > + NULL, /* interfaceLookupByMACString */ > + NULL, /* interfaceGetXMLDesc */ > + NULL, /* interfaceDefineXML */ > + NULL, /* interfaceUndefine */ > + NULL, /* interfaceCreate */ > + NULL, /* interfaceDestroy */ > + NULL, /* interfaceIsActive */ > +}; > + > + > + > +int > +esxInterfaceRegister(void) > +{ > + return virRegisterInterfaceDriver(&esxInterfaceDriver); > +} > diff --git a/src/esx/esx_interface_driver.h b/src/esx/esx_interface_driver.h > new file mode 100644 > index 0000000..d30641a > --- /dev/null > +++ b/src/esx/esx_interface_driver.h > @@ -0,0 +1,29 @@ > + > +/* > + * esx_interface_driver.h: interface driver methods for managing VMware ESX > + * host interfaces > + * > + * Copyright (C) 2010 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this library; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#ifndef __ESX_INTERFACE_DRIVER_H__ > +#define __ESX_INTERFACE_DRIVER_H__ > + > +int esxInterfaceRegister(void); > + > +#endif /* __ESX_INTERFACE_DRIVER_H__ */ > diff --git a/src/esx/esx_network_driver.c b/src/esx/esx_network_driver.c > new file mode 100644 > index 0000000..9532352 > --- /dev/null > +++ b/src/esx/esx_network_driver.c > @@ -0,0 +1,101 @@ > + > +/* > + * esx_network_driver.c: network driver methods for managing VMware ESX > + * host networks > + * > + * Copyright (C) 2010 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this library; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#include <config.h> > + > +#include "internal.h" > +#include "virterror_internal.h" > +#include "util.h" > +#include "memory.h" > +#include "logging.h" > +#include "uuid.h" > +#include "esx_driver.h" > +#include "esx_network_driver.h" > +#include "esx_vi.h" > +#include "esx_vi_methods.h" > +#include "esx_util.h" > + > +#define VIR_FROM_THIS VIR_FROM_ESX > + > +#define ESX_ERROR(conn, code, fmt...) \ > + virReportErrorHelper(conn, VIR_FROM_ESX, code, __FILE__, __FUNCTION__, \ > + __LINE__, fmt) > + > + > + > +static virDrvOpenStatus > +esxNetworkOpen(virConnectPtr conn, > + virConnectAuthPtr auth ATTRIBUTE_UNUSED, > + int flags ATTRIBUTE_UNUSED) > +{ > + if (STRNEQ(conn->driver->name, "ESX")) { > + return VIR_DRV_OPEN_DECLINED; > + } > + > + conn->networkPrivateData = conn->privateData; > + > + return VIR_DRV_OPEN_SUCCESS; > +} > + > + > + > +static int > +esxNetworkClose(virConnectPtr conn) > +{ > + conn->networkPrivateData = NULL; > + > + return 0; > +} > + > + > + > +static virNetworkDriver esxNetworkDriver = { > + "ESX", /* name */ > + esxNetworkOpen, /* open */ > + esxNetworkClose, /* close */ > + NULL, /* numOfNetworks */ > + NULL, /* listNetworks */ > + NULL, /* numOfDefinedNetworks */ > + NULL, /* listDefinedNetworks */ > + NULL, /* networkLookupByUUID */ > + NULL, /* networkLookupByName */ > + NULL, /* networkCreateXML */ > + NULL, /* networkDefineXML */ > + NULL, /* networkUndefine */ > + NULL, /* networkCreate */ > + NULL, /* networkDestroy */ > + NULL, /* networkDumpXML */ > + NULL, /* networkGetBridgeName */ > + NULL, /* networkGetAutostart */ > + NULL, /* networkSetAutostart */ > + NULL, /* networkIsActive */ > + NULL, /* networkIsPersistent */ > +}; > + > + > + > +int > +esxNetworkRegister(void) > +{ > + return virRegisterNetworkDriver(&esxNetworkDriver); > +} > diff --git a/src/esx/esx_network_driver.h b/src/esx/esx_network_driver.h > new file mode 100644 > index 0000000..f117e03 > --- /dev/null > +++ b/src/esx/esx_network_driver.h > @@ -0,0 +1,29 @@ > + > +/* > + * esx_network_driver.h: network driver methods for managing VMware ESX > + * host networks > + * > + * Copyright (C) 2010 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this library; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#ifndef __ESX_NETWORK_DRIVER_H__ > +#define __ESX_NETWORK_DRIVER_H__ > + > +int esxNetworkRegister(void); > + > +#endif /* __ESX_NETWORK_DRIVER_H__ */ > diff --git a/src/esx/esx_secret_driver.c b/src/esx/esx_secret_driver.c > new file mode 100644 > index 0000000..e451b13 > --- /dev/null > +++ b/src/esx/esx_secret_driver.c > @@ -0,0 +1,91 @@ > + > +/* > + * esx_secret_driver.c: secret driver methods for VMware ESX secret manipulation > + * > + * Copyright (C) 2010 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this library; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#include <config.h> > + > +#include "internal.h" > +#include "virterror_internal.h" > +#include "util.h" > +#include "memory.h" > +#include "logging.h" > +#include "uuid.h" > +#include "esx_driver.h" > +#include "esx_secret_driver.h" > +#include "esx_vi.h" > +#include "esx_vi_methods.h" > +#include "esx_util.h" > + > +#define VIR_FROM_THIS VIR_FROM_ESX > + > +#define ESX_ERROR(conn, code, fmt...) \ > + virReportErrorHelper(conn, VIR_FROM_ESX, code, __FILE__, __FUNCTION__, \ > + __LINE__, fmt) > + > + > + > +static virDrvOpenStatus > +esxSecretOpen(virConnectPtr conn, virConnectAuthPtr auth ATTRIBUTE_UNUSED, > + int flags ATTRIBUTE_UNUSED) > +{ > + if (STRNEQ(conn->driver->name, "ESX")) { > + return VIR_DRV_OPEN_DECLINED; > + } > + > + conn->secretPrivateData = conn->privateData; > + > + return VIR_DRV_OPEN_SUCCESS; > +} > + > + > + > +static int > +esxSecretClose(virConnectPtr conn) > +{ > + conn->secretPrivateData = NULL; > + > + return 0; > +} > + > + > + > +static virSecretDriver esxSecretDriver = { > + "ESX", /* name */ > + esxSecretOpen, /* open */ > + esxSecretClose, /* close */ > + NULL, /* numOfSecrets */ > + NULL, /* listSecrets */ > + NULL, /* lookupByUUID */ > + NULL, /* lookupByUsage */ > + NULL, /* defineXML */ > + NULL, /* getXMLDesc */ > + NULL, /* setValue */ > + NULL, /* getValue */ > + NULL, /* undefine */ > +}; > + > + > + > +int > +esxSecretRegister(void) > +{ > + return virRegisterSecretDriver(&esxSecretDriver); > +} > diff --git a/src/esx/esx_secret_driver.h b/src/esx/esx_secret_driver.h > new file mode 100644 > index 0000000..c0d4a48 > --- /dev/null > +++ b/src/esx/esx_secret_driver.h > @@ -0,0 +1,28 @@ > + > +/* > + * esx_secret_driver.h: secret driver methods for VMware ESX secret manipulation > + * > + * Copyright (C) 2010 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this library; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#ifndef __ESX_SECRET_DRIVER_H__ > +#define __ESX_SECRET_DRIVER_H__ > + > +int esxSecretRegister(void); > + > +#endif /* __ESX_SECRET_DRIVER_H__ */ > diff --git a/src/esx/esx_storage_driver.c b/src/esx/esx_storage_driver.c > new file mode 100644 > index 0000000..7e9b98d > --- /dev/null > +++ b/src/esx/esx_storage_driver.c > @@ -0,0 +1,117 @@ > + > +/* > + * esx_storage_driver.c: storage driver methods for managing VMware ESX > + * host storage > + * > + * Copyright (C) 2010 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this library; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#include <config.h> > + > +#include "internal.h" > +#include "virterror_internal.h" > +#include "util.h" > +#include "memory.h" > +#include "logging.h" > +#include "uuid.h" > +#include "esx_driver.h" > +#include "esx_storage_driver.h" > +#include "esx_vi.h" > +#include "esx_vi_methods.h" > +#include "esx_util.h" > + > +#define VIR_FROM_THIS VIR_FROM_ESX > + > +#define ESX_ERROR(conn, code, fmt...) \ > + virReportErrorHelper(conn, VIR_FROM_ESX, code, __FILE__, __FUNCTION__, \ > + __LINE__, fmt) > + > + > + > +static virDrvOpenStatus > +esxStorageOpen(virConnectPtr conn, > + virConnectAuthPtr auth ATTRIBUTE_UNUSED, > + int flags ATTRIBUTE_UNUSED) > +{ > + if (STRNEQ(conn->driver->name, "ESX")) { > + return VIR_DRV_OPEN_DECLINED; > + } > + > + conn->storagePrivateData = conn->privateData; > + > + return VIR_DRV_OPEN_SUCCESS; > +} > + > + > + > +static int > +esxStorageClose(virConnectPtr conn) > +{ > + conn->storagePrivateData = NULL; > + > + return 0; > +} > + > + > + > +static virStorageDriver esxStorageDriver = { > + "ESX", /* name */ > + esxStorageOpen, /* open */ > + esxStorageClose, /* close */ > + NULL, /* numOfPools */ > + NULL, /* listPools */ > + NULL, /* numOfDefinedPools */ > + NULL, /* listDefinedPools */ > + NULL, /* findPoolSources */ > + NULL, /* poolLookupByName */ > + NULL, /* poolLookupByUUID */ > + NULL, /* poolLookupByVolume */ > + NULL, /* poolCreateXML */ > + NULL, /* poolDefineXML */ > + NULL, /* poolBuild */ > + NULL, /* poolUndefine */ > + NULL, /* poolCreate */ > + NULL, /* poolDestroy */ > + NULL, /* poolDelete */ > + NULL, /* poolRefresh */ > + NULL, /* poolGetInfo */ > + NULL, /* poolGetXMLDesc */ > + NULL, /* poolGetAutostart */ > + NULL, /* poolSetAutostart */ > + NULL, /* poolNumOfVolumes */ > + NULL, /* poolListVolumes */ > + NULL, /* volLookupByName */ > + NULL, /* volLookupByKey */ > + NULL, /* volLookupByPath */ > + NULL, /* volCreateXML */ > + NULL, /* volCreateXMLFrom */ > + NULL, /* volDelete */ > + NULL, /* volGetInfo */ > + NULL, /* volGetXMLDesc */ > + NULL, /* volGetPath */ > + NULL, /* poolIsActive */ > + NULL, /* poolIsPersistent */ > +}; > + > + > + > +int > +esxStorageRegister(void) > +{ > + return virRegisterStorageDriver(&esxStorageDriver); > +} > diff --git a/src/esx/esx_storage_driver.h b/src/esx/esx_storage_driver.h > new file mode 100644 > index 0000000..91a5d03 > --- /dev/null > +++ b/src/esx/esx_storage_driver.h > @@ -0,0 +1,29 @@ > + > +/* > + * esx_storage_driver.h: storage driver methods for managing VMware ESX > + * host storage > + * > + * Copyright (C) 2010 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; either > + * version 2.1 of the License, or (at your option) any later version. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this library; if not, write to the Free Software > + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > + * > + */ > + > +#ifndef __ESX_STORAGE_DRIVER_H__ > +#define __ESX_STORAGE_DRIVER_H__ > + > +int esxStorageRegister(void); > + > +#endif /* __ESX_STORAGE_DRIVER_H__ */ ACK definitely don't want it falling back to the libvirtd impl for these Dainel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list