diff --git a/tools/python/xen/xend/xenstore/xstransact.py b/tools/python/xen/xend/xenstore/xstransact.py index d76dd88a90..e15ebdb922 100644 --- a/tools/python/xen/xend/xenstore/xstransact.py +++ b/tools/python/xen/xend/xenstore/xstransact.py @@ -89,10 +89,15 @@ class xstransact: return xshandle().rm(path) def remove(self, *args): + """If no arguments are given, remove this transaction's path. + Otherwise, treat each argument as a subpath to this transaction's + path, and remove each of those instead. + """ if len(args) == 0: - raise TypeError - for key in args: - self._remove(key) + xshandle().rm(self.path) + else: + for key in args: + self._remove(key) def _list(self, key): path = "%s/%s" % (self.path, key) @@ -188,6 +193,10 @@ class xstransact: Write = classmethod(Write) def Remove(cls, path, *args): + """If only one argument is given (path), remove it. Otherwise, treat + each further argument as a subpath to the given path, and remove each + of those instead. This operation is performed inside a transaction. + """ while True: t = cls(path) try: