]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
runner.py: add 'dump-directory-node' command
authorBrian Warner <warner@lothar.com>
Fri, 15 Jun 2007 07:47:05 +0000 (00:47 -0700)
committerBrian Warner <warner@lothar.com>
Fri, 15 Jun 2007 07:47:05 +0000 (00:47 -0700)
src/allmydata/scripts/runner.py

index 988729640258c469eee5dc7b4bf7fc7b08b765de..a52e0f60d7e1ebc35c84224986b8d9ce426887a0 100644 (file)
@@ -164,6 +164,8 @@ class Options(usage.Options):
         ["restart", None, RestartOptions, "Restart a node."],
         ["dump-uri-extension", None, DumpOptions,
          "Unpack and display the contents of a uri_extension file."],
+        ["dump-directory-node", None, DumpOptions,
+         "Unpack and display the contents of a vdrive DirectoryNode."],
         ]
 
     def postOptions(self):
@@ -209,6 +211,8 @@ def runner(argv, run_by_human=True):
             rc = start(basedir, so) or rc
     elif command == "dump-uri-extension":
         rc = dump_uri_extension(so)
+    elif command == "dump-directory-node":
+        rc = dump_directory_node(so)
     return rc
 
 def run():
@@ -324,3 +328,31 @@ def dump_uri_extension(config):
 
     print
     return 0
+
+def dump_directory_node(config):
+    from allmydata import filetable, vdrive
+    filename = config['filename']
+
+    basedir, name = os.path.split(filename)
+    dirnode = filetable.MutableDirectoryNode(basedir, name)
+
+    print
+    print "DirectoryNode at %s" % name
+    print
+
+    children = dirnode._read_from_file()
+    names = sorted(children.keys())
+    for name in names:
+        v = children[name]
+        if isinstance(v, vdrive.FileNode):
+            value = "File (uri=%s...)" % v.uri[:40]
+        elif isinstance(v, vdrive.DirectoryNode):
+            lastslash = v.furl.rindex("/")
+            furlname = v.furl[lastslash+1:lastslash+1+15]
+            value = "Directory (furl=%s.../%s...)" % (v.furl[:15], furlname)
+        else:
+            value = "weird: %s" % (v,)
+        print "%20s: %s" % (name, value)
+    print
+    return 0
+