[libvirt] [PATCH] Allow overriding default URI in config file
Daniel P. Berrange
berrange at redhat.com
Wed Mar 14 13:38:23 UTC 2012
On Wed, Mar 14, 2012 at 06:54:40AM -0600, Eric Blake wrote:
> On 03/14/2012 06:37 AM, Daniel P. Berrange wrote:
> > From: "Daniel P. Berrange" <berrange at redhat.com>
> >
> > Currently if the URI passed to virConnectOpen* is NULL, then we
> >
> > - Look for LIBVIRT_DEFAULT_URI env var
> > - Probe for drivers
> >
> > This changes it so that
> >
> > - Look for LIBVIRT_DEFAULT_URI env var
> > - Look for 'uri_default' in $HOME/.libvirt/libvirt.conf
> > - Probe for drivers
>
> Nice. Do we need any followup patches for virsh? That is, where should
> VIRSH_DEFAULT_CONNECT_URI fit into the hierarchy?
We should deprecate it :-)
>
> > docs/uri.html.in | 13 +++++++
> > src/libvirt.c | 107 +++++++++++++++++++++++++++++++++++++-----------------
> > 2 files changed, 87 insertions(+), 33 deletions(-)
>
> Where is the change to src/libvirt.conf to document this feature?
Missing :-)
> > +++ b/docs/uri.html.in
> > @@ -52,6 +52,19 @@ uri_aliases = [
> > set, no alias lookup will be attempted.
> > </p>
> >
> > + <h2><a name="URI_default">Default URI choice</a></h2>
> > +
> > + <p>
> > +If the URI passed to <code>virConnectOpen*</code> is NULL, then libvirt will use the following
> > +logic to determine what URI to use.
> > +</p>
> > +
> > + <ol>
> > + <li>The environment variable <code>LIBVIRT_DEFAULT_URI</code></li>
> > + <li>The client configuration file <code>uri_default</code> parameter</li>
> > + <li>Probe each hypervisor in turn until one that works is found</li>
> > + </ol>
> > +
>
> Looks good. The location of the client configuration file was mentioned
> earlier on the same page.
>
> > <h2>
> > <a name="URI_virsh">Specifying URIs to virsh, virt-manager and virt-install</a>
>
> Maybe this section should mention that without any -c option and without
> VIRSH_DEFAULT_CONNECT_URI, then virsh passes NULL to the virConnectOpen,
> which then falls back on the above hierarchy for libvirt in general.
>
>
> >
> > +static int virConnectGetConfigFile(virConfPtr *conf)
>
> Formatting nit - should this be two lines?
>
>
> > +
> > +static int virConnectGetDefaultURI(virConfPtr conf,
>
> And this one?
>
> > + const char **name)
> > +{
> > + int ret = -1;
> > + virConfValuePtr value = NULL;
> > + char *defname = getenv("LIBVIRT_DEFAULT_URI");
> > + if (defname && *defname) {
> > + VIR_DEBUG("Using LIBVIRT_DEFAULT_URI %s", defname);
> > + *name = defname;
>
> Needs a 'ret = 0; goto cleanup;' here, otherwise...
>
> > + }
> > +
> > + if ((value = virConfGetValue(conf, "uri_default"))) {
> > + if (value->type != VIR_CONF_STRING) {
> > + virLibConnError(VIR_ERR_INTERNAL_ERROR, "%s",
> > + _("Expected a string for 'uri_default' config parameter"));
> > + goto cleanup;
> > + }
> > +
> > + *name = value->str;
>
> this assignment is a memory leak if both the envvar and config file are
> present.
We're returning const strings here, so there's no leak to deal with
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list