Amisha's latest changes to tenant view
diff --git a/planetstack/core/plus/views.py b/planetstack/core/plus/views.py
index 3c63e16..9f5d8e4 100644
--- a/planetstack/core/plus/views.py
+++ b/planetstack/core/plus/views.py
@@ -7,6 +7,7 @@
 import datetime
 from pprint import pprint
 import json
+from syndicate.models import *
 from core.models import *
 from hpc.models import ContentProvider
 from operator import attrgetter
@@ -59,13 +60,13 @@
         serviceClass = request.POST.get("serviceClass", "0")
         imageName = request.POST.get("imageName", "0")
         actionToDo = request.POST.get("actionToDo", "0")
-        network = request.POST.get("network","0")
+        #network = request.POST.get("network","0")
         mountDataSets = request.POST.get("mountDataSets","0")
         if (actionToDo == "add"):
            serviceClass = ServiceClass.objects.get(name=serviceClass)
            site = request.user.site
            image = Image.objects.get(name=imageName)
-           newSlice = Slice(name=sliceName,serviceClass=serviceClass,site=site,imagePreference=image,mountDataSets=mountDataSets,network=network)
+           newSlice = Slice(name=sliceName,serviceClass=serviceClass,site=site,imagePreference=image,mountDataSets=mountDataSets)
            newSlice.save()
         return HttpResponse("Slice created")
 
@@ -75,7 +76,7 @@
         serviceClass = request.POST.get("serviceClass", "0")

         imageName = request.POST.get("imageName", "0")

         actionToDo = request.POST.get("actionToDo", "0")

-        network = request.POST.get("network","0")

+        #network = request.POST.get("network","0")

         dataSet = request.POST.get("dataSet","0")

         slice = Slice.objects.all()

         for entry in slice:

@@ -84,19 +85,12 @@
                          if (actionToDo == "update"):

                                 setattr(entry,'serviceClass',serviceClass)

                                 setattr(entry,'imagePreference',imageName)

-                                setattr(entry,'network',network)

+                                #setattr(entry,'network',network)

                                 setattr(entry,'mountDataSets',dataSet)

                                 entry.save()

                                 break

         return HttpResponse("Slice updated")

 

-def  update_slice(sliceName,**fields):
-         slice = Slice.objects.filter(name = sliceName)

-         for (k,v) in fields.items():

-                setattr(slice, k, v)

-                slice.save()

-         return slice
-
 def getTenantSliceInfo(user, tableFormat = False):
     tenantSliceDetails = {}
     tenantSliceData = getTenantInfo(user)
@@ -108,13 +102,13 @@
        tenantSliceDetails['userSliceInfo'] = tenantSliceData
     tenantSliceDetails['sliceServiceClass']=userSliceTableFormatter(tenantServiceClassData)
     tenantSliceDetails['image']=userSliceTableFormatter(getImageInfo(user))
-    tenantSliceDetails['network']=userSliceTableFormatter(getNetworkInfo(user))
+    #tenantSliceDetails['network']=userSliceTableFormatter(getNetworkInfo(user))
     tenantSliceDetails['deploymentSites']=userSliceTableFormatter(getDeploymentSites())
     tenantSliceDetails['sites'] = userSliceTableFormatter(getTenantSitesInfo())
     tenantSliceDetails['mountDataSets'] = userSliceTableFormatter(getMountDataSets())
+    tenantSliceDetails['publicKey'] = getPublicKey(user)
     return tenantSliceDetails
 
-
 def getTenantInfo(user):
     slices =Slice.objects.all()
     userSliceInfo = []
@@ -124,7 +118,7 @@
        sliceServiceClass = entry.serviceClass.name
        preferredImage =  entry.imagePreference
        sliceDataSet = entry.mountDataSets
-       sliceNetwork = entry.network
+       #sliceNetwork = entry.network
        numSliver = 0
        sliceImage=""
        sliceSite = {}
