fix node.site --> node.site_deployment.site
[plstackapi.git] / planetstack / core / dashboard / views / view_common.py
index 4efb8c2..bccd7d2 100644 (file)
@@ -4,7 +4,7 @@ from django.views.generic import TemplateView, View
 import datetime
 from pprint import pprint
 import json
-from syndicate.models import *
+from syndicate_storage.models import *
 from core.models import *
 from hpc.models import ContentProvider
 from operator import attrgetter
@@ -61,21 +61,26 @@ def getSliceInfo(user):
     userSliceInfo = []
     for entry in slicePrivs:
 
-        slicename = Slice.objects.get(id=entry.slice.id).name
-        slice = Slice.objects.get(name=Slice.objects.get(id=entry.slice.id).name)
+        slice = Slice.objects.filter(id=entry.slice.id)
+        if not slice:
+            # the privilege is to a slice that doesn't exist
+            print "data model consistency problem, slice %s doesn't exist" % entry.slice.id
+            continue
+        slice = slice[0]
+        slicename = slice.name
         sliverList=Sliver.objects.all()
         sites_used = {}
         for sliver in slice.slivers.all():
              #sites_used['deploymentSites'] = sliver.node.deployment.name
              # sites_used[sliver.image.name] = sliver.image.name
-             sites_used[sliver.node.site.name] = sliver.numberCores
+             sites_used[sliver.node.site_deployment.site.name] = 1 #sliver.numberCores
         sliceid = Slice.objects.get(id=entry.slice.id).id
         try:
             sliverList = Sliver.objects.filter(slice=entry.slice.id)
             siteList = {}
             for x in sliverList:
-               if x.node.site not in siteList:
-                  siteList[x.node.site] = 1
+               if x.node.site_deployment.site not in siteList:
+                  siteList[x.node.site_deployment.site] = 1
             slivercount = len(sliverList)
             sitecount = len(siteList)
         except:
@@ -141,12 +146,18 @@ def getCDNOperatorData(randomizeData = False, wait=True):
         cpu=float(max_cpu)/100.0
         hotness = max(0.0, ((cpu*RED_LOAD) - BLUE_LOAD)/(RED_LOAD-BLUE_LOAD))
 
+        try:
+           lat=float(site.location.latitude)
+           long=float(site.location.longitude)
+        except:
+           lat=0
+           long=0
+
         # format it to what that CDN Operations View is expecting
-        new_row = {"lat": float(site.location.longitude),
-               "long": float(site.location.longitude),
-               "lat": float(site.location.latitude),
+        new_row = {"lat": lat,
+               "long": long,
                "health": 0,
-               "numNodes": int(site.nodes.count()),
+               #"numNodes": int(site.nodes.count()),
                "activeHPCSlivers": int(stats_row.get("count_hostname", 0)),     # measured number of slivers, from bigquery statistics
                "numHPCSlivers": allocated_slivers,                              # allocated number of slivers, from data model
                "siteUrl": str(site.site_url),
@@ -169,7 +180,7 @@ def getCDNOperatorData(randomizeData = False, wait=True):
 
     return new_rows
 
-def slice_increase_slivers(user, user_ip, siteList, slice, count, noAct=False):
+def slice_increase_slivers(user, user_ip, siteList, slice, image, count, noAct=False):
     sitesChanged = {}
 
     # let's compute how many slivers are in use in each node of each site
@@ -196,10 +207,9 @@ def slice_increase_slivers(user, user_ip, siteList, slice, count, noAct=False):
             sliver = Sliver(name=node.name,
                         slice=slice,
                         node=node,
-                        image = Image.objects.all()[0],
+                        image = image,
                         creator = User.objects.get(email=user),
-                        deploymentNetwork=node.deployment,
-                        numberCores =1 )
+                        deploymentNetwork=node.deployment)
             sliver.save()
 
         node.sliverCount = node.sliverCount + 1
@@ -212,24 +222,18 @@ def slice_increase_slivers(user, user_ip, siteList, slice, count, noAct=False):
 
 def slice_decrease_slivers(user, siteList, slice, count, noAct=False):
     sitesChanged = {}
-    sliverList ={}
     if siteList:
         siteNames = [site.name for site in siteList]
     else:
         siteNames = None
 
-    for sliver in slice.slivers.all():
-        if(not siteNames) or (sliver.node.site.name in siteNames):\r
-                node = sliver.node\r
-                sliverList[sliver.name]=node.name
-
-    for key in sliverList:
+    for sliver in list(slice.slivers.all()):
         if count>0:
-            sliver = Sliver.objects.filter(name=key)[0]\r
-            sliver.delete()\r
-            print "deleting sliver",sliverList[key],"at node",sliver.node.name\r
-            count=count-1\r
-            sitesChanged[sliver.node.site.name] = sitesChanged.get(sliver.node.site.name,0) - 1\r
+            if(not siteNames) or (sliver.node.site.name in siteNames):
+                sliver.delete()\r
+                print "deleting sliver",sliver.name,"at node",sliver.node.name\r
+                count=count-1\r
+                sitesChanged[sliver.node.site.name] = sitesChanged.get(sliver.node.site.name,0) - 1\r
 \r
     return sitesChanged