If you attempt to create a Xen guest using a virutal network that does not
exist, or is not running you get a cryptic message
# virsh create rhel5pv.xml
error: Failed to create domain from rhel5pv.xml
error: XML description for failed to build sexpr is not well formed or invalid
This is because the XenD/XM drivers are both overwriting errors that have
already been reported. The fix is simply to remove this bogus error call.
It also tweaks the original error reporting to be more meaningful.
The result is this
# virsh create rhel5pv.xml
error: Failed to create domain from rhel5pv.xml
error: Network not found: default
Daniel
diff -r 28e19af5b719 src/xend_internal.c
--- a/src/xend_internal.c Tue Mar 31 15:13:21 2009 +0100
+++ b/src/xend_internal.c Tue Mar 31 16:35:41 2009 +0100
@@ -3983,8 +3983,6 @@ xenDaemonCreateXML(virConnectPtr conn, c
return (NULL);
if (!(sexpr = xenDaemonFormatSxpr(conn, def, priv->xendConfigVersion))) {
- virXendError(conn, VIR_ERR_XML_ERROR,
- "%s", _("failed to build sexpr"));
virDomainDefFree(def);
return (NULL);
}
@@ -5362,7 +5360,7 @@ xenDaemonFormatSxprNet(virConnectPtr con
char *bridge;
if (!network) {
- virXendError(conn, VIR_ERR_NO_SOURCE, "%s",
+ virXendError(conn, VIR_ERR_NO_NETWORK, "%s",
def->data.network.name);
return -1;
}
@@ -5370,7 +5368,8 @@ xenDaemonFormatSxprNet(virConnectPtr con
bridge = virNetworkGetBridgeName(network);
virNetworkFree(network);
if (!bridge) {
- virXendError(conn, VIR_ERR_NO_SOURCE, "%s",
+ virXendError(conn, VIR_ERR_INTERNAL_ERROR,
+ _("network %s is not active"),
def->data.network.name);
return -1;
}
diff -r 28e19af5b719 src/xm_internal.c
--- a/src/xm_internal.c Tue Mar 31 15:13:21 2009 +0100
+++ b/src/xm_internal.c Tue Mar 31 16:35:41 2009 +0100
@@ -1818,11 +1818,8 @@ int xenXMDomainCreate(virDomainPtr domai
if (!(entry = virHashLookup(priv->configCache, filename)))
goto error;
- if (!(sexpr = xenDaemonFormatSxpr(domain->conn, entry->def,
priv->xendConfigVersion))) {
- xenXMError(domain->conn, VIR_ERR_XML_ERROR,
- "%s", _("failed to build sexpr"));
+ if (!(sexpr = xenDaemonFormatSxpr(domain->conn, entry->def,
priv->xendConfigVersion)))
goto error;
- }
ret = xenDaemonDomainCreateXML(domain->conn, sexpr);
VIR_FREE(sexpr);
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|