@@ -137,7 +131,7 @@
                 sliceNode[str(sliver)] = sliver.node.name
        numSliver = sum(sliceSite.values())
        numSites = len(sliceSite)
-       userSliceInfo.append({'sliceName': sliceName,'sliceServiceClass': sliceServiceClass,'preferredImage':preferredImage,'numOfSites':numSites, 'sliceSite':sliceSite,'sliceImage':sliceImage,'numOfSlivers':numSliver,'sliceDataSet':sliceDataSet,'sliceNetwork':sliceNetwork, 'instanceNodePair':sliceNode})
+       userSliceInfo.append({'sliceName': sliceName,'sliceServiceClass': sliceServiceClass,'preferredImage':preferredImage,'numOfSites':numSites, 'sliceSite':sliceSite,'sliceImage':sliceImage,'numOfSlivers':numSliver,'sliceDataSet':sliceDataSet,'instanceNodePair':sliceNode})
     return userSliceInfo
 
 def getTenantSitesInfo():
@@ -154,6 +148,13 @@
                     }
     return formattedData
 
+def getPublicKey(user):
+	users=User.objects.all()

+        for key in users:

+        	if (str(key.email)==str(user)):

+                    	sshKey = key.public_key

+        return sshKey
+
 def getServiceClassInfo(user):
     serviceClassList = ServiceClass.objects.all()
     sliceInfo = []
@@ -170,11 +171,58 @@
           #imageInfo.append({'Image':imageEntry})
     return imageInfo
 
+def createPrivateVolume(user, sliceName):
+    caps = Volume.CAP_READ_DATA | Volume.CAP_WRITE_DATA | Volume.CAP_HOST_DATA
+    getattr(Volume.default_gateway_caps,"read data") | \
+           getattr(Volume.default_gateway_caps,"write data") | \
+           getattr(Volume.default_gateway_caps,"host files")
+    v = Volume(name="private_" + sliceName, owner_id=user, description="private volume for %s" % sliceName, blocksize=61440, private=True, archive=False, default_gateway_caps = caps)
+    v.save()
+
+SYNDICATE_REPLICATE_PORTNUM = 1025
+
+def get_free_port():
+    inuse={}
+    inuse[SYNDICATE_REPLICATE_PORTNUM] = True
+    for vs in VolumeSlice.objects.all():
+        inuse[vs.peer_portnum]=True
+        inuse[vs.replicate_portnum]=True
+    for network in Network.objects.all():
+        network_ports = [x.strip() for x in network.ports.split(",")]
+        for network_port in network_ports:
+            try:
+                inuse[int(network_port)] = True
+            except:
+                # in case someone has put a malformed port number in the list
+                pass
+    for i in range(1025, 65535):
+        if not inuse.get(i,False):
+            return i
+    return False
+
+def mountVolume(sliceName, volumeName, readWrite):
+    slice = Slice.objects.get(name=sliceName)
+    volume = Volume.objects.get(name=volumeName)
+    # choose some unused port numbers
+    flags = Volume.CAP_READ_DATA
+    if readWrite:
+        flags = flags | Volume.CAP_WRITE_DATA
+    vs = VolumeSlice(volume_id = volume, slice_id = slice, gateway_caps=flags, peer_portnum = get_free_port(), replicate_portnum = SYNDICATE_REPLICATE_PORTNUM)
+    vs.save()
+
+def hasPrivateVolume(sliceName):
+     slice = Slice.objects.get(name=sliceName)
+     for vs in VolumeSlice.objects.filter(slice_id=slice):
+         if vs.volume_id.private:
+             return True
+     return False
+
 def getMountDataSets():
-        dataSetList = ['------','GenBank','LSST','LHC','NOAA','Measurement Lab','Common Crawl']

-        dataSetInfo = []

-        for entry in dataSetList:

-                dataSetInfo.append({'DataSet':entry})

+        dataSetInfo=[]

+        for volume in Volume.objects.all():

+            if not volume.private:

+                dataSetInfo.append({'DataSet': volume.name})

+

         return dataSetInfo
 
 def getNetworkInfo(user):
@@ -307,6 +355,11 @@
 
     return new_rows
 
+def getPageSummary(request):
+    slice = request.GET.get('slice', None)
+    site = request.GET.get('site', None)
+    node = request.GET.get('node', None)
+
 class SimulatorView(View):
     def get(self, request, **kwargs):
         sim = json.loads(file("/tmp/simulator.json","r").read())
@@ -446,7 +499,7 @@
         def post(self,request):

                 sliceName = request.POST.get("sliceName",None)

                 slice = Slice.objects.get(name=sliceName)

-                print slice, slice.id

+                #print slice, slice.id

                 sliceToDel=Slice(name=sliceName, id=slice.id)

                 sliceToDel.delete()
                 return HttpResponse("Slice deleted")
diff --git a/planetstack/core/static/planetstack.css b/planetstack/core/static/planetstack.css
index 1fa6ea2..39102be 100644
--- a/planetstack/core/static/planetstack.css
+++ b/planetstack/core/static/planetstack.css
@@ -1034,7 +1034,7 @@
  margin-left: 5%;
 }
 
-#network-dropdown,#adv-network-dropdown{
+#network-dropdown,#adv-network-dropdown,#adv-network-value{
  margin-left: 3.7%;
 }
 
@@ -1129,3 +1129,16 @@
 #advNumOfSlivers{
         margin-right: 1% !important;
 }
+
+#private-vol-checkbox{
+margin: 0 0 1% 1%;
+}
+
+.public-key-warning{
+text-align: center;
+display:none;
+}
+
+#private-vol{
+margin-right: 15% !important;
+}
\ No newline at end of file
diff --git a/planetstack/templates/admin/dashboard/tenant.html b/planetstack/templates/admin/dashboard/tenant.html
index c3f95ec..a09cec6 100644
--- a/planetstack/templates/admin/dashboard/tenant.html
+++ b/planetstack/templates/admin/dashboard/tenant.html
@@ -35,9 +35,13 @@
 			</div>
 			<div class="create-slice-row">
                                 <label for="new-network">Network</label>
-                                <select id="new-network" class="tenant-create-slice"></select>
+				<input type="text" name="new-network" id="new-network">
                         </div>
 			<div class="create-slice-row">
+				<label for="private-vol">Include Private Vol</label>
+				<input type="checkbox" name="checkbox" id="private-vol" value="value">
+			</div>
+			<div class="create-slice-row">
                                 <label for="mount-data-sets">Data Sets</label>
                                 <select id="mount-data-sets" class="tenant-create-slice"></select>
                         </div>
