1 # this somehow is not used anymore - should it not be ?
2 from django.core.context_processors import csrf
3 from django.http import HttpResponseRedirect
4 from django.contrib.auth import authenticate, login, logout
5 from django.template import RequestContext
6 from django.shortcuts import render_to_response
7 from django.shortcuts import render
9 from unfold.loginrequired import LoginRequiredView
11 from manifold.core.query import Query
12 from manifoldapi.manifoldapi import execute_query
13 from manifoldapi.manifoldresult import ManifoldResult
14 from ui.topmenu import topmenu_items, the_user
15 from myslice.configengine import ConfigEngine
17 from myslice.theme import ThemeView
18 from myslice.configengine import ConfigEngine
19 from myslice.settings import logger
21 from rest.sfa_api import sfa_client
23 from sfa.planetlab.plxrn import hash_loginbase
27 class CloudView (LoginRequiredView, ThemeView):
28 # parent View is portal/sliceview.py
30 def get_platforms (self, request):
31 username = self.request.user
33 pf_query = Query().get('local:platform').filter_by('disabled', '==', '0').filter_by('gateway_type', '==', 'sfa').select('platform')
34 res_platforms = execute_query(request, pf_query)
35 platforms = [p['platform'] for p in res_platforms]
39 template_name = 'slice-tab-cloud.html'
40 def post (self, request, slicename):
41 logger.debug("---------------- POST CloudView ------------------")
42 logger.debug(request.POST)
44 username = self.request.user
45 platforms = self.get_platforms(request)
46 cloud_platforms = ["onelab-cloud","fuseco"]
47 len_platforms = len(platforms)
49 #if 'action' in request.POST:
50 # if request.POST['action'] == 'add':
52 # elif request.POST['action'] == 'delete':
53 # for key,val in request.POST:
54 # if key.endswith('_vm'):
55 # request.POST['platform']
57 # elif request.POST['action'] == 'reserve':
60 # log.error("action %s not supported" % request.POST['action'])
62 env = { 'theme' : self.theme,
63 'slicename':slicename,
64 'platforms':platforms,
65 'cloud_platforms':cloud_platforms,
66 'len_platforms': len_platforms,
67 'post_values': request.POST,
68 'request':self.request,
70 return render_to_response(self.template, env, context_instance=RequestContext(request))
73 def get (self, request, slicename, state=None):
75 username = self.request.user
76 platforms = self.get_platforms(request)
77 cloud_platforms = ["onelab-cloud","fuseco"]
78 len_platforms = len(platforms)
79 result = sfa_client(request,'ListResources',platforms=cloud_platforms)
81 # Handle errors in ListResources, example AM is down
82 for key, value in result.iteritems():
83 logger.debug("key in result = %s" % key)
85 cloud_platforms.remove(key)
87 env = { 'theme' : self.theme,
88 'slicename':slicename,
89 'platforms':platforms,
91 'cloud_platforms':cloud_platforms,
92 'len_platforms': len_platforms,
93 'request':self.request,
95 return render_to_response(self.template, env, context_instance=RequestContext(request))