get table name from config file, filter by event
authorScott Baker <smbaker@gmail.com>
Fri, 25 Apr 2014 00:02:28 +0000 (17:02 -0700)
committerScott Baker <smbaker@gmail.com>
Fri, 25 Apr 2014 00:02:28 +0000 (17:02 -0700)
planetstack/hpc_wizard/planetstack_analytics.py

index 840d247..c0f7ff5 100644 (file)
@@ -14,6 +14,7 @@ else:
     sys.path.append("/opt/planetstack")
 
 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings")
     sys.path.append("/opt/planetstack")
 
 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings")
+from django.conf import settings
 from django import db
 from django.db import connection
 from core.models import Slice, Sliver, ServiceClass, Reservation, Tag, Network, User, Node, Image, Deployment, Site, NetworkTemplate, NetworkSlice, Service
 from django import db
 from django.db import connection
 from core.models import Slice, Sliver, ServiceClass, Reservation, Tag, Network, User, Node, Image, Deployment, Site, NetworkTemplate, NetworkSlice, Service
@@ -24,7 +25,10 @@ RED_LOAD=15000000
 glo_cached_queries = {}
 
 class PlanetStackAnalytics(BigQueryAnalytics):
 glo_cached_queries = {}
 
 class PlanetStackAnalytics(BigQueryAnalytics):
-    def __init__(self, tableName="demoevents"):
+    def __init__(self, tableName=None):
+        if not tableName:
+            tableName = settings.BIGQUERY_TABLE
+
         BigQueryAnalytics.__init__(self, tableName)
 
     def service_to_sliceNames(self, serviceName):
         BigQueryAnalytics.__init__(self, tableName)
 
     def service_to_sliceNames(self, serviceName):
@@ -38,7 +42,10 @@ class PlanetStackAnalytics(BigQueryAnalytics):
 
         return [slice.name for slice in slices]
 
 
         return [slice.name for slice in slices]
 
-    def compose_query(self, slice=None, site=None, node=None, service=None, timeBucket="60", avg=[], sum=[], count=[], computed=[], val=[], groupBy=["Time"], orderBy=["Time"], tableName="demoevents", latest=False, maxAge=60*60):
+    def compose_query(self, slice=None, site=None, node=None, service=None, event="libvirt_heartbeat", timeBucket="60", avg=[], sum=[], count=[], computed=[], val=[], groupBy=["Time"], orderBy=["Time"], tableName=None, latest=False, maxAge=60*60):
+        if tableName is None:
+            tableName = self.tableName
+
         maxAge = maxAge * 1000
         tablePart = "[%s.%s@-%d--1]" % ("vicci", tableName, maxAge)
 
         maxAge = maxAge * 1000
         tablePart = "[%s.%s@-%d--1]" % ("vicci", tableName, maxAge)
 
@@ -98,6 +105,8 @@ class PlanetStackAnalytics(BigQueryAnalytics):
             where.append("%%site='%s'" % site)
         if node:
             where.append("%%hostname='%s'" % node)
             where.append("%%site='%s'" % site)
         if node:
             where.append("%%hostname='%s'" % node)
+        if event:
+            where.append("event='%s'" % event)
         if service:
             sliceNames = self.service_to_sliceNames(service)
             if sliceNames:
         if service:
             sliceNames = self.service_to_sliceNames(service)
             if sliceNames:
@@ -283,6 +292,7 @@ class PlanetStackAnalytics(BigQueryAnalytics):
         site = req.GET.get("site", None)
         node = req.GET.get("node", None)
         service = req.GET.get("service", None)
         site = req.GET.get("site", None)
         node = req.GET.get("node", None)
         service = req.GET.get("service", None)
+        event = req.GET.get("event", "libvirt_heartbeat")
 
         format = req.GET.get("format", "json_dicts")
 
 
         format = req.GET.get("format", "json_dicts")
 
@@ -301,7 +311,7 @@ class PlanetStackAnalytics(BigQueryAnalytics):
 
         cached = req.GET.get("cached", None)
 
 
         cached = req.GET.get("cached", None)
 
-        q = self.compose_query(slice, site, node, service, timeBucket, avg, sum, count, computed, [], groupBy, orderBy, maxAge=maxAge)
+        q = self.compose_query(slice, site, node, service, event, timeBucket, avg, sum, count, computed, [], groupBy, orderBy, maxAge=maxAge)
 
         print q
 
 
         print q
 
@@ -373,6 +383,8 @@ class PlanetStackAnalytics(BigQueryAnalytics):
                     filter["site"] = site
                 if node:
                     filter["hostname"] = node
                     filter["site"] = site
                 if node:
                     filter["hostname"] = node
+                if event:
+                    filter["event"] = event
 
                 result = self.postprocess_results(results, filter=filter, sum=sum, count=count, avg=avg, computed=computed, maxDeltaTime=120, groupBy=["doesnotexist"])
             else:
 
                 result = self.postprocess_results(results, filter=filter, sum=sum, count=count, avg=avg, computed=computed, maxDeltaTime=120, groupBy=["doesnotexist"])
             else:
@@ -393,7 +405,7 @@ def DoPlanetStackAnalytics(request):
     return result
 
 def main():
     return result
 
 def main():
-    bq = PlanetStackAnalytics()
+    bq = PlanetStackAnalytics(tableName="demoevents")
 
     q = bq.compose_latest_query(groupByFields=["%hostname", "event", "%slice"])
     results = bq.run_query(q)
 
     q = bq.compose_latest_query(groupByFields=["%hostname", "event", "%slice"])
     results = bq.run_query(q)