bin/pvl.verkko-rrd-interfaces
author Tero Marttila <terom@paivola.fi>
Sun, 27 Jan 2013 22:05:23 +0200
changeset 192 9157c1984fd8
parent 189 1ef2f7bf5a03
child 195 5e22cca68c39
permissions -rwxr-xr-x
pvl.dhcp-leases: fix --create
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 :
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
    82
            collectd_type = options.collectd_type + '-' + port
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
    83
            collectd_rrd = os.path.join(options.collectd_rrd, collectd_host, collectd_plugin, collectd_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
    84
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    85
            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
    86
                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
    87
                continue
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    88
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    89
            # out
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    90
            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
    91
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    92
            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
    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
            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
    95
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
    96
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
    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
        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
    99
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   100
189
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   101
    log.info("%s", dir)
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   102
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   103
    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
   104
        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
   105
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   106
        # sync
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   107
        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
   108
            continue
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: %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
   111
        
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   112
        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
   113
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   114
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
   115
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   116
        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
   117
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   118
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   119
    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
   120
        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
   121
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   122
        # do
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   123
        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
   124
            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
   125
            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
   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
        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
   128
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   129
        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
   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
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
   132
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
   133
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
   134
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   135
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
   136
    """
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   137
        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
   138
    """
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
    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
   141
    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
   142
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   143
    # optparse
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   144
    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
   145
        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
   146
        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
   147
        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
   148
        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
   149
    )
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   150
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   151
    # common
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   152
    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
   153
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   154
    # options
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   155
    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
   156
            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
   157
    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
   158
            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
   159
    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
   160
            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
   161
    
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   162
    # hostnames
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   163
    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
   164
            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
   165
    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
   166
            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
   167
    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
   168
            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
   169
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   170
    # output
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   171
    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
   172
            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
   173
    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
   174
            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
   175
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   176
    parser.set_defaults(
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   177
            reverse_host    = True,
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   178
    )
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   179
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   180
    # parse
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   181
    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
   182
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   183
    # apply
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   184
    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
   185
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   186
    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
   187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   188
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
   189
    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
   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
    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
   192
        # <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
   193
        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
   194
        
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   195
        # <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
   196
        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
   197
            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
   198
        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
   199
            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
   200
6b3f30fcded7 pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents: 187
diff changeset
   201
        # <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
   202
        _, basename = os.path.split(basepath)
189
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   203
        
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   204
        # 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
   205
        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
   206
            # 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
   207
            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
   208
        else :
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   209
            # 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
   210
            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
   211
        
189
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   212
        # output dir?
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   213
        if options.rrd :
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   214
            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
   215
            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
   216
        else :
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   217
            rrd = basepath
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   218
187
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   219
        # 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
   220
        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
   221
            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
   222
            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
   223
        ))
189
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   224
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   225
        if not os.path.exists(rrd) :
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   226
            log.warn("mkdir: %s", rrd)
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   227
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   228
            if not options.noop :
1ef2f7bf5a03 pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents: 188
diff changeset
   229
                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
   230
        
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   231
        # 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
   232
        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
   233
            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
   234
        ))
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   235
        
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   236
        # verbose
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   237
        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
   238
            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
   239
                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
   240
        
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   241
        # apply
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   242
        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
   243
            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
   244
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   245
    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
   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
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
   248
    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
   249
cbf9371a472d pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff changeset
   250
    sys.exit(main(sys.argv))