This patchset adds a driver named 'config' which provides access to
configuration data, such as secret and storage definitions, without
requiring a connection to a hypervisor. This complements my previous
patchset, which resolves the race condition on libvirtd startup.
The rationale behind this idea is that there exist circumstances under which a
driver may require access to things such as secrets during a time at which
there is no active connection to a hypervisor. Currently, that data can not be
accessed. An example of this in libvirt today is that the storage driver
requires a connection in order to access secret data to auto-start an RBD
storage pool that uses CephX authentication. My previous patchset breaks the
ability to auto-start that type of storage pool, and this patchset fixes it
again.
This driver is technically what one may call a hypervisor driver, but it does
not implement any domain operations. It simply exists to handle requests by
drivers for access to information that would otherwise by unattainable. The
URI provided by this driver is 'config:///' and has been tested working on four
different machines of mine, running three different Linux distributions
(Archlinux, Gentoo, and CentOS). Being a very simple driver, I would expect it
to work pretty much anywhere.
I welcome comments and suggestions related to this driver. At the very least,
this patchset combined with my previous patchset resolves the current race
condition present on startup of libvirtd without any loss of functionality.
Adam Walters (4):
config: Adding config driver
configure: Implement config driver
libvirtd: Reorder load of secrets driver
storage: Change hardcoded QEMU connection to use config driver
configure.ac | 11 ++
daemon/libvirtd.c | 21 ++--
include/libvirt/virterror.h | 2 +
po/POTFILES.in | 1 +
src/Makefile.am | 25 +++++
src/config/config_driver.c | 238 +++++++++++++++++++++++++++++++++++++++++++
src/config/config_driver.h | 44 ++++++++
src/storage/storage_driver.c | 13 +--
src/util/virerror.c | 2 +
9 files changed, 345 insertions(+), 12 deletions(-)
create mode 100644 src/config/config_driver.c
create mode 100644 src/config/config_driver.h
--
1.8.5.2