(I'm sending v2 of this patch series for Michal Privoznik, as I had to
tweak some things while integrating with the netcf part that I'm
writing, and he will be out of the office tomorrow and thus unable to
resend. In addition to the few small things I needed to change to make
everything compile and work properly once the build system had a
version of netcf supporting the new API, Michal incorporated all the
comments from reviewers of the first version before forwarding the
patches to me for integration.)
This patch series implements three new APIs for the interface
driver which support transactional changes to the host's network
config - at any point you can begin a transaction (which saves a
snapshot of the current config), then make any changes you like to the
config, and later either commit those changes (the current
implementation just removes the snapshotted files) or rollback to the
original config.
The actual implementation of this functionality lives in the netcf
library; these patches create pass-through functions that call out to
netcf on the machine that's running libvirtd.
Most importantly, note that uses of "start" in the API names have been
changed to "begin", and rather than a single virsh command with
multiple subcommands, there are now three separate commands:
iface-begin, iface-commit, and iface-rollback.
Thanks to using AC_CHECK_LIB in configure.ac, this code can safely be
pushed and built on systems that don't yet have a new enough netcf to
contain the API extensions - those functions are simply not
implemented in that case (and return the appropriate error).