Added in ajax support for refreshing hpcdashboard view based on polling - without having to redraw/refresh page.
diff --git a/planetstack/core/plus/views.py b/planetstack/core/plus/views.py
index b49e3a3..653ee95 100644
--- a/planetstack/core/plus/views.py
+++ b/planetstack/core/plus/views.py
@@ -1,177 +1,196 @@
#views.py
-from django.views.generic import TemplateView
+from django.views.generic import TemplateView, View
+import datetime
+import json
from core.models import Slice,SliceRole,SlicePrivilege,Site,Reservation
+from django.http import HttpResponse
+
class DashboardWelcomeView(TemplateView):
template_name = 'admin/dashboard/welcome.html'
def get(self, request, *args, **kwargs):
context = self.get_context_data(**kwargs)
- sliceList = Slice.objects.all()
try:
site = Site.objects.filter(id=request.user.site.id)
except:
site = Site.objects.filter(name="Princeton")
context['site'] = site[0]
- slicePrivs = SlicePrivilege.objects.filter(user=request.user)
- userSliceInfo = []
- for entry in slicePrivs:
-
- try:
- reservationList = Reservation.objects.filter(slice=entry.slice)
- reservations = (True,reservationList)
-
- except:
- reservations = None
-
- userSliceInfo.append({'slice': Slice.objects.get(id=entry.slice.id),
- 'role': SliceRole.objects.get(id=entry.role.id).role,
- 'reservations': reservations})
-
- context['userSliceInfo'] = userSliceInfo
- context['cdnData'] = self.getCDNOperatorData();
+ context['userSliceInfo'] = getSliceInfo(request, context)
+ context['cdnData'] = getCDNOperatorData();
return self.render_to_response(context=context)
- def getCDNOperatorData(self):
- cdnData = {
- "Arizona": {
- "lat": 32.2333,
- "long": -110.94799999999998,
- "health": 0,
- "numNodes": 15,
- "numHPCSlivers": 2,
- "siteUrl": "http://www.cs.arizona.edu/"
- },
- "I2 Singapore": {
- "lat": 1.33544,
- "long": 103.88999999999999,
- "health": 0,
- "numNodes": 15,
- "numHPCSlivers": 5,
- "siteUrl": "http://www.internet2.edu/"
- },
- "ON.Lab": {
- "lat": 37.452955,
- "long": -122.18176599999998,
- "health": 0,
- "numNodes": 45,
- "numHPCSlivers": 12,
- "siteUrl": "http://www.onlab.us/"
- },
- "I2 Washington DC": {
- "lat": 38.009,
- "long": -77.00029999999998,
- "health": 0,
- "numNodes": 50,
- "numHPCSlivers": 7,
- "siteUrl": "http://www.internet2.edu/"
- },
- "I2 Seattle": {
- "lat": 47.6531,
- "long": -122.31299999999999,
- "health": 0,
- "numNodes": 100,
- "numHPCSlivers": 10,
- "siteUrl": "http://www.internet2.edu/"
- },
- "I2 Salt Lake City": {
- "lat": 40.7659,
- "long": -111.844,
- "health": 0,
- "numNodes": 35,
- "numHPCSlivers": 10,
- "siteUrl": "http://www.internet2.edu/"
- },
- "I2 New York": {
- "lat": 40.72,
- "long": -73.99000000000001,
- "health": 0,
- "numNodes": 25,
- "numHPCSlivers": 4,
- "siteUrl": "http://www.internet2.edu/"
- },
- "I2 Los Angeles": {
- "lat": 33.2505,
- "long": -117.50299999999999,
- "health": 0,
- "numNodes": 20,
- "numHPCSlivers": 10,
- "siteUrl": "http://www.internet2.edu/"
- },
- "I2 Kansas City": {
- "lat": 39.0012,
- "long": -94.00630000000001,
- "health": 0,
- "numNodes": 17,
- "numHPCSlivers": 8,
- "siteUrl": "http://www.internet2.edu/"
- },
- "I2 Houston": {
- "lat": 29.0077,
- "long": -95.00369999999998,
- "health": 0,
- "numNodes": 15,
- "numHPCSlivers": 10,
- "siteUrl": "http://www.internet2.edu/"
- },
- "I2 Chicago": {
- "lat": 41.0085,
- "long": -87.00650000000002,
- "health": 0,
- "numNodes": 15,
- "numHPCSlivers": 10,
- "siteUrl": "http://www.internet2.edu/"
- },
- "I2 Atlanta": {
- "lat": 33.0075,
- "long": -84.00380000000001,
- "health": 0,
- "numNodes": 15,
- "numHPCSlivers": 10,
- "siteUrl": "http://www.internet2.edu/"
- },
- "MaxPlanck": {
- "lat": 49.14,
- "long": 6.588999999999942,
- "health": 0,
- "numNodes": 15,
- "numHPCSlivers": 10,
- "siteUrl": "http://www.mpi-sws.mpg.de/"
- },
- "GeorgiaTech": {
- "lat": 33.7772,
- "long": -84.39760000000001,
- "health": 0,
- "numNodes": 15,
- "numHPCSlivers": 10,
- "siteUrl": "http://www.gatech.edu/"
- },
- "Princeton": {
- "lat": 40.3502,
- "long": -74.6524,
- "health": 0,
- "numNodes": 15,
- "numHPCSlivers": 10,
- "siteUrl": "http://princeton.edu/"
- },
- "Washington": {
- "lat": 47.6531,
- "long": -122.31299999999999,
- "health": 0,
- "numNodes": 15,
- "numHPCSlivers": 10,
- "siteUrl": "https://www.washington.edu/"
- },
- "Stanford": {
- "lat": 37.4294,
- "long": -122.17200000000003,
- "health": 0,
- "numNodes": 15,
- "numHPCSlivers": 10,
- "siteUrl": "http://www.stanford.edu/"
- },
- }
- return cdnData
+def getSliceInfo(request, context):
+ sliceList = Slice.objects.all()
+ slicePrivs = SlicePrivilege.objects.filter(user=request.user)
+ userSliceInfo = []
+ for entry in slicePrivs:
+ try:
+ reservationList = Reservation.objects.filter(slice=entry.slice)
+ reservations = (True,reservationList)
+
+ except:
+ reservations = None
+
+ userSliceInfo.append({'slice': Slice.objects.get(id=entry.slice.id),
+ 'role': SliceRole.objects.get(id=entry.role.id).role,
+ 'reservations': reservations})
+ return userSliceInfo
+
+
+def getCDNOperatorData(randomizeData = False):
+ cdnData = {
+ "Arizona": {
+ "lat": 32.2333,
+ "long": -110.94799999999998,
+ "health": 0,
+ "numNodes": 15,
+ "numHPCSlivers": 2,
+ "siteUrl": "http://www.cs.arizona.edu/"
+ },
+ "I2 Singapore": {
+ "lat": 1.33544,
+ "long": 103.88999999999999,
+ "health": 0,
+ "numNodes": 15,
+ "numHPCSlivers": 5,
+ "siteUrl": "http://www.internet2.edu/"
+ },
+ "ON.Lab": {
+ "lat": 37.452955,
+ "long": -122.18176599999998,
+ "health": 0,
+ "numNodes": 45,
+ "numHPCSlivers": 12,
+ "siteUrl": "http://www.onlab.us/"
+ },
+ "I2 Washington DC": {
+ "lat": 38.009,
+ "long": -77.00029999999998,
+ "health": 0,
+ "numNodes": 50,
+ "numHPCSlivers": 7,
+ "siteUrl": "http://www.internet2.edu/"
+ },
+ "I2 Seattle": {
+ "lat": 47.6531,
+ "long": -122.31299999999999,
+ "health": 0,
+ "numNodes": 100,
+ "numHPCSlivers": 10,
+ "siteUrl": "http://www.internet2.edu/"
+ },
+ "I2 Salt Lake City": {
+ "lat": 40.7659,
+ "long": -111.844,
+ "health": 0,
+ "numNodes": 35,
+ "numHPCSlivers": 10,
+ "siteUrl": "http://www.internet2.edu/"
+ },
+ "I2 New York": {
+ "lat": 40.72,
+ "long": -73.99000000000001,
+ "health": 0,
+ "numNodes": 25,
+ "numHPCSlivers": 4,
+ "siteUrl": "http://www.internet2.edu/"
+ },
+ "I2 Los Angeles": {
+ "lat": 33.2505,
+ "long": -117.50299999999999,
+ "health": 0,
+ "numNodes": 20,
+ "numHPCSlivers": 10,
+ "siteUrl": "http://www.internet2.edu/"
+ },
+ "I2 Kansas City": {
+ "lat": 39.0012,
+ "long": -94.00630000000001,
+ "health": 0,
+ "numNodes": 17,
+ "numHPCSlivers": 8,
+ "siteUrl": "http://www.internet2.edu/"
+ },
+ "I2 Houston": {
+ "lat": 29.0077,
+ "long": -95.00369999999998,
+ "health": 0,
+ "numNodes": 15,
+ "numHPCSlivers": 10,
+ "siteUrl": "http://www.internet2.edu/"
+ },
+ "I2 Chicago": {
+ "lat": 41.0085,
+ "long": -87.00650000000002,
+ "health": 0,
+ "numNodes": 15,
+ "numHPCSlivers": 10,
+ "siteUrl": "http://www.internet2.edu/"
+ },
+ "I2 Atlanta": {
+ "lat": 33.0075,
+ "long": -84.00380000000001,
+ "health": 0,
+ "numNodes": 15,
+ "numHPCSlivers": 10,
+ "siteUrl": "http://www.internet2.edu/"
+ },
+ "MaxPlanck": {
+ "lat": 49.14,
+ "long": 6.588999999999942,
+ "health": 0,
+ "numNodes": 15,
+ "numHPCSlivers": 10,
+ "siteUrl": "http://www.mpi-sws.mpg.de/"
+ },
+ "GeorgiaTech": {
+ "lat": 33.7772,
+ "long": -84.39760000000001,
+ "health": 0,
+ "numNodes": 15,
+ "numHPCSlivers": 10,
+ "siteUrl": "http://www.gatech.edu/"
+ },
+ "Princeton": {
+ "lat": 40.3502,
+ "long": -74.6524,
+ "health": 0,
+ "numNodes": 15,
+ "numHPCSlivers": 10,
+ "siteUrl": "http://princeton.edu/"
+ },
+ "Washington": {
+ "lat": 47.6531,
+ "long": -122.31299999999999,
+ "health": 0,
+ "numNodes": 15,
+ "numHPCSlivers": 10,
+ "siteUrl": "https://www.washington.edu/"
+ },
+ "Stanford": {
+ "lat": 37.4294,
+ "long": -122.17200000000003,
+ "health": 0,
+ "numNodes": 15,
+ "numHPCSlivers": 10,
+ "siteUrl": "http://www.stanford.edu/"
+ },
+ }
+
+ if randomizeData:
+ cdnData["Siobhan"] = { "lat": 43.34203, "long": -70.56351, "health": 10, "numNodes": 5, "numHPCSlivers": 3, "siteUrl": "https:devonrexes"}
+ del cdnData["Princeton"]
+ cdnData["I2 Seattle"]['siteUrl'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
+ cdnData["I2 Salt Lake City"]["numHPCSlivers"] = 34
+
+
+ return cdnData
+
+class DashboardAjaxView(View):
+ def get(self, request, **kwargs):
+ return HttpResponse(json.dumps(getCDNOperatorData(True)), mimetype='application/javascript')
+