author | Tero Marttila <terom@paivola.fi> |
Sun, 22 Dec 2013 19:03:57 +0200 | |
changeset 336 | edaa5d0aa57d |
parent 201 | b97929bcef05 |
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 |
|
156
999ae3e9fdec
pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents:
155
diff
changeset
|
6 |
from pvl import web |
152
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 |
|
198
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
10 |
import pvl.web.response |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
11 |
import pvl.rrd |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
12 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
13 |
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
|
14 |
|
198
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
15 |
# errors |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
16 |
import os.path |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
17 |
|
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
18 |
class RRDNotFound (pvl.web.response.NotFound) : |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
19 |
""" |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
20 |
404 Not Found for tree/rrd. |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
21 |
""" |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
22 |
|
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
23 |
def __init__ (self, tree, rrd=None) : |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
24 |
if tree and rrd : |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
25 |
path = os.path.join(tree, rrd) |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
26 |
elif tree : |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
27 |
path = tree |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
28 |
elif rrd : |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
29 |
path = rrd |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
30 |
else : |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
31 |
path = '' |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
32 |
|
201
b97929bcef05
pvl.verkko.rrd: fixfix RRDNotFound
Tero Marttila <terom@paivola.fi>
parents:
198
diff
changeset
|
33 |
pvl.web.response.NotFound.__init__(self, path) |
198
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
34 |
|
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
35 |
# View/Controller |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
36 |
class Handler (web.Handler) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
37 |
CSS = ( |
158
3ff66d4f401c
split up static into rrd/dhcp
Tero Marttila <terom@paivola.fi>
parents:
157
diff
changeset
|
38 |
"/static/rrd/rrd.css", |
152
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 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
41 |
def title (self) : |
166
d9304aca296d
pvl.verkko.rrd: drop redundant title prefix
Tero Marttila <terom@paivola.fi>
parents:
163
diff
changeset
|
42 |
return u"Network RRD Traffic Graphs" |
152
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 |
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
|
45 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
46 |
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
|
47 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
48 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
49 |
yield '/', self.url(Index) |
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 |
if _tree : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
52 |
tree = '' |
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 |
for part in _tree.split('/') : |
156
999ae3e9fdec
pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents:
155
diff
changeset
|
55 |
tree = urls.join(tree, part) |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
56 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
57 |
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
|
58 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
59 |
if target : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
60 |
# Target |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
61 |
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
|
62 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
63 |
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
|
64 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
65 |
Render breadcrumb -> html.div |
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 |
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
|
69 |
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
|
70 |
) |
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 |
class Index (Handler) : |
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 |
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
|
75 |
""" |
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 _title (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
78 |
if self.tree : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
79 |
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
|
80 |
else : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
81 |
return "" |
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 |
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
|
84 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
85 |
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
|
86 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
87 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
88 |
if self.tree : |
156
999ae3e9fdec
pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents:
155
diff
changeset
|
89 |
path = urls.join(self.tree, node) |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
90 |
else : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
91 |
path = node |
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 |
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
|
94 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
95 |
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
|
96 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
97 |
Lookup path -> self.tree. |
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 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
100 |
if tree : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
101 |
try : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
102 |
# XXX: unicode? |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
103 |
self.tree = self.app.rrd.tree(tree) |
156
999ae3e9fdec
pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents:
155
diff
changeset
|
104 |
|
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
105 |
except ValueError as ex : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
106 |
# mask |
198
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
107 |
raise RRDNotFound(tree) |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
108 |
else : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
109 |
# root |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
110 |
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
|
111 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
112 |
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
|
113 |
return ( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
114 |
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
|
115 |
) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
116 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
117 |
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
|
118 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
119 |
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
|
120 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
121 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
122 |
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
|
123 |
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
|
124 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
125 |
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
|
126 |
html.h3(rrd), |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
127 |
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
|
128 |
) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
129 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
130 |
def render (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
131 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
132 |
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
|
133 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
134 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
135 |
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
|
136 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
137 |
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
|
138 |
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
|
139 |
self.render_list( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
140 |
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
|
141 |
for subtree in trees) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
142 |
) if trees else None, |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
143 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
144 |
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
|
145 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
146 |
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
|
147 |
self.render_list( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
148 |
self.render_rrd(rrd) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
149 |
for rrd in rrds) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
150 |
) if rrds else None, |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
151 |
) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
152 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
153 |
class Target (Handler) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
154 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
155 |
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
|
156 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
157 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
158 |
def _title (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
159 |
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
|
160 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
161 |
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
|
162 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
163 |
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
|
164 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
165 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
166 |
try : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
167 |
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
|
168 |
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
|
169 |
self.target = target |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
170 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
171 |
except ValueError as ex : |
198
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
172 |
raise RRDNotFound(tree, target) |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
173 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
174 |
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
|
175 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
176 |
Render detail link/image. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
177 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
178 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
179 |
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
|
180 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
181 |
return ( |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
182 |
html.h2(interval.title()), |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
183 |
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
|
184 |
) |
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 |
INTERVALS = ('daily', 'weekly', 'yearly') |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
187 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
188 |
def render (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
189 |
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
|
190 |
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
|
191 |
) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
192 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
193 |
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
|
194 |
import werkzeug # wrap_file |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
195 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
196 |
class Graph (Handler) : |
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 |
Render graph for RRD. |
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 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
201 |
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
|
202 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
203 |
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
|
204 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
205 |
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
|
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 |
try : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
209 |
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
|
210 |
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
|
211 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
212 |
except ValueError as ex : |
198
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
213 |
raise RRDNotFound(tree, target) |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
214 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
215 |
self.style = style |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
216 |
self.interval = interval |
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 |
def render_png (self) : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
219 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
220 |
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
|
221 |
""" |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
222 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
223 |
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
|
224 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
225 |
def respond (self) : |
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 Response for our request. |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
228 |
""" |
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 |
# 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
|
231 |
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
|
232 |
response = self.process(**process) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
233 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
234 |
if response : |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
235 |
return response |
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 |
# PNG output |
198
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
238 |
file = self.render_png() |
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
239 |
|
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
240 |
# respond with file wrapper |
198
f1d06158af06
pvl.verkko.rrd: use pvl.web.response for NotFound and image
Tero Marttila <terom@paivola.fi>
parents:
166
diff
changeset
|
241 |
return pvl.web.response.image(self.response_file(file), type='png') |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
242 |
|
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
243 |
# WSGI |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
244 |
class Application (web.Application) : |
156
999ae3e9fdec
pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents:
155
diff
changeset
|
245 |
# dispatch |
163
96d551b90734
pvl.verkko.rrd: fix Application(...) to super
Tero Marttila <terom@paivola.fi>
parents:
161
diff
changeset
|
246 |
URLS = urls.Map(( |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
247 |
urls.rule('/', Index), |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
248 |
urls.rule('/<target>', Target), |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
249 |
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
|
250 |
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
|
251 |
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
|
252 |
)) |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
253 |
|
163
96d551b90734
pvl.verkko.rrd: fix Application(...) to super
Tero Marttila <terom@paivola.fi>
parents:
161
diff
changeset
|
254 |
def __init__ (self, rrd, **opts) : |
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
255 |
""" |
156
999ae3e9fdec
pvl.web.rrd: split out pvl.rrd.args + pvl.rrd.rrds; bugfix
Tero Marttila <terom@paivola.fi>
parents:
155
diff
changeset
|
256 |
rrd - pvl.rrd.RRDDatabase |
152
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 |
|
163
96d551b90734
pvl.verkko.rrd: fix Application(...) to super
Tero Marttila <terom@paivola.fi>
parents:
161
diff
changeset
|
259 |
super(Application, self).__init__(**opts) |
96d551b90734
pvl.verkko.rrd: fix Application(...) to super
Tero Marttila <terom@paivola.fi>
parents:
161
diff
changeset
|
260 |
|
152
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
261 |
self.rrd = rrd |
33b98b46d8fb
pvl.verkko.rrd: reimplementation of old rrdweb using pvl.web/rrd
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
262 |