[libvirt] [RFC PATCHv2 0/4] Adding 'config' driver

Adam Walters adam at pandorasboxen.com
Thu Jan 23 20:14:19 UTC 2014

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

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


More information about the libvir-list mailing list