from optparse import OptionParser
from pprint import pprint
from xml.parsers.expat import ExpatError
-from sfa.util.xml import XML
+from sfa.util.xml import XML
+
def create_parser():
command = sys.argv[0]
argv = sys.argv[1:]
usage = "%(command)s [options]" % locals()
description = """getRecord will parse a supplied (via stdin) record and print all values or key/values, and filter results based on a given key or set of keys."""
- parser = OptionParser(usage=usage,description=description)
+ parser = OptionParser(usage=usage, description=description)
parser.add_option("-d", "--debug", dest="DEBUG", action="store_true",
- default=False, help = "record file path")
+ default=False, help="record file path")
parser.add_option("-k", "--key", dest="withkey", action="store_true",
- default=False, help = "print SSH keys and certificates")
+ default=False, help="print SSH keys and certificates")
parser.add_option("-p", "--plinfo", dest="plinfo", action="store_true",
- default=False, help = "print PlanetLab specific internal fields")
-
- return parser
+ default=False, help="print PlanetLab specific internal fields")
+
+ return parser
def printRec(record_dict, filters, options):
line = ""
if len(filters):
for filter in filters:
- if options.DEBUG: print "Filtering on %s" %filter
- line += "%s: %s\n" % (filter,
- printVal(record_dict.get(filter, None)))
+ if options.DEBUG:
+ print "Filtering on %s" % filter
+ line += "%s: %s\n" % (filter,
+ printVal(record_dict.get(filter, None)))
print line
else:
# print the wole thing
for (key, value) in record_dict.iteritems():
if (not options.withkey and key in ('gid', 'keys')) or\
- (not options.plinfo and key == 'pl_info'):
+ (not options.plinfo and key == 'pl_info'):
continue
line += "%s: %s\n" % (key, printVal(value))
print line
def main():
- parser = create_parser();
+ parser = create_parser()
(options, args) = parser.parse_args()
stdin = sys.stdin.read()
-
+
record = XML(stdin)
record_dict = record.todict()
-
- if options.DEBUG:
+
+ if options.DEBUG:
pprint(record.toxml())
print "#####################################################"
printRec(record_dict, args, options)
if __name__ == '__main__':
- try: main()
- except ExpatError, e:
+ try:
+ main()
+ except ExpatError as e:
print "RecordError. Is your record valid XML?"
print e
- except Exception, e:
+ except Exception as e:
print e