availability: Add guestfs_available.
authorRichard Jones <rjones@redhat.com>
Fri, 20 Nov 2009 13:06:49 +0000 (13:06 +0000)
committerRichard Jones <rjones@redhat.com>
Fri, 20 Nov 2009 18:02:10 +0000 (18:02 +0000)
commit8fd7f255d611d2092a244c4a48c6b7b4529e98b1
tree4fa4480b4e9511e5b06f8217a7a5af5e85e98521
parent5c9004347fe5920e2d0aa905ec709a514f0d9e38
availability: Add guestfs_available.

Start a new API allowing groups of functions to be tested for
availability.

There are two reasons for this:

(1) If libguestfs is built with missing dependencies (eg. no Augeas lib)
then the corresponding functions are disabled in the appliance.  Up till
now there has been no way to test for this except to speculatively
issue commands and check for errors.

(2) When we port the daemon to Win32 it is likely that major pieces of
functionality won't be available (eg. LVM support).  This API gives
a way to test for that.

There is no change for existing clients: you still have to check for
errors from individual API calls.

For new clients, you will be able to test for availability of particular
APIs.

Usage scenario (A): An LVM editing tool which requires
both the LVM API and inotify in order to function at all:

  char *apis[] = { "inotify", "lvm2", NULL };
  r = guestfs_available (g, apis);
  if (r == -1) {
    /* print an error and exit */
  }

Usage scenario (B): A general purpose tool which optionally provides
configuration file editing, but this can be disabled, the result
merely being reduced functionality:

  char *apis[] = { "augeas", NULL };
  r = guestfs_available (g, apis);
  enable_config_edit_menus = r == 0;
daemon/Makefile.am
daemon/available.c [new file with mode: 0644]
po/POTFILES.in
src/MAX_PROC_NR
src/generator.ml