[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] Improve hotplug script error reporting via xenstore.
# HG changeset patch # User kfraser@xxxxxxxxxxxxxxxxxxxxx # Date 1170865375 0 # Node ID ed9dba8e2c6797a58f447a5857f178d85010e601 # Parent b83a81b99f20a34bad73b3114391b832fa41edf3 Improve hotplug script error reporting via xenstore. Use this to detect and report up-front in vif-bridge script whether the bridge device exists or not. Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> --- tools/examples/vif-bridge | 7 ++++ tools/examples/xen-hotplug-common.sh | 5 ++- tools/python/xen/xend/server/DevController.py | 39 +++++++++++++------------- 3 files changed, 30 insertions(+), 21 deletions(-) diff -r b83a81b99f20 -r ed9dba8e2c67 tools/examples/vif-bridge --- a/tools/examples/vif-bridge Wed Feb 07 16:20:28 2007 +0000 +++ b/tools/examples/vif-bridge Wed Feb 07 16:22:55 2007 +0000 @@ -46,6 +46,13 @@ then fi fi +RET=0 +ip link show $bridge 1>/dev/null 2>&1 || RET=1 +if [ "$RET" -eq 1 ] +then + fatal "Could not find bridge device $bridge" +fi + case "$command" in online) setup_bridge_port "$vif" diff -r b83a81b99f20 -r ed9dba8e2c67 tools/examples/xen-hotplug-common.sh --- a/tools/examples/xen-hotplug-common.sh Wed Feb 07 16:20:28 2007 +0000 +++ b/tools/examples/xen-hotplug-common.sh Wed Feb 07 16:22:55 2007 +0000 @@ -28,14 +28,15 @@ unset $(set | grep ^LC_ | cut -d= -f1) unset $(set | grep ^LC_ | cut -d= -f1) fatal() { - xenstore_write "$XENBUS_PATH"/hotplug-status error + xenstore_write "$XENBUS_PATH/hotplug-error" "$*" \ + "$XENBUS_PATH/hotplug-status" error log err "$@" exit 1 } success() { # Tell DevController that backend is "connected" - xenstore_write "$XENBUS_PATH"/hotplug-status connected + xenstore_write "$XENBUS_PATH/hotplug-status" connected } do_or_die() { diff -r b83a81b99f20 -r ed9dba8e2c67 tools/python/xen/xend/server/DevController.py --- a/tools/python/xen/xend/server/DevController.py Wed Feb 07 16:20:28 2007 +0000 +++ b/tools/python/xen/xend/server/DevController.py Wed Feb 07 16:22:55 2007 +0000 @@ -153,9 +153,9 @@ class DevController: log.debug("Waiting for %s.", devid) if not self.hotplug: - return - - status = self.waitForBackend(devid) + return + + (status, err) = self.waitForBackend(devid) if status == Timeout: self.destroyDevice(devid, False) @@ -165,25 +165,22 @@ class DevController: elif status == Error: self.destroyDevice(devid, False) - raise VmError("Device %s (%s) could not be connected. " - "Backend device not found." % - (devid, self.deviceClass)) - + if err is None: + raise VmError("Device %s (%s) could not be connected. " + "Backend device not found." % + (devid, self.deviceClass)) + else: + raise VmError("Device %s (%s) could not be connected. " + "%s" % (devid, self.deviceClass, err)) elif status == Missing: # Don't try to destroy the device; it's already gone away. raise VmError("Device %s (%s) could not be connected. " "Device not found." % (devid, self.deviceClass)) elif status == Busy: - err = None - frontpath = self.frontendPath(devid) - backpath = xstransact.Read(frontpath, "backend") - if backpath: - err = xstransact.Read(backpath, HOTPLUG_ERROR_NODE) - if not err: + self.destroyDevice(devid, False) + if err is None: err = "Busy." - - self.destroyDevice(devid, False) raise VmError("Device %s (%s) could not be connected.\n%s" % (devid, self.deviceClass, err)) @@ -478,17 +475,21 @@ class DevController: frontpath = self.frontendPath(devid) backpath = xstransact.Read(frontpath, "backend") + if backpath: statusPath = backpath + '/' + HOTPLUG_STATUS_NODE ev = Event() result = { 'status': Timeout } - + xswatch(statusPath, hotplugStatusCallback, ev, result) ev.wait(DEVICE_CREATE_TIMEOUT) - return result['status'] - else: - return Missing + + err = xstransact.Read(backpath, HOTPLUG_ERROR_NODE) + + return (result['status'], err) + else: + return (Missing, None) def backendPath(self, backdom, devid): _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |