bin/pvl.verkko-rrd-interfaces
author Tero Marttila <terom@paivola.fi>
Mon, 28 Jan 2013 19:39:36 +0200
changeset 195 5e22cca68c39
parent 189 1ef2f7bf5a03
permissions -rwxr-xr-x
pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     1
#!/usr/bin/python
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     2
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     3
"""
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     4
    Setup symlinks for pvl.verkko-rrd -> collectd based on define host/interface names
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     5
"""
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     6
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     7
__version__ = '0.1'
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     8
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
     9
import shlex
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    10
import os
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    11
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    12
import pvl.args
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    13
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    14
import optparse
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    15
import logging; log = logging.getLogger('main')
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    16
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    17
def hostjoin (*hosts) :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    18
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    19
        DNS hostname join.
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    20
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    21
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    22
    return '.'.join(hosts)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    23
188
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    24
def hostreverse (host) :
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    25
    """
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    26
        Reverse hostname.
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    27
    """
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    28
    
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    29
    return '.'.join(reversed(host.split('.')))
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    30
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    31
def collectd_interfaces (options, file, collectd_domain, collectd_plugin) :
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    32
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    33
        Read collectd (host, type-instance, name) items, and yield (collectd-rrd, out-rrd) tuples.
188
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    34
            
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    35
            file                - read host/ports from file
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    36
            collectd_domain     - append given domain to collectd hostname
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    37
            collectd_plugin     - use given collectd plugin's type-instances
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    38
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    39
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    40
    host = None
189
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
    41
        
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
    42
    log.info("scanning %s/<host>.%s/%s/%s-<port>.rrd", options.collectd_rrd, collectd_domain, collectd_plugin, options.collectd_type)
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    43
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    44
    for idx, line in enumerate(file, 1) :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    45
        line = line.rstrip()
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    46
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    47
        if not line :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    48
            continue
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    49
        
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    50
        # comment?
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    51
        if line.startswith('#') :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    52
            continue
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    53
        
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    54
        # line
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    55
        parts = shlex.split(line)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    56
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    57
        if not line[0].isspace() :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    58
            host = parts.pop(0)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    59
        
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    60
        # host-spec?
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    61
        if '=' in host :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    62
            collectd_host, interface_host = host.split('=')
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    63
        else :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    64
            collectd_host = interface_host = host
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    65
        
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    66
        # flip from DNS-ordering -> path-ordering
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    67
        if options.reverse_host :
189
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
    68
            interface_host = hostreverse(interface_host)
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    69
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    70
        # host has domain in collectd?
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    71
        if collectd_domain :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    72
            collectd_host = hostjoin(collectd_host, collectd_domain)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    73
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    74
        if not parts :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    75
            # keep host for following lines
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    76
            continue
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    77
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    78
        port = parts.pop(0)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    79
        
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    80
        # possibly multiple tags..
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    81
        for tag in parts :
195
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
    82
            if options.collectd_instance == 'type' :
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
    83
                type = options.collectd_type + '-' + port
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
    84
            else :
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
    85
                type = options.collectd_type
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
    86
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
    87
            if options.collectd_instance == 'plugin' :
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
    88
                plugin = collectd_plugin + '-' + port
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
    89
            else :
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
    90
                plugin = collectd_plugin
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
    91
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
    92
            collectd_rrd = os.path.join(options.collectd_rrd, collectd_host, plugin, type) + '.rrd'
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    93
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    94
            if not os.path.exists(collectd_rrd) :
188
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    95
                log.warn("%s: missing collectd rrd: %s", idx, collectd_rrd)
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    96
                continue
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    97
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    98
            # out
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    99
            interface_rrd = os.path.join(interface_host, tag + '.rrd')
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   100
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   101
            log.debug("%s: %s", interface_rrd, collectd_rrd)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   102
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   103
            yield collectd_rrd, interface_rrd
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   104
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   105
def sync_links (options, links, dir) :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   106
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   107
        Sync given (collectd, name) symlinks in given dir.
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   108
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   109
189
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   110
    log.info("%s", dir)
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   111
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   112
    for path, name in links :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   113
        link = os.path.join(dir, name)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   114
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   115
        # sync
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   116
        if os.path.exists(link) :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   117
            continue
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   118
            
