2 from __future__ import with_statement
8 from types import StringTypes, ListType
9 from optparse import OptionParser
11 from sfa.trust.certificate import Certificate
12 from sfa.trust.credential import Credential
13 from sfa.util.record import SfaRecord
14 from sfa.util.rspec import RSpec
15 from sfa.util.sfalogging import sfa_logger, sfa_logger_goes_to_console
17 def determine_sfa_filekind(fn):
19 cert = Certificate(filename = fn)
25 cred=Credential(filename=fn)
31 # if "gidCaller" in dict:
41 lastpart = hrn.split(".")[-1]
42 filename = lastpart + ".gid"
44 if os.path.exists(filename):
45 print filename, ": already exists... skipping"
48 print filename, ": extracting gid of", hrn
50 gid.save_to_file(filename, save_parents = True)
52 def extract_gids(cred, extract_parents):
53 gidCaller = cred.get_gid_caller()
57 gidObject = cred.get_gid_object()
58 if gidObject and ((gidCaller == None) or (gidCaller.get_hrn() != gidObject.get_hrn())):
61 # no such method Credential.get_parent
63 # parent = cred.get_parent()
65 # extract_gids(parent, extract_parents)
67 def handle_input (filename, options):
69 kind = determine_sfa_filekind(filename)
71 if kind=="certificate":
72 cert=Certificate (filename=filename)
73 # cert.dump(dump_parents=options.dump_parents)
75 elif kind=="credential":
76 cred = Credential(filename = filename)
77 cred.dump(dump_parents = options.dump_parents)
78 if options.extract_gids:
79 extract_gids(cred, extract_parents = options.dump_parents)
81 gid = Gid(filename = filename)
82 gid.dump(dump_parents = options.dump_parents)
84 print "%s: unknown filekind '%s'"% (filename,kind)
87 sfa_logger_goes_to_console()
88 usage = """%prog file1 [ .. filen]
89 display info on input files"""
90 parser = OptionParser(usage=usage)
92 parser.add_option("-e", "--extractgids", action="store_true", dest="extract_gids", default=False, help="Extract GIDs from credentials")
93 parser.add_option("-p", "--dumpparents", action="store_true", dest="dump_parents", default=False, help="Show parents")
94 parser.add_option("-v", "--verbose", action='count', dest='verbose', default=0)
95 (options, args) = parser.parse_args()
97 sfa_logger().setLevelFromOptVerbose(options.verbose)
102 handle_input(f,options)
104 if __name__=="__main__":