#! /usr/bin/env python from __future__ import with_statement import sys import os, os.path import tempfile import xmlrpclib from optparse import OptionParser from geni.util.cert import Keypair, Certificate from geni.util.credential import Credential from geni.util.geniclient import GeniClient, ServerException from geni.util.gid import create_uuid from geni.util.record import GeniRecord from geni.util.rspec import Rspec from types import StringTypes, ListType def determine_geni_filekind(fn): from geni.util.cert import Certificate cert = Certificate(filename = fn) data = cert.get_data() if data: dict = xmlrpclib.loads(data)[0][0] else: dict = {} if "gidCaller" in dict: return "credential" if "uuid" in dict: return "gid" return "unknown" def create_parser(): # Generate command line parser parser = OptionParser(usage="genidump [options] filename") return parser def main(): parser = create_parser() (options, args) = parser.parse_args() if len(args) <= 0: print "No filename given. Use -h for help." return -1 filename = args[0] kind = determine_geni_filekind(filename) if kind=="credential": cred = Credential(filename = filename) cred.dump(dump_parents = True) elif kind=="gid": gid = Gid(filename = filename) gid.dump(dump_parents = True) else: print "unknown filekind", kind if __name__=="__main__": main()