189
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   119
        log.info("%s: %s: %s", dir, name, path)
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   120
        
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   121
        yield link, path
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   122
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   123
def apply_links (options, links) :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   124
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   125
        Apply given symlinks
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   126
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   127
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   128
    for link, path in links :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   129
        linkdir = os.path.dirname(link)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   130
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   131
        # do
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   132
        if not os.path.exists(linkdir) :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   133
            log.warn("mkdir: %s", linkdir)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   134
            os.mkdir(linkdir)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   135
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   136
        print path
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   137
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   138
        os.symlink(path, link)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   139
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   140
COLLECTD_RRD = '/var/lib/collectd/rrd'
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   141
COLLECTD_PLUGIN = 'interfaces'
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   142
COLLECTD_TYPE = 'if_octets'
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   143
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   144
def parse_argv (argv, doc = __doc__) :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   145
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   146
        Parse command-line argv, returning (options, args).
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   147
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   148
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   149
    prog = argv.pop(0)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   150
    args = argv
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   151
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   152
    # optparse
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   153
    parser = optparse.OptionParser(
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   154
        prog        = prog,
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   155
        usage       = '%prog: [options] [<input.txt> [...]]',
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   156
        version     = __version__,
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   157
        description = doc,
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   158
    )
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   159
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   160
    # common
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   161
    parser.add_option_group(pvl.args.parser(parser))
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   162
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   163
    # options
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   164
    parser.add_option('--collectd-rrd',     metavar='PATH',     default=COLLECTD_RRD,
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   165
            help="Path to collectd rrd: %default")
188
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   166
    parser.add_option('--collectd-plugin',  metavar='PLUGIN',   default=None,
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   167
            help="Collectd plugin to use: <input>-<plugin>.txt")
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   168
    parser.add_option('--collectd-type',    metavar='TYPE',     default=COLLECTD_TYPE,
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   169
            help="Collectd type to use: %default")
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   170
    
195
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
   171
    # interface is by plugin, snmp is by type...
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
   172
    parser.add_option('--collectd-instance-plugin',     action='store_const', dest='collectd_instance', const='plugin',
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
   173
            help="Collectd by plugin instance")
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
   174
    parser.add_option('--collectd-instance-type',       action='store_const', dest='collectd_instance', const='type',
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
   175
            help="Collectd by type instance")
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
   176
    
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   177
    # hostnames
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   178
    parser.add_option('--reverse-host',     action='store_true',
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   179
            help="Flip host.domain -> domain.host (default)")
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   180
    parser.add_option('--no-reverse-host',  action='store_false', dest='reverse_host',
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   181
            help="Keep host.domain as host.domain")
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   182
    parser.add_option('--domain',           metavar='DOMAIN',  
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   183
            help="Append domain to collectd hostnames: <input>.txt -> <input>")
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   184
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   185
    # output
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   186
    parser.add_option('--rrd',              metavar='PATH',
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   187
            help="Output directory for .rrd symlinks: <input>.txt -> <input>/")
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   188
    parser.add_option('--noop',             action='store_true',
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   189
            help="Scan symlinks, but do not update")
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   190
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   191
    parser.set_defaults(
195
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
   192
            collectd_instance   = 'type',
5e22cca68c39 pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents: 189
diff changeset
   193
            reverse_host        = True,
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   194
    )
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   195
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   196
    # parse
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   197
    options, args = parser.parse_args(args)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   198
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   199
    # apply
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   200
    pvl.args.apply(options)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   201
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   202
    return options, args
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   203
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   204
def main (argv) :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   205
    options, args = parse_argv(argv)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   206
    
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   207
    for txt in args :
188
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   208
        # <path>/<domain>-<plugin>.txt -> <path>/<domain>-<plugin>
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   209
        basepath, _ = os.path.splitext(txt)
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   210
        
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   211
        # <path>/<domain>-<plugin> -> <path>/<domain>, <plugin>
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   212
        if '-' in basepath :
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   213
            basepath, collectd_plugin = basepath.rsplit('-', 1)
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   214
        else :
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   215
            collectd_plugin = None
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   216
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   217
        # <path>/<domain> -> <domain>
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   218
        _, basename = os.path.split(basepath)
189
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   219
        
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   220
        # domain?
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   221
        if options.domain is None :
188
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   222
            # reverse-order hostname
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   223
            domain = hostreverse(basename)
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   224
        else :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   225
            # may be ''
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   226
            domain = options.domain
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   227
        
189
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   228
        # output dir?
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   229
        if options.rrd :
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   230
            rrd_domain = hostreverse(domain) if options.reverse_host else domain
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   231
            rrd = os.path.join(options.rrd, rrd_domain)
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   232
        else :
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   233
            rrd = basepath
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   234
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   235
        # generate links from spec
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   236
        links = list(collectd_interfaces(options, open(txt),
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   237
            collectd_domain     = domain,
188
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   238
            collectd_plugin     = options.collectd_plugin or collectd_plugin or COLLECTD_PLUGIN,
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   239
        ))
189
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   240
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   241
        if not os.path.exists(rrd) :
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   242
            log.warn("mkdir: %s", rrd)
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   243
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   244
            if not options.noop :
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   245
                os.mkdir(rrd)
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   246
        
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   247
        # sync missing links
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   248
        links = list(sync_links(options, links,
189
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   249
            dir     = rrd,
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   250
        ))
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   251
        
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   252
        # verbose
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   253
        if not options.quiet :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   254
            for link, path in links :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   255
                print link, '->', path
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   256
        
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   257
        # apply
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   258
        if not options.noop :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   259
            apply_links(options, links)
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   260
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   261
    return 0
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   262
    
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   263
if __name__ == '__main__':
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   264
    import sys
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   265
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   266
    sys.exit(main(sys.argv))