Improve error message for disabled client-side drivers

Report that libvirt was built without that driver instead of
trying to connect to a libvirtd, when we know that this is
going to fail.
This commit is contained in:
Matthias Bolte 2010-06-10 00:52:05 +02:00
parent 1443cbe840
commit d0dabc2bf8

View File

@ -1210,6 +1210,34 @@ do_open (const char *name,
ret->flags = flags & VIR_CONNECT_RO; ret->flags = flags & VIR_CONNECT_RO;
for (i = 0; i < virDriverTabCount; i++) { for (i = 0; i < virDriverTabCount; i++) {
/* We're going to probe the remote driver next. So we have already
* probed all other client-side-only driver before, but none of them
* accepted the URI.
* If the scheme corresponds to a known but disabled client-side-only
* driver then report a useful error, instead of a cryptic one about
* not being able to connect to libvirtd or not being able to find
* certificates. */
if (virDriverTab[i]->no == VIR_DRV_REMOTE &&
ret->uri != NULL && ret->uri->scheme != NULL &&
(
#ifndef WITH_PHYP
STRCASEEQ(ret->uri->scheme, "phyp") ||
#endif
#ifndef WITH_ESX
STRCASEEQ(ret->uri->scheme, "esx") ||
STRCASEEQ(ret->uri->scheme, "gsx") ||
#endif
#ifndef WITH_XENAPI
STRCASEEQ(ret->uri->scheme, "xenapi") ||
#endif
false)) {
virReportErrorHelper(NULL, VIR_FROM_NONE, VIR_ERR_INVALID_ARG,
__FILE__, __FUNCTION__, __LINE__,
_("libvirt was built without the '%s' driver"),
ret->uri->scheme);
goto failed;
}
DEBUG("trying driver %d (%s) ...", DEBUG("trying driver %d (%s) ...",
i, virDriverTab[i]->name); i, virDriverTab[i]->name);
res = virDriverTab[i]->open (ret, auth, flags); res = virDriverTab[i]->open (ret, auth, flags);