[libvirt] [PATCH] [3/6] Add hook utilities

Daniel P. Berrange berrange at redhat.com
Fri Mar 26 17:09:00 UTC 2010


On Fri, Mar 26, 2010 at 10:53:01AM -0600, Eric Blake wrote:
> On 03/26/2010 09:43 AM, Daniel Veillard wrote:
> 
> > +     */
> > +    if ((virHooksFound == -1) ||
> > +        ((driver == VIR_HOOK_DRIVER_DAEMON) &&
> > +         (op == VIR_HOOK_DAEMON_OP_RELOAD)))
> > +        virHookInitialize();
> > +
> ...
> > +    /*
> > +     * Convenience macros borrowed from qemudBuildCommandLine()
> > +     */
> 
> Duplicating the definition of all these helpers is a bit of a long
> distraction in the middle of this function; is it worth a helper file,
> where we could #include "command_line_builder.h" to get all these
> helpers defined, and to reduce the duplication from
> qemudBuildCommandLine by having the macros in one place?

I'd like to kill off all these macros completely, and instead
introduce a formal API. In a similar style to virBuffer, have
a statically initialized struct, APIs to add args & env variables,
and  a final API to check whether any OOM errors occurred. Then
a thin wrapper for virExec/virRun to actually execute it

   typedef struct {
      int hasError;
      char **argv;
      char **env;
   } virCommandInfo;

   virCommandInfo cmd = VIR_COMMAND_INFO_INITIALIZER;

   virCommandInfoAddArg(info, "/usr/bin/kvm");
   virCommandInfoCopyEnv(info, "PATH");
   virCommandInfoSetEnv(info, "LANG", "C");
   virCommandInfoAddArg(info, "--foo");
   virCommandInfoAddArg(info, "--bar");

   if (virCommandInfoHasError(info))
     virReportOOMError();
   
   virRunCommand(info);


Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org        -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list