X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-base.git/blobdiff_plain/cb5ceb33ff4e87e35e30cffb07c2dec47fa5937e..f2acfa0565a11ed251ad390461a5c428640681c2:/files/usr/bin/invirt-getconf diff --git a/files/usr/bin/invirt-getconf b/files/usr/bin/invirt-getconf deleted file mode 100755 index 4721212..0000000 --- a/files/usr/bin/invirt-getconf +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env python - -""" -invirt-getconf loads an invirt configuration file (either the original YAML -source or the faster-to-load JSON cache) and prints the configuration option -with the given name (key). Keys are dot-separated paths into the YAML -configuration tree. List indexes (0-based) are also treated as path -components. - -(Due to this path language, certain restrictions are placed on the keys used in -the YAML configuration; e.g., they cannot contain dots.) - -Examples: - - invirt-getconf db.uri - invirt-getconf authn.0.type -""" - -from invirt.config import load -from sys import argv, exit, stderr, stdout -from optparse import OptionParser - -class invirt_exception(Exception): pass - -def main(argv): - try: - parser = OptionParser(usage = '%prog [options] key', - description = __doc__.strip().split('\n\n')[0]) - parser.add_option('-s', '--src', - default = '/etc/invirt/master.yaml', - help = 'the source YAML configuration file to read from') - parser.add_option('-c', '--cache', - default = '/var/lib/invirt/invirt.json', - help = 'path to the JSON cache') - parser.add_option('-r', '--refresh', - action = 'store_true', - help = 'force the cache to be regenerated') - parser.add_option('-l', '--ls', - action = 'store_true', - help = 'list node\'s children') - opts, args = parser.parse_args() - - if len(args) > 1: - raise invirt_exception(__doc__.strip()) - elif args and args[0]: - components = args[0].split('.') - else: - components = [] - - conf = load(opts.src, opts.cache, opts.refresh) - for i, component in enumerate(components): - progress = '.'.join(components[:i]) - if type(conf) not in (dict, list): - raise invirt_exception( - '%s: node has no children (atomic datum)' % progress) - if type(conf) == list: - try: component = int(component) - except: raise invirt_exception( - '%s: node a list; integer path component required, ' - 'but got "%s"' % (progress, component)) - try: conf = conf[component] - except KeyError: raise invirt_exception( - '%s: key "%s" not found' % (progress, component)) - except IndexError: raise invirt_exception( - '%s: index %s out of range' % (progress, component)) - - if opts.ls: - if type(conf) not in (dict, list): - raise invirt_exception( - '%s: node has no children (atomic datum)' - % '.'.join(components)) - if type(conf) == list: - for i in xrange(len(conf)): - print i - else: - for k in conf.iterkeys(): - print k - else: - if type(conf) not in (dict, list): - print conf - else: - import yaml - yaml.dump(conf, stdout, - Dumper=yaml.CSafeDumper, default_flow_style=False) - except invirt_exception, ex: - print >> stderr, ex - return 1 - -if __name__ == '__main__': - exit(main(argv)) - -# vim:et:sw=4:ts=4