author | Tero Marttila <terom@paivola.fi> |
Sun, 20 Jan 2013 19:52:41 +0200 | |
changeset 155 | 9f2967ba81ef |
parent 154 | 11df86fd2d67 |
child 156 | 999ae3e9fdec |
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 |
|
155
9f2967ba81ef
pvl.rrd.graph: refactor to use Graph -> Interface -> Mrtg/CollectdIfOctets
Tero Marttila <terom@paivola.fi>
parents:
154
diff
changeset
|
22 |
def __init__ (self, graph, path, cache=None) : |
9f2967ba81ef
pvl.rrd.graph: refactor to use Graph -> Interface -> Mrtg/CollectdIfOctets
Tero Marttila <terom@paivola.fi>
parents:
154
diff
changeset
|
23 |
""" |
9f2967ba81ef
pvl.rrd.graph: refactor to use Graph -> Interface -> Mrtg/CollectdIfOctets
Tero Marttila <terom@paivola.fi>
parents:
154
diff
changeset
|
24 |
graph - pvl.rrd.graph.InterfaceGraph type |
9f2967ba81ef
pvl.rrd.graph: refactor to use Graph -> Interface -> Mrtg/CollectdIfOctets
Tero Marttila <terom@paivola.fi>
parents:
154
diff
changeset
|
25 |
path - path to rrd dirs |
9f2967ba81ef
pvl.rrd.graph: refactor to use Graph -> Interface -> Mrtg/CollectdIfOctets
Tero Marttila <terom@paivola.fi>
parents:
154
diff
changeset
|
26 |
cache - path to cache dirs |
9f2967ba81ef
pvl.rrd.graph: refactor to use Graph -> Interface -> Mrtg/CollectdIfOctets
Tero Marttila <terom@paivola.fi>
parents:
154
diff
changeset
|
27 |
""" |
9f2967ba81ef
pvl.rrd.graph: refactor to use Graph -> Interface -> Mrtg/CollectdIfOctets
Tero Marttila <terom@paivola.fi>
parents:
154
diff
changeset
|
28 |
|
153
8930f54b59b4
pvl.verkko.rrd: --rrd is required; fix overview rrd name layout
Tero Marttila <terom@paivola.fi>
parents:
152
diff
changeset
|
29 |
if not path : |
8930f54b59b4
pvl.verkko.rrd: --rrd is required; fix overview rrd name layout
Tero Marttila <terom@paivola.fi>
parents:
152
diff
changeset
|
30 |
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
|
31 |
|
155
9f2967ba81ef
pvl.rrd.graph: refactor to use Graph -> Interface -> Mrtg/CollectdIfOctets
Tero Marttila <terom@paivola.fi>
parents:
154
diff
changeset
|
32 |
log.info("%s: type=%s, cache=%s", path, graph, cache) |
9f2967ba81ef
pvl.rrd.graph: refactor to use Graph -> Interface -> Mrtg/CollectdIfOctets
Tero Marttila <terom@paivola.fi>
parents:
154
diff
changeset
|
33 |
|
9f2967ba81ef
pvl.rrd.graph: refactor to use Graph -> Interface -> Mrtg/CollectdIfOctets
Tero Marttila <terom@paivola.fi>
parents:
154
diff
changeset
|
34 |
self._graph = graph |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
35 |
self._path = path |
154 | 36 |
self._cache = cache |
152
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 |
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
|
39 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
40 |
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
|
41 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
42 |
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
|
43 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
44 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
45 |
if node : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
46 |
# 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
|
47 |
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
|
48 |
else : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
49 |
path = self._path |
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 |
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
|
52 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
53 |
# check inside base path |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
54 |
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
|
55 |
# mask |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
56 |
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
|
57 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
58 |
# ok |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
59 |
return path |
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 |
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
|
62 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
63 |
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
|
64 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
65 |
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
|
66 |
""" |
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 |
# lookup fs path |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
69 |
path = self.path(node) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
70 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
71 |
# found? |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
72 |
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
|
73 |
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
|
74 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
75 |
return node |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
76 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
77 |
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
|
78 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
79 |
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
|
80 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
81 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
82 |
if tree : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
83 |
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
|
84 |
|
154 | 85 |
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
|
86 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
87 |
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
|
88 |
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
|
89 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
90 |
return node |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
91 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
92 |
def list (self, tree) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
93 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
94 |
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
|
95 |
""" |
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 |
dirs = [] |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
98 |
rrds = [] |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
99 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
100 |
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
|
101 |
if name.startswith('.') : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
102 |
continue |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
103 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
104 |
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
|
105 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
106 |
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
|
107 |
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
|
108 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
109 |
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
|
110 |
dirs.append(name) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
111 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
112 |
elif extname == '.rrd' : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
113 |
# without the .rrd |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
114 |
rrds.append(basename) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
115 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
116 |
# return sorted lists |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
117 |
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
|
118 |
|
154 | 119 |
def _stat (self, path) : |
120 |
""" |
|
121 |
os.stat or None. |
|
122 |
""" |
|
123 |
||
124 |
try : |
|
125 |
return os.stat(path) |
|
126 |
||
127 |
except OSError as ex : |
|
128 |
if ex.errno == errno.ENOENT : |
|
129 |
return None |
|
130 |
else : |
|
131 |
raise |
|
132 |
||
133 |
def cache (self, source, *key) : |
|
134 |
""" |
|
135 |
Lookup given key from cache, returning (hit, file). |
|
136 |
""" |
|
137 |
||
138 |
# output |
|
139 |
if not self._cache : |
|
140 |
return None, None |
|
141 |
||
142 |
# cache path |
|
143 |
path = os.path.join(self._cache, *key) |
|
144 |
||
145 |
# create |
|
146 |
dir = os.path.dirname(path) |
|
147 |
if not os.path.isdir(dir) : |
|
148 |
log.warn("makedirs %s", dir) |
|
149 |
os.makedirs(dir) |
|
150 |
||
151 |
# stats's |
|
152 |
src = self._stat(source) |
|
153 |
dst = self._stat(path) |
|
154 |
||
155 |
if not dst: |
|
156 |
log.debug("%s: %s: %s: miss", self._cache, source, path) |
|
157 |
return None, path |
|
158 |
||
159 |
elif dst and src.st_mtime < dst.st_mtime : |
|
160 |
log.debug("%s: %s: %s: hit", self._cache, source, path) |
|
161 |
||
162 |
return True, path |
|
163 |
||
164 |
else : |
|
165 |
log.debug("%s: %s: %s: update", self._cache, source, path) |
|
166 |
return False, path |
|
167 |
||
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
168 |
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
|
169 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
170 |
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
|
171 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
172 |
|
154 | 173 |
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
|
174 |
|
154 | 175 |
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
|
176 |
|
154 | 177 |
cached, out = self.cache(path, style, interval, rrd + '.png') |
178 |
||
179 |
log.debug("%s: %s: %s", self, rrd, out) |
|
180 |
||
181 |
if cached : |
|
182 |
# from cache |
|
183 |
outfile = open(out) |
|
184 |
||
185 |
else : |
|
186 |
# to cache |
|
155
9f2967ba81ef
pvl.rrd.graph: refactor to use Graph -> Interface -> Mrtg/CollectdIfOctets
Tero Marttila <terom@paivola.fi>
parents:
154
diff
changeset
|
187 |
dimensions, lines, outfile = self._graph.build(title, path, style, interval).graph(out) |
152
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 |
return outfile |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
190 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
191 |
def __str__ (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
192 |
return str(self._path) |
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 |
# View/Controller |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
195 |
class Handler (web.Handler) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
196 |
CSS = ( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
197 |
"/static/rrd.css", |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
198 |
) |
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 |
def title (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
201 |
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
|
202 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
203 |
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
|
204 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
205 |
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
|
206 |
""" |
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 |
yield '/', self.url(Index) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
209 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
210 |
if _tree : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
211 |
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 |
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
|
214 |
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
|
215 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
216 |
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
|
217 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
218 |
if target : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
219 |
# Target |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
220 |
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
|
221 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
222 |
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
|
223 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
224 |
Render breadcrumb -> html.div |
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 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
227 |
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
|
228 |
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
|
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 |
class Index (Handler) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
232 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
233 |
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
|
234 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
235 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
236 |
def _title (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
237 |
if self.tree : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
238 |
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
|
239 |
else : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
240 |
return "" |
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 |
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
|
243 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
244 |
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
|
245 |
""" |
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 |
if self.tree : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
248 |
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
|
249 |
else : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
250 |
path = node |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
251 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
252 |
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
|
253 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
254 |
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
|
255 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
256 |
Lookup path -> self.tree. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
257 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
258 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
259 |
if tree : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
260 |
try : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
261 |
# XXX: unicode? |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
262 |
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
|
263 |
except ValueError as ex : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
264 |
# mask |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
265 |
raise web.NotFound(tree) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
266 |
else : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
267 |
# root |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
268 |
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
|
269 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
270 |
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
|
271 |
return ( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
272 |
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
|
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 |
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
|
276 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
277 |
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
|
278 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
279 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
280 |
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
|
281 |
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
|
282 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
283 |
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
|
284 |
html.h3(rrd), |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
285 |
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
|
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 |
def render (self) : |
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 |
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
|
291 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
292 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
293 |
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
|
294 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
295 |
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
|
296 |
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
|
297 |
self.render_list( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
298 |
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
|
299 |
for subtree in trees) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
300 |
) if trees else None, |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
301 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
302 |
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
|
303 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
304 |
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
|
305 |
self.render_list( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
306 |
self.render_rrd(rrd) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
307 |
for rrd in rrds) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
308 |
) if rrds else None, |
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 |
class Target (Handler) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
312 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
313 |
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
|
314 |
""" |
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 |
def _title (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
317 |
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
|
318 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
319 |
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
|
320 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
321 |
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
|
322 |
""" |
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 |
try : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
325 |
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
|
326 |
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
|
327 |
self.target = target |
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 |
except ValueError as ex : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
330 |
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
|
331 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
332 |
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
|
333 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
334 |
Render detail link/image. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
335 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
336 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
337 |
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
|
338 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
339 |
return ( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
340 |
html.h2(interval.title()), |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
341 |
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
|
342 |
) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
343 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
344 |
INTERVALS = ('daily', 'weekly', 'yearly') |
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 |
def render (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
347 |
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
|
348 |
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
|
349 |
) |
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 |
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
|
352 |
import werkzeug # wrap_file |
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 |
class Graph (Handler) : |
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 |
Render graph for RRD. |
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 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
359 |
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
|
360 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
361 |
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
|
362 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
363 |
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
|
364 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
365 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
366 |
try : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
367 |
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
|
368 |
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
|
369 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
370 |
except ValueError as ex : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
371 |
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
|
372 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
373 |
self.style = style |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
374 |
self.interval = interval |
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 |
def render_png (self) : |
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 |
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
|
379 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
380 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
381 |
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
|
382 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
383 |
def respond (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
384 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
385 |
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
|
386 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
387 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
388 |
# 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
|
389 |
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
|
390 |
response = self.process(**process) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
391 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
392 |
if response : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
393 |
return response |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
394 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
395 |
# PNG output |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
396 |
render = self.render_png() |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
397 |
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
|
398 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
399 |
# respond with file wrapper |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
400 |
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
|
401 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
402 |
# WSGI |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
403 |
class Application (web.Application) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
404 |
urls = urls.Map(( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
405 |
urls.rule('/', Index), |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
406 |
urls.rule('/<target>', Target), |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
407 |
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
|
408 |
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
|
409 |
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
|
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 |
def __init__ (self, rrd) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
413 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
414 |
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
|
415 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
416 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
417 |
self.rrd = rrd |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
418 |