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@xxxxxxxxxx> >>> --- >>> 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list