@@ -66,23 +70,20 @@
 	</script>
 	<script>
 	$(document).ready(function () {
-		function showSliceData(data,value) {
-			var imageData = data['image']['rows'];
-			var networkData = data['network']['rows'];
+		function showSliceData(rows,imageData,serviceLevelData,siteRows,dataSet,value) {
 			$("#service-level-value").empty();
 			$("#slice-image-value").empty();
 			$("#tenantSiteTable").empty();
 			$('#tenantSiteTable').html('<table cellpadding="0" cellspacing="0" border="0" class="display" id="tenantSiteTableData"></table>');
 			$("#tenantSliceDropDown").val(value);
-			var rows = data['userSliceInfo']['rows'];
 			var siteNames = [];
 			var sliverCount;
 			for (row in rows) {
 				if (rows[row]['sliceName'] == value) {
 					sliceImageData = rows[row]['preferredImage'];
 					$("#slice-image-value").html(sliceImageData);
-					serviceLevelData = rows[row]['sliceServiceClass'];
-					$("#service-level-value").html(serviceLevelData);
+					serviceLevelDataBasic = rows[row]['sliceServiceClass'];
+					$("#service-level-value").html(serviceLevelDataBasic);
 					var innerRows = rows[row]['sliceSite'];
 					for (innerRow in innerRows) {
 						sliverCount = innerRows[innerRow];
@@ -103,18 +104,16 @@
 						"sTitle": "Allocated",
 						sClass: "alignCenter"
 					}
-					//{ "sTitle": "Allocated" , sClass: "alignCenter"},
-					//{ "sTitle": "Desired" , sClass: "alignCenter"},
 				]
 			});
 				$('#tenantSliceDropDown').on('change', function () {
 					var value = $("#tenantSliceDropDown").val();
 	//alert(value);
-					checkForBasicAdvView(value, data);
+					checkForBasicAdvView(value,rows,imageData,serviceLevelData,siteRows,dataSet);
 				});
 		}
 
-		function downloadSliceInfo(data,value){
+		function downloadSliceInfo(rows,imageData,serviceLevelData,siteRows,dataSet,value){
 			 $("#download-details").unbind().click(function(){
                                                 function download(filename, text) {
     						var sliceDetails = document.createElement('a');
@@ -122,7 +121,6 @@
     						sliceDetails.setAttribute('download', filename);
     						sliceDetails.click();
 					}
-					var rows = data['userSliceInfo']['rows'];
 					var sliceInfo;
 					for (row in rows){
 						if(rows[row]['sliceName']==value){
@@ -140,8 +138,9 @@
 				var allocatedSlivers = parseInt($(this).parent().siblings(".allocated").html());
 				var td = $(this).parent().siblings(".allocated");
 				var pos = oTable.fnGetPosition(td[0]);
+				$("#numOfSlivers").val("");;
+				$("#advNumOfSlivers").val("");;
 				$("#adv-tooltip").css("display", "none");
-				$("#numOfSlivers").empty();
 				$("#adv-dialog-form").dialog({
 					autoOpen: false,
 					height: 200,
@@ -151,21 +150,15 @@
 					buttons: {
 						"Add": function () {
 							allocatedSlivers += parseInt($("#advNumOfSlivers").val());
-							//if (!(parseInt($("#numOfSlivers").val()))) {
 								$("#adv-tooltip").css("display", "block");
-							//} else {
 								$(this).dialog("close");
 								td.html(allocatedSlivers);
-							//}
 						},
 						"Remove": function () {
 							allocatedSlivers -= parseInt($("#advNumOfSlivers").val());
-						//	if (!(parseInt($("#numOfSlivers").val()))) {
 								$("#adv-tooltip").css("display", "block");
-						//	} else {
 								$(this).dialog("close");
 								td.html(allocatedSlivers);
-						//	}
 						}
 					}
 				});
@@ -173,23 +166,15 @@
 			});
 		}
 
-		function advShowSliceData(data,value) {
-			var serviceLevelData = data['sliceServiceClass']['rows'];
-			var imageData = data['image']['rows'];
-			var networkData = data['network']['rows'];
-			var siteRows = data['sites']['rows'];
-			var dataSet = data['mountDataSets']['rows'];
+		function advShowSliceData(rows,imageData,serviceLevelData,siteRows,dataSet,value) {
 			$("#adv-service-level-value").empty();
 			$("#adv-slice-image-value").empty();
 			$("#adv-slice-data-set-value").empty();
-			$("#adv-slice-network-value").empty();
 			$("#advTenantSliceDropDown").val(value);
 			$("<select></select>").attr('id', 'adv-service-level-dropdown').appendTo('#adv-service-level-value');
 			$("<select></select>").attr('id', 'adv-image-dropdown').appendTo('#adv-slice-image-value');
-			$("<select></select>").attr('id', 'adv-network-dropdown').appendTo('#adv-slice-network-value');
 			$("<select></select>").attr('id', 'adv-dataset-dropdown').appendTo('#adv-slice-data-set-value');
 			$('#advTenantSiteTable').html('<table cellpadding="0" cellspacing="0" border="0" class="display" id="advTenantSiteTableData"></table>');
-			var rows = data['userSliceInfo']['rows'];
 			var siteNames = [];
 			var sliverCount;
 			var tableData = {};
@@ -199,9 +184,6 @@
                         for (row in imageData) {
                                 $("#adv-image-dropdown").append("<option>" + imageData[row]['Image'] + "</option>");
                         }
-                        for (row in networkData) {
-                                $("#adv-network-dropdown").append("<option>" + networkData[row]['Network'] + "</option>");
-                        }
                         for (row in dataSet) {
                                 $("#adv-dataset-dropdown").append("<option>" + dataSet[row]['DataSet'] + "</option>");
                         }
@@ -212,7 +194,6 @@
 					$("#adv-service-level-dropdown").val(rows[row]['sliceServiceClass']);
 					$("#adv-image-dropdown").val(rows[row]['preferredImage']);
 					$("#adv-dataset-dropdown").val(rows[row]['sliceDataSet']);
-					$("#adv-network-dropdown").val(rows[row]['sliceNetwork']);
 					for (innerRow in innerRows) {
 						tableData[innerRow] = innerRows[innerRow];
 					}
@@ -249,8 +230,8 @@
 							},
 							type: 'POST',
 							complete: function () {
-                                                                //oTable.fnReloadAjax();
-								location.reload();
+								//location.reload();
+								
                                                         }
 						});
 					} else if (newTableData[newRow] < tableData[newRow]) {
@@ -267,8 +248,7 @@
 							},
 							type: 'POST',
 							complete: function () {
-                                                               // oTable.fnReloadAjax();
-								location.reload();
+								//location.reload();
                                                         }
 						});
 					}
@@ -280,7 +260,6 @@
                                                                 sliceName: $("#advTenantSliceDropDown").val(),
 								serviceClass: $("#adv-service-level-dropdown").val(),
 								imageName: $("#adv-image-dropdown").val(),
-								network: $("#adv-network-dropdown").val(),
 								dataSet: $("#adv-dataset-dropdown").val(),
                                                                 actionToDo: "update",
                                                                 csrfmiddlewaretoken: "{{ csrf_token }}", // < here
@@ -288,8 +267,8 @@
                                                         },
                                                         type: 'POST',
                                                         complete: function () {
-                                                                //oTable.fnReloadAjax();
-                                                                location.reload();
+								$("#tabs-5").empty();
+                                                                initTenant();    //location.reload();
                                                         }
                                                 });
 
@@ -315,20 +294,17 @@
 			});
 			editSliverAdv();
 				$('#advTenantSliceDropDown').on('change', function () {
-	var selectedValue = $("#advTenantSliceDropDown").val();
-	//alert(selectedValue);
-					checkForBasicAdvView(selectedValue, data);
-					//editSliverAdv();
+					var selectedValue = $("#advTenantSliceDropDown").val();
+					checkForBasicAdvView(selectedValue, rows,imageData,serviceLevelData,siteRows,dataSet);
 				});
 		}
 
