author | Tero Marttila <terom@paivola.fi> |
Sun, 20 Jan 2013 18:51:51 +0200 | |
changeset 154 | 11df86fd2d67 |
parent 153 | 8930f54b59b4 |
child 155 | 9f2967ba81ef |
permissions | -rw-r--r-- |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
1 |
# encoding: utf-8 |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
2 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
3 |
http://verkko.paivola.fi/rrd |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
4 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
5 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
6 |
import pvl.web.application as web |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
7 |
from pvl.web import urls |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
8 |
from pvl.web.html import tags as html |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
9 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
10 |
import pvl.rrd |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
11 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
12 |
import logging; log = logging.getLogger('pvl.verkko.rrd') |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
13 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
14 |
# Model |
154 | 15 |
import os, os.path, errno |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
16 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
17 |
class RRDDatabase (object) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
18 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
19 |
A filesystem directory containing .rrd files. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
20 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
21 |
|
154 | 22 |
def __init__ (self, path, cache=None) : |
153
8930f54b59b4
pvl.verkko.rrd: --rrd is required; fix overview rrd name layout
Tero Marttila <terom@paivola.fi>
parents:
152
diff
changeset
|
23 |
if not path : |
8930f54b59b4
pvl.verkko.rrd: --rrd is required; fix overview rrd name layout
Tero Marttila <terom@paivola.fi>
parents:
152
diff
changeset
|
24 |
raise ValueError("RRDDatabase: no path given") |
8930f54b59b4
pvl.verkko.rrd: --rrd is required; fix overview rrd name layout
Tero Marttila <terom@paivola.fi>
parents:
152
diff
changeset
|
25 |
|
154 | 26 |
log.info("%s: cache=%s", path, cache) |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
27 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
28 |
self._path = path |
154 | 29 |
self._cache = cache |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
30 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
31 |
def path (self, node=None, *subnodes) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
32 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
33 |
Lookup and full filesystem path to the given relative RRD/dir path. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
34 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
35 |
Raises ValueError if invalid path. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
36 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
37 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
38 |
if node : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
39 |
# relative dir (no leading slash) -> absolute path |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
40 |
path = os.path.normpath(os.path.join(self._path, node, *subnodes)) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
41 |
else : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
42 |
path = self._path |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
43 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
44 |
log.debug("%s: %s -> %s", self, node, path) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
45 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
46 |
# check inside base path |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
47 |
if not path.startswith(self._path) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
48 |
# mask |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
49 |
raise ValueError("%s: Invalid path: %s" % (self, node)) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
50 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
51 |
# ok |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
52 |
return path |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
53 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
54 |
def tree (self, node=None) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
55 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
56 |
Lookup and return RRDTree for given node, or root tree. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
57 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
58 |
Raises ValueError if invalid path, or no such tree. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
59 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
60 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
61 |
# lookup fs path |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
62 |
path = self.path(node) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
63 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
64 |
# found? |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
65 |
if not os.path.isdir(path) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
66 |
raise ValueError("%s: Invalid tree: %s: %s" % (self, node, path)) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
67 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
68 |
return node |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
69 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
70 |
def rrd (self, node, tree=None) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
71 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
72 |
Lookup and return RRD for given node. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
73 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
74 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
75 |
if tree : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
76 |
node = os.path.join(tree, node) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
77 |
|
154 | 78 |
path = self.path(node) + '.rrd' |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
79 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
80 |
if not os.path.isfile(path) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
81 |
raise ValueError("%: Invalid rrd: %s: %s" % (self, node, path)) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
82 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
83 |
return node |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
84 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
85 |
def list (self, tree) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
86 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
87 |
List (trees, rrds) under given tree. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
88 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
89 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
90 |
dirs = [] |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
91 |
rrds = [] |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
92 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
93 |
for name in os.listdir(self.path(tree)) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
94 |
if name.startswith('.') : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
95 |
continue |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
96 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
97 |
log.debug("%s: %s: %s", self, tree, name) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
98 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
99 |
path = self.path(tree, name) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
100 |
basename, extname = os.path.splitext(name) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
101 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
102 |
if os.path.isdir(path) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
103 |
dirs.append(name) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
104 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
105 |
elif extname == '.rrd' : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
106 |
# without the .rrd |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
107 |
rrds.append(basename) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
108 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
109 |
# return sorted lists |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
110 |
return sorted(dirs), sorted(rrds) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
111 |
|
154 | 112 |
def _stat (self, path) : |
113 |
""" |
|
114 |
os.stat or None. |
|
115 |
""" |
|
116 |
||
117 |
try : |
|
118 |
return os.stat(path) |
|
119 |
||
120 |
except OSError as ex : |
|
121 |
if ex.errno == errno.ENOENT : |
|
122 |
return None |
|
123 |
else : |
|
124 |
raise |
|
125 |
||
126 |
def cache (self, source, *key) : |
|
127 |
""" |
|
128 |
Lookup given key from cache, returning (hit, file). |
|
129 |
""" |
|
130 |
||
131 |
# output |
|
132 |
if not self._cache : |
|
133 |
return None, None |
|
134 |
||
135 |
# cache path |
|
136 |
path = os.path.join(self._cache, *key) |
|
137 |
||
138 |
# create |
|
139 |
dir = os.path.dirname(path) |
|
140 |
if not os.path.isdir(dir) : |
|
141 |
log.warn("makedirs %s", dir) |
|
142 |
os.makedirs(dir) |
|
143 |
||
144 |
# stats's |
|
145 |
src = self._stat(source) |
|
146 |
dst = self._stat(path) |
|
147 |
||
148 |
if not dst: |
|
149 |
log.debug("%s: %s: %s: miss", self._cache, source, path) |
|
150 |
return None, path |
|
151 |
||
152 |
elif dst and src.st_mtime < dst.st_mtime : |
|
153 |
log.debug("%s: %s: %s: hit", self._cache, source, path) |
|
154 |
||
155 |
return True, path |
|
156 |
||
157 |
else : |
|
158 |
log.debug("%s: %s: %s: update", self._cache, source, path) |
|
159 |
return False, path |
|
160 |
||
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
161 |
def graph (self, rrd, style, interval) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
162 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
163 |
Graph given rrd using given style/interval, returning the opened png data file. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
164 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
165 |
|
154 | 166 |
title = str(rrd) # " / ".join(rrd.split('/')) |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
167 |
|
154 | 168 |
path = self.path(rrd) + '.rrd' |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
169 |
|
154 | 170 |
cached, out = self.cache(path, style, interval, rrd + '.png') |
171 |
||
172 |
log.debug("%s: %s: %s", self, rrd, out) |
|
173 |
||
174 |
if cached : |
|
175 |
# from cache |
|
176 |
outfile = open(out) |
|
177 |
||
178 |
else : |
|
179 |
# to cache |
|
180 |
# XXX: lookup graph style.. |
|
181 |
# XXX: collectd |
|
182 |
dimensions, lines, outfile = pvl.rrd.graph.collectd_ifoctets(style, interval, title, path, out) |
|
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
183 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
184 |
return outfile |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
185 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
186 |
def __str__ (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
187 |
return str(self._path) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
188 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
189 |
# View/Controller |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
190 |
class Handler (web.Handler) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
191 |
CSS = ( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
192 |
"/static/rrd.css", |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
193 |
) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
194 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
195 |
def title (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
196 |
return u"Päivölä Network - Network RRD Traffic Graphs" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
197 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
198 |
def breadcrumb (self, _tree, target=None) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
199 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
200 |
Yield (title, url) navigation breadcrumbs |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
201 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
202 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
203 |
yield '/', self.url(Index) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
204 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
205 |
if _tree : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
206 |
tree = '' |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
207 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
208 |
for part in _tree.split('/') : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
209 |
tree = os.path.join(tree, part) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
210 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
211 |
yield part, self.url(Index, tree=tree) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
212 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
213 |
if target : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
214 |
# Target |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
215 |
yield target, self.url(Target, tree=tree, target=self.target) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
216 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
217 |
def render_breadcrumb (self, tree, target=None) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
218 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
219 |
Render breadcrumb -> html.div |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
220 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
221 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
222 |
return html.div(id='breadcrumb')(html(" » ".join( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
223 |
str(html.a(href=url)(node)) for node, url in self.breadcrumb(tree, target))) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
224 |
) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
225 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
226 |
class Index (Handler) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
227 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
228 |
Browse trees, show overview graphs for targets. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
229 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
230 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
231 |
def _title (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
232 |
if self.tree : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
233 |
return html(" » ".join(self.tree.split('/'))) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
234 |
else : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
235 |
return "" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
236 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
237 |
def url_tree (self, node) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
238 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
239 |
Return url for given sub-node. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
240 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
241 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
242 |
if self.tree : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
243 |
path = os.path.join(self.tree, node) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
244 |
else : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
245 |
path = node |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
246 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
247 |
return self.url(tree=path) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
248 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
249 |
def process (self, tree=None) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
250 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
251 |
Lookup path -> self.tree. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
252 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
253 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
254 |
if tree : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
255 |
try : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
256 |
# XXX: unicode? |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
257 |
self.tree = self.app.rrd.tree(tree) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
258 |
except ValueError as ex : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
259 |
# mask |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
260 |
raise web.NotFound(tree) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
261 |
else : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
262 |
# root |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
263 |
self.tree = self.app.rrd.tree() |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
264 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
265 |
def render_list (self, items) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
266 |
return ( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
267 |
html.li(class_=('odd' if idx % 2 else 'even'))(item) for idx, item in enumerate(items) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
268 |
) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
269 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
270 |
def render_rrd (self, rrd) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
271 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
272 |
Render overview link/image for given rrd. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
273 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
274 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
275 |
target_url = self.url(Target, tree=self.tree, target=rrd) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
276 |
graph_url = self.url(Graph, tree=self.tree, target=rrd) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
277 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
278 |
return html.a(href=target_url)( |
153
8930f54b59b4
pvl.verkko.rrd: --rrd is required; fix overview rrd name layout
Tero Marttila <terom@paivola.fi>
parents:
152
diff
changeset
|
279 |
html.h3(rrd), |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
280 |
html.img(src=graph_url), |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
281 |
) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
282 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
283 |
def render (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
284 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
285 |
Render list of trees/rrds. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
286 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
287 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
288 |
trees, rrds = self.app.rrd.list(self.tree) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
289 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
290 |
return self.render_breadcrumb(self.tree), html.div(id='overview')( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
291 |
html.ul(id='tree-list')( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
292 |
self.render_list( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
293 |
html.a(href=self.url_tree(subtree))(subtree) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
294 |
for subtree in trees) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
295 |
) if trees else None, |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
296 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
297 |
html.hr() if trees and rrds else None, |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
298 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
299 |
html.ul(id='rrd-list')( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
300 |
self.render_list( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
301 |
self.render_rrd(rrd) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
302 |
for rrd in rrds) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
303 |
) if rrds else None, |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
304 |
) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
305 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
306 |
class Target (Handler) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
307 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
308 |
Show graphs for RRD file. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
309 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
310 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
311 |
def _title (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
312 |
return html(" » ".join(self.rrd.split('/'))) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
313 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
314 |
def process (self, target, tree=None) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
315 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
316 |
Lookup tree/target -> self.target |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
317 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
318 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
319 |
try : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
320 |
self.tree = self.app.rrd.tree(tree) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
321 |
self.rrd = self.app.rrd.rrd(target, self.tree) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
322 |
self.target = target |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
323 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
324 |
except ValueError as ex : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
325 |
raise web.NotFound(tree, target) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
326 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
327 |
def render_interval (self, interval, style='detail') : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
328 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
329 |
Render detail link/image. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
330 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
331 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
332 |
graph_url = self.url(Graph, tree=self.tree, target=self.target, style=style, interval=interval) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
333 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
334 |
return ( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
335 |
html.h2(interval.title()), |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
336 |
html.img(src=graph_url) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
337 |
) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
338 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
339 |
INTERVALS = ('daily', 'weekly', 'yearly') |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
340 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
341 |
def render (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
342 |
return self.render_breadcrumb(self.tree, self.target), html.div(id='detail')( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
343 |
self.render_interval(interval) for interval in self.INTERVALS |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
344 |
) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
345 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
346 |
from pvl.invoke import merge # XXX |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
347 |
import werkzeug # wrap_file |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
348 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
349 |
class Graph (Handler) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
350 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
351 |
Render graph for RRD. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
352 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
353 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
354 |
ARGS = { 'interval': 'daily', 'style': 'overview' } |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
355 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
356 |
def process (self, tree, target, style, interval) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
357 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
358 |
Return Graph for given options. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
359 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
360 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
361 |
try : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
362 |
self.tree = self.app.rrd.tree(tree) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
363 |
self.rrd = self.app.rrd.rrd(target, self.tree) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
364 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
365 |
except ValueError as ex : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
366 |
raise web.NotFound(tree, target) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
367 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
368 |
self.style = style |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
369 |
self.interval = interval |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
370 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
371 |
def render_png (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
372 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
373 |
Return PNG data as a file-like object for our graph. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
374 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
375 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
376 |
return self.app.rrd.graph(self.rrd, self.style, self.interval) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
377 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
378 |
def respond (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
379 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
380 |
Return Response for our request. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
381 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
382 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
383 |
# process params+args -> self.graph |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
384 |
process = merge(self.params, dict((arg, self.request.args.get(arg, default)) for arg, default in self.ARGS.iteritems())) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
385 |
response = self.process(**process) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
386 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
387 |
if response : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
388 |
return response |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
389 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
390 |
# PNG output |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
391 |
render = self.render_png() |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
392 |
file = werkzeug.wrap_file(self.request.environ, render) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
393 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
394 |
# respond with file wrapper |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
395 |
return web.Response(file, mimetype='image/png', direct_passthrough=True) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
396 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
397 |
# WSGI |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
398 |
class Application (web.Application) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
399 |
urls = urls.Map(( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
400 |
urls.rule('/', Index), |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
401 |
urls.rule('/<target>', Target), |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
402 |
urls.rule('/<path:tree>/', Index), |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
403 |
urls.rule('/<path:tree>/<target>', Target), |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
404 |
urls.rule('/<path:tree>/<target>.png', Graph), |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
405 |
)) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
406 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
407 |
def __init__ (self, rrd) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
408 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
409 |
Initialize app with given RRDDatabase |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
410 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
411 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
412 |
self.rrd = rrd |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
413 |