mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 18:21:39 +01:00
Added behaviour to list() to list the transaction's path if no arguments are
given. Added list_recursive(). Signed-off-by: Ewan Mellor <ewan@xensource.com>
This commit is contained in:
1 parent
1ca806748a
commit
823550cc47
1 file changed
+31
-3
@@ -1,4 +1,5 @@
|
||||
# Copyright (C) 2005 Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
|
||||
# Copyright (C) 2005 XenSource Ltd
|
||||
|
||||
# This file is subject to the terms and conditions of the GNU General
|
||||
# Public License. See the file "COPYING" in the main directory of
|
||||
@@ -9,6 +10,7 @@ import threading
|
||||
from xen.lowlevel import xs
|
||||
from xen.xend.xenstore.xsutil import xshandle
|
||||
|
||||
|
||||
class xstransact:
|
||||
|
||||
def __init__(self, path):
|
||||
@@ -105,13 +107,39 @@ class xstransact:
|
||||
return []
|
||||
|
||||
def list(self, *args):
|
||||
"""If no arguments are given, list this transaction's path, returning
|
||||
the entries therein, or None if no entries are found. Otherwise,
|
||||
treat each argument as a subpath to this transaction's path, and
|
||||
return the cumulative listing of each of those instead.
|
||||
"""
|
||||
if len(args) == 0:
|
||||
raise TypeError
|
||||
return xshandle().ls(self.path)
|
||||
else:
|
||||
ret = []
|
||||
for key in args:
|
||||
ret.extend(self._list(key))
|
||||
return ret
|
||||
|
||||
|
||||
def list_recursive_(self, subdir, keys):
|
||||
ret = []
|
||||
for key in args:
|
||||
ret.extend(self._list(key))
|
||||
for key in keys:
|
||||
new_subdir = subdir + "/" + key
|
||||
l = xshandle().ls(new_subdir)
|
||||
if l:
|
||||
ret.append([key, self.list_recursive_(new_subdir, l)])
|
||||
else:
|
||||
ret.append([key, xshandle().read(new_subdir)])
|
||||
return ret
|
||||
|
||||
|
||||
def list_recursive(self, *args):
|
||||
if len(args) == 0:
|
||||
args = self.list()
|
||||
|
||||
return self.list_recursive_(self.path, args)
|
||||
|
||||
|
||||
def gather(self, *args):
|
||||
if len(args) and type(args[0]) != tuple:
|
||||
args = args,
|
||||
|
||||