#!/usr/bin/env python import sys import pickle from optparse import OptionParser from string import join class Parser(OptionParser): def __init__(self): OptionParser.__init__(self, usage='%prog [options] state_file [allocid]') self.add_option('--field', dest='field', default='manifest', help='field to extract: deafult %default') parser = Parser() opts, args = parser.parse_args() if len(args) == 1: fn = args[0] a = None elif len(args) == 2: fn, a = args else: parser.print_help() sys.exit(1) try: f = open(fn, 'r') d = pickle.load(f) f.close() except EnvironmentError, e: sys.exit("Can't read %s: %s" % (e.filename or '!?', e.strerror)) except pickle.PickleError, e: f.close() sys.exit("Unpickling error: %s" %e) if 'allocation' in d: alloc = d['allocation'] if a: if a in alloc: if opts.field in alloc[a]: print alloc[a][opts.field] else: sys.exit('No %s in %s' % (opts.field, a)) else: sys.exit('Allocation %s not in state' % a) else: for k in alloc.keys(): if opts.field in alloc[k]: print k else: sys.exit('No allocation in state')