From 4a034c2a5701c9fbb38da8670d25d7ebe8f339ac Mon Sep 17 00:00:00 2001 From: Loic Baron Date: Wed, 4 Nov 2015 12:30:24 +0100 Subject: [PATCH] Plugin Cloud wip --- myslice/urls.py | 2 + portal/slicetabcloud.py | 86 +++++++++ portal/templates/slice-tab-cloud.html | 244 ++++++++++++++++++++++++++ 3 files changed, 332 insertions(+) create mode 100644 portal/slicetabcloud.py create mode 100644 portal/templates/slice-tab-cloud.html diff --git a/myslice/urls.py b/myslice/urls.py index 61f779f3..b2e88bb6 100644 --- a/myslice/urls.py +++ b/myslice/urls.py @@ -46,6 +46,7 @@ import portal.sliceresourceview import portal.resources import portal.slicetabexperiment +import portal.slicetabcloud import portal.slicetabinfo import portal.slicetabtestbeds import portal.slicetabusers @@ -116,6 +117,7 @@ urls = [ (r'^testbeds/(?P[^/]+)/?$', portal.slicetabtestbeds.SliceTabTestbeds.as_view()), (r'^measurements/(?P[^/]+)/?$', portal.slicetabmeasurements.SliceTabMeasurements.as_view()), (r'^experiment/(?P[^/]+)/?$', portal.slicetabexperiment.ExperimentView.as_view()), + (r'^cloud/(?P[^/]+)/?$', portal.slicetabcloud.CloudView.as_view()), url(r'^about/?$', portal.about.AboutView.as_view(), name='about'), diff --git a/portal/slicetabcloud.py b/portal/slicetabcloud.py new file mode 100644 index 00000000..5526a187 --- /dev/null +++ b/portal/slicetabcloud.py @@ -0,0 +1,86 @@ +# this somehow is not used anymore - should it not be ? +from django.core.context_processors import csrf +from django.http import HttpResponseRedirect +from django.contrib.auth import authenticate, login, logout +from django.template import RequestContext +from django.shortcuts import render_to_response +from django.shortcuts import render + +from unfold.loginrequired import FreeAccessView + +from manifold.core.query import Query +from manifoldapi.manifoldapi import execute_query +from manifoldapi.manifoldresult import ManifoldResult +from ui.topmenu import topmenu_items, the_user +from myslice.configengine import ConfigEngine + +from myslice.theme import ThemeView +from myslice.configengine import ConfigEngine +from myslice.settings import logger + +from sfa.planetlab.plxrn import hash_loginbase + +import urllib2,json + +class CloudView (FreeAccessView, ThemeView): + # parent View is portal/sliceview.py + + def get_platforms (self, request): + username = self.request.user + + pf_query = Query().get('local:platform').filter_by('disabled', '==', '0').filter_by('gateway_type', '==', 'sfa').select('platform') + res_platforms = execute_query(request, pf_query) + platforms = [p['platform'] for p in res_platforms] + return platforms + + + template_name = 'slice-tab-cloud.html' + def post (self, request, slicename): + logger.debug("---------------- POST CloudView ------------------") + logger.debug(request.POST) + + username = self.request.user + platforms = self.get_platforms(request) + cloud_platforms = ["onelab-cloud"] + len_platforms = len(platforms) + + #if 'action' in request.POST: + # if request.POST['action'] == 'add': + + # elif request.POST['action'] == 'delete': + # for key,val in request.POST: + # if key.endswith('_vm'): + # request.POST['platform'] + # + # elif request.POST['action'] == 'reserve': + # + # else: + # log.error("action %s not supported" % request.POST['action']) + + env = { 'theme' : self.theme, + 'slicename':slicename, + 'platforms':platforms, + 'cloud_platforms':cloud_platforms, + 'len_platforms': len_platforms, + 'post_values': request.POST, + 'request':self.request, + } + return render_to_response(self.template, env, context_instance=RequestContext(request)) + + + def get (self, request, slicename, state=None): + + username = self.request.user + platforms = self.get_platforms(request) + cloud_platforms = ["onelab-cloud"] + len_platforms = len(platforms) + + env = { 'theme' : self.theme, + 'slicename':slicename, + 'platforms':platforms, + 'cloud_platforms':cloud_platforms, + 'len_platforms': len_platforms, + 'request':self.request, + } + return render_to_response(self.template, env, context_instance=RequestContext(request)) + diff --git a/portal/templates/slice-tab-cloud.html b/portal/templates/slice-tab-cloud.html new file mode 100644 index 00000000..913b6ddc --- /dev/null +++ b/portal/templates/slice-tab-cloud.html @@ -0,0 +1,244 @@ +{% extends "layout_wide.html" %} + +{% block head %} + +{% endblock %} + +{% block content %} +{{post_values}} +{% for platform in platforms %} + {% if platform in cloud_platforms %} +
+

{{ platform }}

+
+ {% csrf_token %} +
+
+ +
+
+
+ +
+
+ // display only if VMs already in slice +
+ {% csrf_token %} +
+ + + +
+
+
+ // display only pending changes +
+
+ {% csrf_token %} +
+ + + +
+
+ {% endif %} +{% endfor %} +{% endblock %} -- 2.43.0