pvl/verkko/rrd.py
author Tero Marttila <terom@paivola.fi>
Sun, 22 Dec 2013 19:03:57 +0200
changeset 336 edaa5d0aa57d
parent 201 b97929bcef05
permissions -rw-r--r--
version 0.6.1: pvl.hosts forward/reverse delegation, and include= support
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(" &raquo; ".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(" &raquo; ".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(" &raquo; ".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