- Timestamp:
- Jul 28, 2008, 12:25:19 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/sipb-xen-base/files/usr/sbin/invirt-getconf
r733 r771 1 #!/usr/bin/env python 2.51 #!/usr/bin/env python 2 2 3 3 """ … … 20 20 from optparse import OptionParser 21 21 22 class invirt_exception( Exception): pass22 class invirt_exception(Exception): pass 23 23 24 def main( argv):24 def main(argv): 25 25 try: 26 parser = OptionParser() 27 parser.add_option('-f', '--file', default = '/etc/invirt/master.yaml', 28 help = 'the configuration file to read from') 29 options, args = parser.parse_args() 26 parser = OptionParser(usage = '%prog [options] key', 27 description = __doc__.strip().split('\n\n')[0]) 28 parser.add_option('-s', '--src', 29 default = '/etc/invirt/master.yaml', 30 help = 'the source YAML configuration file to read from') 31 parser.add_option('-c', '--cache', 32 default = '/var/lib/invirt/invirt.json', 33 help = 'path to the JSON cache') 34 parser.add_option('-r', '--refresh', 35 action = 'store_true', 36 help = 'force the cache to be regenerated') 37 opts, args = parser.parse_args() 30 38 31 39 try: [key] = args 32 except: raise invirt_exception( __doc__)40 except: raise invirt_exception(__doc__.strip()) 33 41 34 conf = load( )42 conf = load(opts.src, opts.cache, opts.refresh) 35 43 components = key.split('.') 36 for i, component in enumerate( components):37 progress = lambda: '.'.join( components[:i])38 if type( conf ) not in [ dict, list]:44 for i, component in enumerate(components): 45 progress = '.'.join(components[:i]) 46 if type(conf) not in [dict, list]: 39 47 raise invirt_exception( 40 'prematurely arrived at an atomic datum in the tree:\n' 41 '%s has no children' % progress() ) 42 if type( conf ) == list: 43 try: component = int( component ) 48 '%s: node has no children (atomic datum)' % progress) 49 if type(conf) == list: 50 try: component = int(component) 44 51 except: raise invirt_exception( 45 '%s is a list, requires an integral path component'46 'but got "%s"' % ( progress(), component ))47 try: conf = conf[ component]52 '%s: node a list; integer path component required, ' 53 'but got "%s"' % (progress, component)) 54 try: conf = conf[component] 48 55 except KeyError: raise invirt_exception( 49 '"%s" not in "%s"' % ( component, progress() ) ) 56 '%s: key "%s" not found' % (progress, component)) 57 except IndexError: raise invirt_exception( 58 '%s: index %s out of range' % (progress, component)) 50 59 print conf 51 except invirt_exception, ex:60 except (invirt_exception, OSError), ex: 52 61 print >> stderr, ex 53 62 return 1 54 63 55 if __name__ == '__main__': exit( main( argv ) ) 64 if __name__ == '__main__': 65 exit(main(argv)) 56 66 57 67 # vim:et:sw=4:ts=4
Note: See TracChangeset
for help on using the changeset viewer.