author | Tero Marttila <terom@paivola.fi> |
Mon, 28 Jan 2013 19:39:36 +0200 | |
changeset 195 | 5e22cca68c39 |
parent 189 | 1ef2f7bf5a03 |
permissions | -rwxr-xr-x |
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)) |