03fb71d933712bd64fe773c53c441629562a048a
[sfa.git] / cmdline / genidump.py
1 #! /usr/bin/env python
2 from __future__ import with_statement
3
4 import sys
5 import os, os.path
6 import tempfile
7 import xmlrpclib
8 from optparse import OptionParser
9 from geni.util.cert import Keypair, Certificate
10 from geni.util.credential import Credential
11 from geni.util.geniclient import GeniClient, ServerException
12 from geni.util.gid import create_uuid
13 from geni.util.record import GeniRecord
14 from geni.util.rspec import Rspec
15 from types import StringTypes, ListType
16
17 def determine_geni_filekind(fn):
18     from geni.util.cert import Certificate
19
20     cert = Certificate(filename = fn)
21
22     data = cert.get_data()
23     if data:
24         dict = xmlrpclib.loads(data)[0][0]
25     else:
26         dict = {}
27
28     if "gidCaller" in dict:
29         return "credential"
30
31     if "uuid" in dict:
32         return "gid"
33
34     return "unknown"
35
36 def create_parser():
37    # Generate command line parser
38    parser = OptionParser(usage="genidump [options] filename")
39
40    return parser
41
42 def main():
43    parser = create_parser()
44    (options, args) = parser.parse_args()
45
46    if len(args) <= 0:
47         print "No filename given. Use -h for help."
48         return -1
49
50    filename = args[0]
51    kind = determine_geni_filekind(filename)
52
53    if kind=="credential":
54        cred = Credential(filename = filename)
55        cred.dump(dump_parents = True)
56    elif kind=="gid":
57        gid = Gid(filename = filename)
58        gid.dump(dump_parents = True)
59    else:
60        print "unknown filekind", kind
61
62 if __name__=="__main__":
63    main()