-		function checkForBasicAdvView(value, data) {
-			var rows = data['userSliceInfo']['rows'];
+		function checkForBasicAdvView(value, rows,imageData,serviceLevelData,siteRows,dataSet) {
 			for (row in rows) {
 				if (rows[row]['sliceName'] == value) {
 					if (rows[row]['numOfSites'] > 1) {
-						advShowSliceData(data,value);
-						downloadSliceInfo(data,value);
+						advShowSliceData(rows,imageData,serviceLevelData,siteRows,dataSet,value);
+						downloadSliceInfo(rows,imageData,serviceLevelData,siteRows,dataSet,value);
 						$("#tenantSliceDataWrapper").css("display","none");
 						$("#advancedTenantSliceDataWrapper").css("display","block");
 						$("#advTenantSiteTable").css("display","block");
@@ -337,9 +313,8 @@
 						$("#save-btn").css("display","block");
 						break;
 					} else if(rows[row]['numOfSites'] <= 1){
-						showSliceData(data,value);
-						downloadSliceInfo(data,value);
-						//editSliverAdv();
+						showSliceData(rows,imageData,serviceLevelData,siteRows,dataSet,value);
+						downloadSliceInfo(rows,imageData,serviceLevelData,siteRows,dataSet,value);
 						$("#tenantSliceDataWrapper").css("display","block");
 						$("#advancedTenantSliceDataWrapper").css("display","none");
 						$("#advTenantSiteTable").css("display","none");
@@ -352,15 +327,14 @@
 			}
 		}
 
-		function UserSliceTable(data) {
+		function UserSliceTable(rows,imageData,serviceLevelData,siteRows,dataSet) {
 				//Add check for #dynamicusersliceinfo_filter label-> input having focus here
-				var rows = data['userSliceInfo']['rows'];
 				$("<div></div>").attr('id', 'tenantSliceDataWrapper').appendTo('#tabs-5');
 				$("<div></div>").attr('id', 'advancedTenantSliceDataWrapper').appendTo('#tabs-5');
 				var sliceData = '';
-				sliceData += '<div class="tenant-row"><span class="summary-attr"><b>Slice Name:</b> <span id="slice-name-value"> </span> </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Service Level:</b> <span id="service-level-value"> </span>  </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Image:</b> <span id="slice-image-value"> </span>  </span><br></div><div class="btn btn-high btn-info" id="advanced-tenant">Go to Advanced View</div>';
+				sliceData += '<div class="tenant-row public-key-warning"><span class="summary-attr">You have not uploaded your Public Key. <a href="http://{{ request.get_host}}/admin/core/user/{{user.id}}">Click here</a> to upload it now.</span></div><div class="tenant-row"><span class="summary-attr"><b>Slice Name:</b> <span id="slice-name-value"> </span> </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Service Level:</b> <span id="service-level-value"> </span>  </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Image:</b> <span id="slice-image-value"> </span>  </span><br></div><div class="btn btn-high btn-info" id="advanced-tenant">Go to Advanced View</div>';
 				var advSliceData = '';
-				advSliceData += '<div class="adv-tenant-row"><span class="summary-attr"><b>Slice Name:</b> <span id="adv-slice-name-value"> </span> </span><br><br></div><div class="tenant-row"><span class="summary-attr"><b>Service Level:</b> <span id="adv-service-level-value"> </span> <span class="help-inline">Changes are potentially disruptive to existing slivers</span> </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Image:</b> <span id="adv-slice-image-value"> </span><span class="help-inline">Changes are potentially disruptive to existing slivers</span>  </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Network:</b> <span id="adv-slice-network-value"> </span>  <span class="help-inline">Changes are potentially disruptive to existing slivers</span></span></div><div class="tenant-row"><span class="summary-attr"><b>Data Sets:</b> <span id="adv-slice-data-set-value"> </span>  </span></div>';
+				advSliceData += '<div class="tenant-row public-key-warning"><span class="summary-attr">You have not uploaded your Public Key. <a href="http://{{ request.get_host}}/admin/core/user/{{user.id}}">Click here</a> to upload it now.</span></div><div class="adv-tenant-row"><span class="summary-attr"><b>Slice Name:</b> <span id="adv-slice-name-value"> </span> </span><br><br></div><div class="tenant-row"><span class="summary-attr"><b>Service Level:</b> <span id="adv-service-level-value"> </span> <span class="help-inline">Changes are potentially disruptive to existing slivers</span> </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Image:</b> <span id="adv-slice-image-value"> </span><span class="help-inline">Changes are potentially disruptive to existing slivers</span>  </span><br></div><div class="tenant-row"><span class="summary-attr"><b>Network:</b> <input type="text" name="adv-network-value" id="adv-network-value"> <span class="help-inline">List of port ranges(if any) e.g. 1021-1026,1029</span><br></div><div class="tenant-row"><span class="summary-attr"><b>Data Sets:</b> <span id="adv-slice-data-set-value"> </span>  <input type="checkbox" name="checkbox" id="private-vol-checkbox" value="value"><span class="help-inline">Include Private Volume</span></span></div>';
 				$('#tenantSliceDataWrapper').append(sliceData).css("display", "none");
 				$('#advancedTenantSliceDataWrapper').append(advSliceData);
 				$("#advancedTenantSliceDataWrapper").css("display", "none");
@@ -381,7 +355,7 @@
 				$('<div class="btn btn-high btn-info" id="save-btn">Save</div>').appendTo("#tabs-5").css("display", "none");
 				$("#advanced-tenant").unbind().click(function () {
 					var value = $("#tenantSliceDropDown").val();
-					advShowSliceData(data,value);
+					advShowSliceData(rows,imageData,serviceLevelData,siteRows,dataSet,value);
                                                 $("#tenantSliceDataWrapper").css("display","none");
                                                 $("#advancedTenantSliceDataWrapper").css("display","block");
                                                 $("#advTenantSiteTable").css("display","block");
@@ -391,7 +365,6 @@
 
 			});
 			$("#sliver-btn").click(function () {
-				$("#numOfSlivers").empty();
 				$("#basic-tooltip").css("display", "none");
 				$("#dialog-form").dialog({
 					autoOpen: false,
@@ -420,8 +393,9 @@
 										return true;
 									}
 								},
-								complete: function () {
+								success: function () {
 									location.reload();
+$("#dialog-form").dialog("close");
 								}
 							});
 						},
@@ -445,8 +419,10 @@
 										return true;
 									}
 								},
-								complete: function () {
-									location.reload();
+								success: function () {
+$("#dialog-form").dialog("close");								
+location.reload();
+
 								}
 							});
 						}
@@ -455,10 +431,6 @@
 				$("#dialog-form").dialog("open");
 			});
 			$("#create-slice-btn").unbind().click(function () {
-				var serviceLevelData = data['sliceServiceClass']['rows'];
-				var imageData = data['image']['rows'];
-				var dataSet = data['mountDataSets']['rows'];
-				var networkData = data['network']['rows'];
 				$("#new-service-class").empty();
 				$("#new-image").empty();
 				$("#mount-data-sets").empty();
@@ -472,9 +444,6 @@
 				for (row in dataSet) {
                                         $("#mount-data-sets").append("<option>" + dataSet[row]['DataSet'] + "</option>");
                                 }
-				for (row in networkData) {
-                                        $("#new-network").append("<option>" + networkData[row]['Network'] + "</option>");
-                                }
 				var nameOfSlice = $("#new-slice-name").val();
 				var nameOfServiceClass = $("#new-service-class").val();
 				var nameOfImage = $("#new-image").val();
@@ -540,7 +509,6 @@
 				$("#create-slice-form").dialog("open");
 			});
 			$("#delete-slice-btn").unbind().click(function () {
-				var rows = data['userSliceInfo']['rows'];
 				$("#delete-slice").empty();
 				for (row in rows) {
 					$("#delete-slice").append("<option>" + rows[row]['sliceName'] + "</option>");
@@ -583,9 +551,18 @@
 			url: '/tenantview',
 			dataType: 'json',
 			success: function (data) {
-				UserSliceTable(data);
+				var rows = data['userSliceInfo']['rows'];
+				var imageData = data['image']['rows'];
+				//var networkData = data['network']['rows'];
+				var serviceLevelData = data['sliceServiceClass']['rows'];
+				var siteRows = data['sites']['rows'];
+				var dataSet = data['mountDataSets']['rows'];
+				UserSliceTable(rows,imageData,serviceLevelData,siteRows,dataSet);
+				if(!(data['publicKey'])){
+					$(".public-key-warning").css("display","block");
+				}
 				var value = $("#tenantSliceDropDown").val();
-				checkForBasicAdvView(value, data);
+				checkForBasicAdvView(value,rows,imageData,serviceLevelData,siteRows,dataSet);
 				$("#tooltip").css("display", "none");
 				$("#basic-tooltip").css("display", "none");
 				$("#adv-tooltip").css("display", "none");