On 21.01.2015 11:15, Daniel P. Berrange wrote:
On Wed, Jan 21, 2015 at 11:08:54AM +0100, Michal Privoznik wrote:
> On 20.01.2015 17:37, Daniel P. Berrange wrote:
>> For stateless, client side drivers, it is never correct to
>> probe for secondary drivers. It is only ever appropriate to
>> use the secondary driver that is associated with the
>> hypervisor in question. As a result the ESX & HyperV drivers
>> have both been forced to do hacks where they register no-op
>> drivers for the ones they don't implement.
>>
>> For stateful, server side drivers, we always just want to
>> use the same built-in shared driver. The exception is
>> virtualbox which is really a stateless driver and so wants
>> to use its own server side secondary drivers. To deal with
>> this virtualbox has to be built as 3 separate loadable
>> modules to allow registration to work in the right order.
>>
>> This can all be simplified by introducing a new struct
>> recording the precise set of secondary drivers each
>> hypervisor driver wants
>>
>> struct _virConnectDriver {
>> virHypervisorDriverPtr hypervisorDriver;
>> virInterfaceDriverPtr interfaceDriver;
>> virNetworkDriverPtr networkDriver;
>> virNodeDeviceDriverPtr nodeDeviceDriver;
>> virNWFilterDriverPtr nwfilterDriver;
>> virSecretDriverPtr secretDriver;
>> virStorageDriverPtr storageDriver;
>> };
>>
>> Instead of registering the hypervisor driver, we now
>> just register a virConnectDriver instead. This allows
>> us to remove all probing of secondary drivers. Once we
>> have chosen the primary driver, we immediately know the
>> correct secondary drivers to use.
>>
>> Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
>> ---
>> daemon/libvirtd.c | 19 +-
>> src/Makefile.am | 63 +------
>> src/bhyve/bhyve_driver.c | 14 +-
>> src/check-driverimpls.pl | 3 +-
>> src/datatypes.c | 12 --
>> src/driver-hypervisor.h | 3 -
>> src/driver-interface.h | 9 -
>> src/driver-network.h | 11 +-
>> src/driver-nodedev.h | 8 +-
>> src/driver-nwfilter.h | 13 +-
>> src/driver-secret.h | 12 +-
>> src/driver-storage.h | 12 +-
>> src/driver.h | 54 +++---
>> src/esx/esx_device_monitor.c | 74 --------
>> src/esx/esx_device_monitor.h | 28 ---
>> src/esx/esx_driver.c | 25 +--
>> src/esx/esx_interface_driver.c | 37 +---
>> src/esx/esx_interface_driver.h | 4 +-
>> src/esx/esx_network_driver.c | 37 +---
>> src/esx/esx_network_driver.h | 4 +-
>> src/esx/esx_nwfilter_driver.c | 74 --------
>> src/esx/esx_nwfilter_driver.h | 28 ---
>> src/esx/esx_secret_driver.c | 72 -------
>> src/esx/esx_secret_driver.h | 27 ---
>> src/esx/esx_storage_driver.c | 37 +---
>> src/esx/esx_storage_driver.h | 4 +-
>> src/hyperv/hyperv_device_monitor.c | 71 -------
>> src/hyperv/hyperv_device_monitor.h | 28 ---
>> src/hyperv/hyperv_driver.c | 25 +--
>> src/hyperv/hyperv_interface_driver.c | 71 -------
>> src/hyperv/hyperv_interface_driver.h | 28 ---
>> src/hyperv/hyperv_network_driver.c | 71 -------
>> src/hyperv/hyperv_network_driver.h | 28 ---
>> src/hyperv/hyperv_nwfilter_driver.c | 71 -------
>> src/hyperv/hyperv_nwfilter_driver.h | 28 ---
>> src/hyperv/hyperv_secret_driver.c | 71 -------
>> src/hyperv/hyperv_secret_driver.h | 28 ---
>> src/hyperv/hyperv_storage_driver.c | 71 -------
>> src/hyperv/hyperv_storage_driver.h | 28 ---
>> src/interface/interface_backend_netcf.c | 26 +--
>> src/interface/interface_backend_udev.c | 25 +--
>> src/libvirt.c | 323 ++++++++++++++------------------
>> src/libvirt_private.syms | 14 +-
>> src/libxl/libxl_driver.c | 10 +-
>> src/lxc/lxc_driver.c | 10 +-
>> src/network/bridge_driver.c | 25 +--
>> src/node_device/node_device_driver.c | 10 +-
>> src/node_device/node_device_hal.c | 26 +--
>> src/node_device/node_device_udev.c | 23 +--
>> src/nwfilter/nwfilter_driver.c | 25 +--
>> src/openvz/openvz_driver.c | 12 +-
>> src/phyp/phyp_driver.c | 64 +------
>> src/qemu/qemu_driver.c | 10 +-
>> src/remote/remote_driver.c | 152 ++-------------
>> src/secret/secret_driver.c | 25 +--
>> src/storage/storage_driver.c | 25 +--
>> src/test/test_driver.c | 156 ++-------------
>> src/uml/uml_driver.c | 10 +-
>> src/vbox/vbox_common.c | 1 -
>> src/vbox/vbox_driver.c | 47 ++---
>> src/vbox/vbox_network.c | 32 ----
>> src/vbox/vbox_storage.c | 30 ---
>> src/vmware/vmware_driver.c | 12 +-
>> src/xen/xen_driver.c | 11 +-
>> src/xenapi/xenapi_driver.c | 10 +-
>> tests/qemuxml2argvtest.c | 17 --
>> tests/virdrivermoduletest.c | 18 +-
>> 67 files changed, 336 insertions(+), 2116 deletions(-)
>> delete mode 100644 src/esx/esx_device_monitor.c
>> delete mode 100644 src/esx/esx_device_monitor.h
>> delete mode 100644 src/esx/esx_nwfilter_driver.c
>> delete mode 100644 src/esx/esx_nwfilter_driver.h
>> delete mode 100644 src/esx/esx_secret_driver.c
>> delete mode 100644 src/esx/esx_secret_driver.h
>> delete mode 100644 src/hyperv/hyperv_device_monitor.c
>> delete mode 100644 src/hyperv/hyperv_device_monitor.h
>> delete mode 100644 src/hyperv/hyperv_interface_driver.c
>> delete mode 100644 src/hyperv/hyperv_interface_driver.h
>> delete mode 100644 src/hyperv/hyperv_network_driver.c
>> delete mode 100644 src/hyperv/hyperv_network_driver.h
>> delete mode 100644 src/hyperv/hyperv_nwfilter_driver.c
>> delete mode 100644 src/hyperv/hyperv_nwfilter_driver.h
>> delete mode 100644 src/hyperv/hyperv_secret_driver.c
>> delete mode 100644 src/hyperv/hyperv_secret_driver.h
>> delete mode 100644 src/hyperv/hyperv_storage_driver.c
>> delete mode 100644 src/hyperv/hyperv_storage_driver.h
>
> Instead of finding a needle in haystack (read pointing out line in
> the diff that needs to be fixed), I'm pasting diff that you need to
> squash in. I'm sure you'll get the idea why:
Hehe, thanks. I forgot that we needed an SDK to compile the
parallels driver now. Any idea if that's in Fedora yet ?
I don't think so. But they have spec file in their git repo:
https://github.com/CloudServer/parallels-sdk
Michal