# HG changeset patch # User Tero Marttila # Date 1359292948 -7200 # Node ID 6b3f30fcded7fdcb7d63d0babc66b58749416eea # Parent cbf9371a472d1889b8c23a164b04f0ae9d061212 pvl.verkko-rrd-interfaces: change /-.txt semantics for input file names diff -r cbf9371a472d -r 6b3f30fcded7 bin/pvl.verkko-rrd-interfaces --- a/bin/pvl.verkko-rrd-interfaces Sun Jan 27 15:07:04 2013 +0200 +++ b/bin/pvl.verkko-rrd-interfaces Sun Jan 27 15:22:28 2013 +0200 @@ -21,12 +21,20 @@ return '.'.join(hosts) -def collectd_interfaces (options, file, collectd_domain) : +def hostreverse (host) : + """ + Reverse hostname. + """ + + return '.'.join(reversed(host.split('.'))) + +def collectd_interfaces (options, file, collectd_domain, collectd_plugin) : """ Read collectd (host, type-instance, name) items, and yield (collectd-rrd, out-rrd) tuples. - - collectd_domain - append given domain to collectd hosts - dir - output directory + + file - read host/ports from file + collectd_domain - append given domain to collectd hostname + collectd_plugin - use given collectd plugin's type-instances """ host = None @@ -69,11 +77,11 @@ # possibly multiple tags.. for tag in parts : - collectd_name = options.collectd_type + '-' + port + '.rrd' - collectd_rrd = os.path.join(options.collectd_rrd, collectd_host, options.collectd_plugin, collectd_name) + collectd_type = options.collectd_type + '-' + port + collectd_rrd = os.path.join(options.collectd_rrd, collectd_host, collectd_plugin, collectd_type) + '.rrd' if not os.path.exists(collectd_rrd) : - log.warn("%s: non-existant rrd: %s", idx, rrd) + log.warn("%s: missing collectd rrd: %s", idx, collectd_rrd) continue # out @@ -142,8 +150,8 @@ # options parser.add_option('--collectd-rrd', metavar='PATH', default=COLLECTD_RRD, help="Path to collectd rrd: %default") - parser.add_option('--collectd-plugin', metavar='PLUGIN', default=COLLECTD_PLUGIN, - help="Collectd plugin to use: %default") + parser.add_option('--collectd-plugin', metavar='PLUGIN', default=None, + help="Collectd plugin to use: -.txt") parser.add_option('--collectd-type', metavar='TYPE', default=COLLECTD_TYPE, help="Collectd type to use: %default") @@ -177,12 +185,21 @@ options, args = parse_argv(argv) for txt in args : - # defaults from .txt name - base, _ = os.path.splitext(txt) - _, basename = os.path.split(base) + # /-.txt -> /- + basepath, _ = os.path.splitext(txt) + + # /- -> /, + if '-' in basepath : + basepath, collectd_plugin = basepath.rsplit('-', 1) + else : + collectd_plugin = None + + # / -> + _, basename = os.path.split(basepath) if options.domain is None : - domain = '.'.join(reversed(basename.split('.'))) + # reverse-order hostname + domain = hostreverse(basename) else : # may be '' domain = options.domain @@ -190,11 +207,12 @@ # generate links from spec links = list(collectd_interfaces(options, open(txt), collectd_domain = domain, + collectd_plugin = options.collectd_plugin or collectd_plugin or COLLECTD_PLUGIN, )) # sync missing links links = list(sync_links(options, links, - dir = options.rrd or base, + dir = options.rrd or basepath, )) # verbose