| author | Tero Marttila <terom@paivola.fi> |
| Mon, 16 Dec 2013 20:49:14 +0200 | |
| changeset 281 | b236f689ba22 |
| 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)) |