added --extractgids, --dumpparents
authorScott Baker <bakers@cs.arizona.edu>
Wed, 3 Jun 2009 23:48:26 +0000 (23:48 +0000)
committerScott Baker <bakers@cs.arizona.edu>
Wed, 3 Jun 2009 23:48:26 +0000 (23:48 +0000)
cmdline/genidump.py

index 03fb71d..6e02f94 100644 (file)
@@ -33,10 +33,40 @@ def determine_geni_filekind(fn):
 
     return "unknown"
 
+def save_gid(gid):
+   hrn = gid.get_hrn()
+   lastpart = hrn.split(".")[-1]
+   filename = lastpart + ".gid"
+
+   if os.path.exists(filename):
+       print filename, ": already exists... skipping"
+       return
+
+   print filename, ": extracting gid of", hrn
+
+   gid.save_to_file(filename, save_parents = True)
+
+def extract_gids(cred, extract_parents):
+   gidCaller = cred.get_gid_caller()
+   if gidCaller:
+       save_gid(gidCaller)
+
+   gidObject = cred.get_gid_object()
+   if gidObject and ((gidCaller == None) or (gidCaller.get_hrn() != gidObject.get_hrn())):
+       save_gid(gidObject)
+
+   if extract_parents:
+       parent = cred.get_parent()
+       if parent:
+           extract_gids(parent, extract_parents)
+
 def create_parser():
    # Generate command line parser
    parser = OptionParser(usage="genidump [options] filename")
 
+   parser.add_option("-e", "--extractgids", action="store_true", dest="extract_gids", default=False, help="Extract GIDs from credentials")
+   parser.add_option("-p", "--dumpparents", action="store_true", dest="dump_parents", default=False, help="Show parents")
+
    return parser
 
 def main():
@@ -52,10 +82,12 @@ def main():
 
    if kind=="credential":
        cred = Credential(filename = filename)
-       cred.dump(dump_parents = True)
+       cred.dump(dump_parents = options.dump_parents)
+       if options.extract_gids:
+           extract_gids(cred, extract_parents = options.dump_parents)
    elif kind=="gid":
        gid = Gid(filename = filename)
-       gid.dump(dump_parents = True)
+       gid.dump(dump_parents = options.dump_parents)
    else:
        print "unknown filekind", kind