CL> I've reverted this check-in because with the change applied, the
CL> error messages are incorrect:
Ok, so the problem is rooted in the way the args list is manipulated
in the subcommand handlers. As it stands now (without the patch),
some commands give a good error message, while others dump a stack
trace if the domain doesn't exist:
# xm destroy foo
Error: Domain 'foo' not found when running 'xm destroy'
# xm domid foo
Traceback (most recent call last):
File "/usr/sbin/xm", line 10, in ?
main.main(sys.argv)
File "/usr/lib/python/xen/xm/main.py", line 671, in main
handle_xend_error(argv[1], args[1], ex)
IndexError: list index out of range
This is because destroy adds "bogus" into the args list at index 0,
but domid does not. I've attached a new patch that checks for this
condition, and removes the "bogus" entry from the list if the
subcommand added it. This makes the call to handle_xend_error() work
in both situations:
# xm destroy foo
Error: Domain 'foo' not found when running 'xm destroy'
# xm domid foo
Error: Domain 'foo' not found when running 'xm domid'
Is that an acceptable solution for now? Perhaps a cleanup of the
inconsistent subcommand handler behavior is in order. I can do that
when I start work on the remaining interface changes.
diff -r b74c15e4dd4f tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py Wed Aug 24 16:15:42 2005
+++ b/tools/python/xen/xm/main.py Wed Aug 24 09:36:32 2005
@@ -665,8 +665,10 @@
err("Most commands need root access. Please try again as root")
sys.exit(1)
except XendError, ex:
+ if args[0] == "bogus":
+ args.remove("bogus")
if len(args) > 0:
- handle_xend_error(argv[1], args[1], ex)
+ handle_xend_error(argv[1], args[0], ex)
else:
print "Unexpected error:", sys.exc_info()[0]
print
--
Dan Smith
IBM Linux Technology Center
Open Hypervisor Team
email: danms@xxxxxxxxxx
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|