]> git.ipfire.org Git - people/ms/westferry.git/commitdiff
analytics: Add network graphs
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 12 Dec 2015 22:39:58 +0000 (23:39 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 12 Dec 2015 22:39:58 +0000 (23:39 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/westferry/handlers/analytics.py

index 6779c7e14128d2cde43faed79ea67fca54ae23de..488b8d7b134a2023317187810c1d525fa10a9e64 100644 (file)
@@ -40,6 +40,9 @@ class AnalyticsBaseHandler(base.BaseHandler):
                m.add_handler(AnalyticsOverviewHandler)
                m.add_divider()
 
+               # Network
+               m.add_handler(AnalyticsNetworkOverviewHandler)
+
                # System
                m.add_handler(AnalyticsSystemOverviewHandler)
 
@@ -57,6 +60,116 @@ class AnalyticsOverviewHandler(AnalyticsBaseHandler):
                self.render("base.html")
 
 
+class AnalyticsNetworkBaseHandler(AnalyticsBaseHandler):
+       @property
+       def menu(self):
+               _ = self.locale.translate
+
+               m = ui.menu.Menu(self, _("Network"))
+
+               # Back...
+               m.add_handler(AnalyticsOverviewHandler, title=_("Back..."))
+               m.add_divider()
+
+               # Overview
+               m.add_handler(AnalyticsNetworkOverviewHandler, title=_("Overview"))
+               m.add_divider()
+
+               # Connections
+               m.add_handler(AnalyticsNetworkConnectionsOverviewHandler)
+
+               return m
+
+
+class AnalyticsNetworkOverviewHandler(AnalyticsNetworkBaseHandler):
+       url = r"/analytics/network"
+       title = N_("Network")
+
+       def get(self):
+               self.render("base.html")
+
+
+class AnalyticsNetworkConnectionsBaseHandler(AnalyticsBaseHandler):
+       @property
+       def menu(self):
+               _ = self.locale.translate
+
+               m = ui.menu.Menu(self, _("Connections"))
+
+               # Back...
+               m.add_handler(AnalyticsNetworkOverviewHandler, title=_("Back..."))
+               m.add_divider()
+
+               # Overview
+               m.add_handler(AnalyticsNetworkConnectionsOverviewHandler, title=_("Overview"))
+               m.add_divider()
+
+               # Protocol States
+               s = m.add_submenu(_("Procotol States"))
+               s.add_handler(AnalyticsNetworkConnectionsStatesTCPHandler)
+               s.add_handler(AnalyticsNetworkConnectionsStatesSCTPHandler)
+               s.add_handler(AnalyticsNetworkConnectionsStatesDCCPHandler)
+
+               return m
+
+
+class AnalyticsNetworkConnectionsOverviewHandler(AnalyticsNetworkConnectionsBaseHandler):
+       url = r"/analytics/network/connections"
+       title = N_("Connections")
+
+       def get(self):
+               _ = self.locale.translate
+
+               graphs = [
+                       ui.graphs.Graph(self, "conntrack-layer3-protocols"),
+                       ui.graphs.Graph(self, "conntrack-layer4-protocols"),
+               ]
+
+               self.render_graphs(graphs)
+
+
+class AnalyticsNetworkConnectionsStatesTCPHandler(AnalyticsNetworkConnectionsBaseHandler):
+       url = r"/analytics/network/connections/states/tcp"
+       title = N_("TCP")
+
+       def get(self):
+               _ = self.locale.translate
+
+               graphs = [
+                       ui.graphs.Graph(self, "conntrack-protocol-states", "tcp"),
+               ]
+
+               self.render_graphs(graphs)
+
+
+class AnalyticsNetworkConnectionsStatesSCTPHandler(AnalyticsNetworkConnectionsBaseHandler):
+       url = r"/analytics/network/connections/states/sctp"
+       title = N_("SCTP")
+
+       def get(self):
+               _ = self.locale.translate
+
+               graphs = [
+                       ui.graphs.Graph(self, "conntrack-protocol-states", "sctp"),
+               ]
+
+               self.render_graphs(graphs)
+
+
+class AnalyticsNetworkConnectionsStatesDCCPHandler(AnalyticsNetworkConnectionsBaseHandler):
+       url = r"/analytics/network/connections/states/dccp"
+       title = N_("DCCP")
+
+       def get(self):
+               _ = self.locale.translate
+
+               graphs = [
+                       ui.graphs.Graph(self, "conntrack-protocol-states", "dccp"),
+               ]
+
+               self.render_graphs(graphs)
+
+
 class AnalyticsSystemBaseHandler(AnalyticsBaseHandler):
        @property
        def menu(self):