[libvirt] PATCH: Fix error reporting for guest with missing network

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 :|

On Tue, Mar 31, 2009 at 04:37:36PM +0100, Daniel P. Berrange wrote:
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
Okay, looks fine to me, ACK, Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/

On Tue, Mar 31, 2009 at 11:41:55PM +0200, Daniel Veillard wrote:
On Tue, Mar 31, 2009 at 04:37:36PM +0100, Daniel P. Berrange wrote:
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
Okay, looks fine to me, ACK,
Comitted Daniel -- |: 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 :|
participants (2)
-
Daniel P. Berrange
-
Daniel Veillard