author | Tero Marttila <terom@paivola.fi> |
Mon, 17 Mar 2014 11:59:15 +0200 | |
changeset 380 | 78f192fe9e2c |
parent 235 | a34e7260568b |
child 425 | 4e828d47421a |
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 os |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
10 |
|
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
11 |
import pvl.args |
235
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
12 |
import pvl.rrd.hosts |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
13 |
from pvl.rrd.hosts import hostreverse |
187
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
14 |
|
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 optparse |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
16 |
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
|
17 |
|
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
18 |
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
|
19 |
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
|
20 |
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
|
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 |
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
|
23 |
""" |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
24 |
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
|
25 |
""" |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
26 |
|
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
27 |
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
|
28 |
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
|
29 |
|
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
30 |
# optparse |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
31 |
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
|
32 |
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
|
33 |
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
|
34 |
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
|
35 |
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
|
36 |
) |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
37 |
|
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
38 |
# common |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
39 |
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
|
40 |
|
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
41 |
# options |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
42 |
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
|
43 |
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
|
44 |
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
|
45 |
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
|
46 |
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
|
47 |
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
|
48 |
|
195
5e22cca68c39
pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents:
189
diff
changeset
|
49 |
# 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
|
50 |
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
|
51 |
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
|
52 |
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
|
53 |
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
|
54 |
|
187
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
55 |
# hostnames |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
56 |
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
|
57 |
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
|
58 |
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
|
59 |
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
|
60 |
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
|
61 |
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
|
62 |
|
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
63 |
# output |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
64 |
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
|
65 |
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
|
66 |
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
|
67 |
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
|
68 |
|
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
69 |
parser.set_defaults( |
195
5e22cca68c39
pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents:
189
diff
changeset
|
70 |
collectd_instance = 'type', |
5e22cca68c39
pvl.verkko-rrd-interfaces: implement support for --collectd-instance-plugin
Tero Marttila <terom@paivola.fi>
parents:
189
diff
changeset
|
71 |
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
|
72 |
) |
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 |
# parse |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
75 |
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
|
76 |
|
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
77 |
# apply |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
78 |
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
|
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 |
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
|
81 |
|
235
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
82 |
def sync_links (options, links, dir) : |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
83 |
""" |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
84 |
Sync given (collectd, name) symlinks in given dir. |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
85 |
""" |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
86 |
|
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
87 |
log.info("%s", dir) |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
88 |
|
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
89 |
for path, name in links : |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
90 |
link = os.path.join(dir, name) |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
91 |
|
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
92 |
# sync |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
93 |
if os.path.exists(link) : |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
94 |
continue |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
95 |
|
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
96 |
log.info("%s: %s: %s", dir, name, path) |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
97 |
|
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
98 |
yield link, path |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
99 |
|
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
100 |
def apply_links (options, links) : |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
101 |
""" |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
102 |
Apply given symlinks |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
103 |
""" |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
104 |
|
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
105 |
for link, path in links : |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
106 |
linkdir = os.path.dirname(link) |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
107 |
|
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
108 |
# do |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
109 |
if not os.path.exists(linkdir) : |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
110 |
log.warn("mkdir: %s", linkdir) |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
111 |
os.mkdir(linkdir) |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
112 |
|
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
113 |
print path |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
114 |
|
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
115 |
os.symlink(path, link) |
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
116 |
|
187
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
117 |
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
|
118 |
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
|
119 |
|
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
120 |
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
|
121 |
# <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
|
122 |
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
|
123 |
|
6b3f30fcded7
pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents:
187
diff
changeset
|
124 |
# <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
|
125 |
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
|
126 |
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
|
127 |
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
|
128 |
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
|
129 |
|
6b3f30fcded7
pvl.verkko-rrd-interfaces: change <path>/<domain>-<plugin>.txt semantics for input file names
Tero Marttila <terom@paivola.fi>
parents:
187
diff
changeset
|
130 |
# <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
|
131 |
_, basename = os.path.split(basepath) |
189
1ef2f7bf5a03
pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents:
188
diff
changeset
|
132 |
|
1ef2f7bf5a03
pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents:
188
diff
changeset
|
133 |
# 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
|
134 |
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
|
135 |
# 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
|
136 |
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
|
137 |
else : |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
138 |
# 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
|
139 |
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
|
140 |
|
189
1ef2f7bf5a03
pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents:
188
diff
changeset
|
141 |
# output dir? |
1ef2f7bf5a03
pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents:
188
diff
changeset
|
142 |
if options.rrd : |
1ef2f7bf5a03
pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents:
188
diff
changeset
|
143 |
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
|
144 |
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
|
145 |
else : |
1ef2f7bf5a03
pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents:
188
diff
changeset
|
146 |
rrd = basepath |
1ef2f7bf5a03
pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents:
188
diff
changeset
|
147 |
|
187
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
148 |
# generate links from spec |
235
a34e7260568b
split pvl.rrd-interface into pvl.rrd.hosts
Tero Marttila <terom@paivola.fi>
parents:
228
diff
changeset
|
149 |
links = list(pvl.rrd.hosts.collectd_interfaces(options, open(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
|
150 |
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
|
151 |
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
|
152 |
)) |
189
1ef2f7bf5a03
pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents:
188
diff
changeset
|
153 |
|
1ef2f7bf5a03
pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents:
188
diff
changeset
|
154 |
if not os.path.exists(rrd) : |
1ef2f7bf5a03
pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents:
188
diff
changeset
|
155 |
log.warn("mkdir: %s", rrd) |
1ef2f7bf5a03
pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents:
188
diff
changeset
|
156 |
|
1ef2f7bf5a03
pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents:
188
diff
changeset
|
157 |
if not options.noop : |
1ef2f7bf5a03
pvl.verkko-rrd-interfaces: change --rrd/domain handling
Tero Marttila <terom@paivola.fi>
parents:
188
diff
changeset
|
158 |
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
|
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 |
# 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
|
161 |
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
|
162 |
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
|
163 |
)) |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
164 |
|
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
165 |
# verbose |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
166 |
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
|
167 |
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
|
168 |
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
|
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 |
# apply |
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
171 |
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
|
172 |
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
|
173 |
|
cbf9371a472d
pvl.verkko-rrd-interfaces: script to setup symlinks for pvl.verkko.rrd from collectd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
174 |
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
|
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 |
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
|
177 |
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
|
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 |
sys.exit(main(sys.argv)) |