On 12/21/13 05:03, Adam Walters wrote:
This patchset adds a driver named 'config' that allows access
to configuration data, such as secret and storage definitions. This is a pre-requisite for
my next patchset which resolves the race condition on libvirtd startup and the circular
dependencies between QEMU and the storage driver.
The basic rationale behind this idea is that there exist circumstances under which a
driver may need to access things such as secrets during a time at which there is no active
connection to a hypervisor. Without a connection, the data can't be accessed
currently. I felt that this was a much simpler solution to the problem that building new
APIs that do not require a connection to operate.
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 informatino that would otherwise require a connection. The URI used for this driver is
'config:///' and has been tested working on 4 different machines of mine, running
three different distributions of Linux (Archlinux, Gentoo, and CentOS). Being a very
simple driver, I would expect it to work pretty much anywhere.
I would love to hear any comments and suggestions you may have about this driver. At the
very least this plus my next patchset resolves the startup race condition on my machine.
If a more robust setup (likely a new internal API) is in the works, this driver could act
as a band-aid to allow access to this type of data in the interim if a better resolution
is a ways off.
Adam Walters (7):
config: Adding source for the config driver
config: Adding header for the config driver
virterror: Adding a new VIR_FROM_ define
libvirtd: Add config driver hooks
po: Add config_driver.c to POTFILES.in
configure: Add config driver to configure script
Makefile: Add config driver to src/Makefile.am
configure.ac | 10 ++
daemon/libvirtd.c | 21 ++--
include/libvirt/virterror.h | 2 +
po/POTFILES.in | 1 +
src/Makefile.am | 25 +++++
src/config/config_driver.c | 237 ++++++++++++++++++++++++++++++++++++++++++++
src/config/config_driver.h | 44 ++++++++
src/util/virerror.c | 2 +
8 files changed, 336 insertions(+), 6 deletions(-)
create mode 100644 src/config/config_driver.c
create mode 100644 src/config/config_driver.h
In general the code looks sane. I'm looking forward to see a v2 of this
series and I promise it won't take that long to review it as this time :).
Peter