[libvirt] [PATCH 3/8] driver: introduce a driver method for probing default URIs

Daniel P. Berrangé berrange at redhat.com
Thu Apr 12 14:59:28 UTC 2018


On Wed, Apr 11, 2018 at 02:08:51PM +0200, Michal Privoznik wrote:
> On 04/09/2018 05:45 PM, Daniel P. Berrangé wrote:
> > Currently the virDrvConnectOpen method is supposed to handle both
> > opening an explicit URI and auto-probing a driver if no URI is
> > given. Introduce a dedicated virDrvConnectURIProbe method to enable the
> > probing functionality to be split from the driver opening functionality.
> > 
> > It is still possible for NULL to be passed to the virDrvConnectOpen
> > method after this change, because the remote driver needs special
> > handling to enable probing of the URI against a remote libvirtd daemon.
> > 
> > Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> > ---
> >  docs/hvsupport.pl          |  6 +++---
> >  src/bhyve/bhyve_driver.c   | 18 +++++++++++++-----
> >  src/driver-hypervisor.h    |  4 ++++
> >  src/libvirt.c              | 13 +++++++++++++
> >  src/libxl/libxl_driver.c   | 17 ++++++++++++-----
> >  src/lxc/lxc_driver.c       | 17 ++++++++++++-----
> >  src/openvz/openvz_driver.c | 24 ++++++++++++++++--------
> >  src/qemu/qemu_driver.c     | 30 +++++++++++++++++++++---------
> >  src/uml/uml_driver.c       | 20 +++++++++++++-------
> >  src/vbox/vbox_common.c     | 13 ++++++++++---
> >  10 files changed, 117 insertions(+), 45 deletions(-)
> > 
> > diff --git a/docs/hvsupport.pl b/docs/hvsupport.pl
> > index fc6eb1f152..a2b980c502 100755
> > --- a/docs/hvsupport.pl
> > +++ b/docs/hvsupport.pl
> > @@ -184,7 +184,7 @@ foreach my $drivertable (@drivertable) {
> >                  my $api;
> >                  if (exists $apis{"vir$name"}) {
> >                      $api = "vir$name";
> > -                } elsif ($name =~ /\w+(Open|Close)/) {
> > +                } elsif ($name =~ /\w+(Open|Close|URIProbe)/) {
> >                      next;
> >                  } else {
> >                      die "driver $name does not have a public API";
> > @@ -241,12 +241,12 @@ foreach my $src (@srcs) {
> >  
> >                  next if $api eq "no" || $api eq "name";
> >  
> > -                die "Method $meth in $src is missing version" unless defined $vers;
> > +                die "Method $meth in $src is missing version" unless defined $vers || $api eq "connectURIProbe";
> >  
> >                  die "Driver method for $api is NULL in $src" if $meth eq "NULL";
> >  
> >                  if (!exists($groups{$ingrp}->{apis}->{$api})) {
> > -                    next if $api =~ /\w(Open|Close)/;
> > +                    next if $api =~ /\w(Open|Close|URIProbe)/;
> >  
> >                      die "Found unexpected method $api in $ingrp\n";
> >                  }
> > diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c
> > index 849d3abcd3..a0bc400480 100644
> > --- a/src/bhyve/bhyve_driver.c
> > +++ b/src/bhyve/bhyve_driver.c
> > @@ -180,6 +180,17 @@ bhyveDomObjFromDomain(virDomainPtr domain)
> >      return vm;
> >  }
> >  
> > +
> > +static int
> > +bhyveConnectURIProbe(char **uri)
> > +{
> > +    if (bhyve_driver == NULL)
> > +        return 0;
> > +
> > +    return VIR_STRDUP(*uri, "bhyve:///system");
> > +}
> 
> make check fails because it thinks this function (and others) is missing
> ACL check.

IMHO, we don't need ACLs on this. This isn't doing anything functional,
and the caller will trigger  the .connectOpen method next which already
has an ACL check. So I think we just whitelist it

diff --git a/src/check-aclrules.pl b/src/check-aclrules.pl
index 5b6c711dc8..8b146d8dba 100755
--- a/src/check-aclrules.pl
+++ b/src/check-aclrules.pl
@@ -59,6 +59,7 @@ my %whitelist = (
     "storageClose" => 1,
     "interfaceOpen" => 1,
     "interfaceClose" => 1,
+    "connectURIProbe" => 1,
     );
 
 # Temp hack - remove it once xen driver is fixed


Heh, and that last comment tells me we've got some stuff that can be
purged now :-)

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list