[libvirt] [PATCH] esx: Add stubs for secondary driver types
Daniel P. Berrange
berrange at redhat.com
Sun Jan 17 12:57:55 UTC 2010
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 at googlemail.com>
> + *
> + * 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 at googlemail.com>
> + *
> + * 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 at googlemail.com>
> + * Copyright (C) 2009, 2010 Matthias Bolte <matthias.bolte at googlemail.com>
> * Copyright (C) 2009 Maximilian Wilhelm <max at rfc2324.org>
> *
> * 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 at googlemail.com>
> + * Copyright (C) 2009, 2010 Matthias Bolte <matthias.bolte at googlemail.com>
> * Copyright (C) 2009 Maximilian Wilhelm <max at rfc2324.org>
> *
> * 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 at googlemail.com>
> + *
> + * 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 at googlemail.com>
> + *
> + * 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 at googlemail.com>
> + *
> + * 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 at googlemail.com>
> + *
> + * 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 at googlemail.com>
> + *
> + * 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 at googlemail.com>
> + *
> + * 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 at googlemail.com>
> + *
> + * 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 at googlemail.com>
> + *
> + * 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 :|
More information about the libvir-list
mailing list