X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=portal%2Fsliceresourceview.py;h=75ede2a75446c9eb402a217484a80929f873d257;hb=3b39e97b04f9333fd58978120f00c1b4ffffbc41;hp=db72dca919bcc2598a9fa42f78cf5aaa84dc64a5;hpb=606581446b8e61b0817aefa81cbcc64df9cb21ed;p=myslice.git diff --git a/portal/sliceresourceview.py b/portal/sliceresourceview.py index db72dca9..75ede2a7 100644 --- a/portal/sliceresourceview.py +++ b/portal/sliceresourceview.py @@ -1,8 +1,8 @@ from django.template import RequestContext from django.shortcuts import render_to_response -from manifold.core.query import Query, AnalyzedQuery -from manifoldapi.manifoldapi import execute_query +from manifold.core.query import Query, AnalyzedQuery +from manifoldapi.manifoldapi import execute_query import json from django.views.generic.base import TemplateView @@ -22,6 +22,17 @@ from plugins.googlemap import GoogleMap from plugins.filter_status import FilterStatusPlugin from plugins.testbeds import TestbedsPlugin from plugins.scheduler2 import Scheduler2 + +# Bristol plugin +from plugins.univbris import Univbris +from plugins.univbrisfoam import UnivbrisFoam +from plugins.univbrisfv import UnivbrisFv +from plugins.univbrisfvf import UnivbrisFvf +from plugins.univbrisfvfo import UnivbrisFvfo +from plugins.univbristopo import UnivbrisTopo +from plugins.univbrisvtam import UnivbrisVtam as UnivbrisVtamPlugin +from plugins.univbrisvtamform import UnivbrisVtamForm + from plugins.columns_editor import ColumnsEditor from plugins.sladialog import SlaDialog from plugins.lists.simplelist import SimpleList @@ -52,15 +63,34 @@ class SliceResourceView (LoginRequiredView, ThemeView): # Example: select slice_hrn, resource.urn, lease.resource, lease.start_time, lease.end_time from slice where slice_hrn == "ple.upmc.myslicedemo" main_query = Query.get('slice').filter_by('slice_hrn', '=', slicename) main_query.select( - 'slice_urn', # XXX We need the key otherwise the storage of records bugs ! + # SLICE 'slice_hrn', + # - The record key is needed otherwise the storage of records + # bugs ! + 'slice_urn', + # RESOURCES + 'resource', + 'lease', 'resource.urn', 'resource.hostname', 'resource.type', - 'resource.network_hrn', + # - The facility_name and testbed_name are required for the + # testbeds plugin to properly work. + 'resource.facility_name', + 'resource.testbed_name', + # LEASES 'lease.resource', 'lease.start_time', 'lease.end_time', - 'lease.lease_id', # Important for NITOS identify already existing leases + # - The lease_id is important for NITOS identify already existing + # leases + 'lease.lease_id', + + # FLOWSPACE + #'flowspace', + # VMS + #'vms', + + #'user.user_hrn', #'application.measurement_point.counter' ) @@ -71,16 +101,18 @@ class SliceResourceView (LoginRequiredView, ThemeView): page.enqueue_query(main_query, analyzed_query=aq) sq_resource = aq.subquery('resource') sq_lease = aq.subquery('lease') + #sq_flowspace = aq.subquery('flowspace') + #sq_vms = aq.subquery('vms') query_resource_all = Query.get('resource').select(resource_fields) - #page.enqueue_query(query_resource_all) + page.enqueue_query(query_resource_all) # leases query - lease_md = metadata.details_by_object('lease') - lease_fields = [column['name'] for column in lease_md['column']] + #lease_md = metadata.details_by_object('lease') + #lease_fields = [column['name'] for column in lease_md['column']] - query_lease_all = Query.get('lease').select(lease_fields) - page.enqueue_query(query_lease_all) + #query_lease_all = Query.get('lease').select(lease_fields) + #page.enqueue_query(query_lease_all) # -------------------------------------------------------------------------- # ALL RESOURCES LIST @@ -164,10 +196,11 @@ class SliceResourceView (LoginRequiredView, ThemeView): # the key to use at init-time init_key = main_query_init_key, checkboxes = True, - # center on Paris - latitude = 49., - longitude = 9, - zoom = 8, + + # To center around Europe : 53,9 / 3 + latitude = 53., + longitude = 9., + zoom = 3, ) # -------------------------------------------------------------------------- @@ -205,22 +238,22 @@ class SliceResourceView (LoginRequiredView, ThemeView): network_md = metadata.details_by_object('network') network_fields = [column['name'] for column in network_md['column']] - query_networks = Query.get('network').select(network_fields) - page.enqueue_query(query_networks) + #query_networks = Query.get('network').select(network_fields) + #page.enqueue_query(query_networks) filter_testbeds = TestbedsPlugin( page = page, domid = 'testbeds-filter', title = 'Filter by testbeds', query = sq_resource, - query_networks = query_networks, - init_key = "network_hrn", - checkboxes = True, - datatables_options = { - 'iDisplayLength': 25, - 'bLengthChange' : True, - 'bAutoWidth' : True, - }, + #query_networks = query_networks, + #init_key = "network_hrn", + #checkboxes = True, + #datatables_options = { + # 'iDisplayLength': 25, + # 'bLengthChange' : True, + # 'bAutoWidth' : True, + # }, ) filter_status = FilterStatusPlugin( @@ -235,27 +268,134 @@ class SliceResourceView (LoginRequiredView, ThemeView): username = request.user, ) - # -------------------------------------------------------------------------- - # SLA View and accept dialog - - sla_dialog = SlaDialog( - page = page, - title = 'sla dialog', - query = main_query, - togglable = False, - # start turned off, it will open up itself when stuff comes in - toggled = True, - domid = 'sla_dialog', - outline_complete = True, - username = request.user, - ) - + # Ofelia OpenFlow Plugin + # Bristol plugin + + # plugin which display a "gathering resources" message + # waiting for all resources to be returned by manifold + # univbriswelcome = Univbris( + # page = page, + # title = 'univbris_welcome', + # domid = 'univbris_welcome', + # query = query_resource_all, + # ) + + # univbrisfoamlist = UnivbrisFoam( + # page = page, + # title = 'univbris_foam_ports_selection', + # domid = 'univbris_foam_ports_selection', + # query = query_resource_all, + # query_all = query_resource_all, + # checkboxes = False, + # datatables_options = { + # 'iDisplayLength': 10, + # 'bLengthChange' : True, + # 'bAutoWidth' : True, + # }, + # ) + + # #plugin which manages the different flowspaces that the user creates, and also sends flowspaces to manifold + # univbrisfvlist = UnivbrisFv( + # page = page, + # title = 'univbris_flowspace_selection', + # domid = 'univbris_flowspace_selection', + # query = sq_flowspace, + # query_all = query_resource_all, + # datatables_options = { + # 'iDisplayLength': 5, + # 'bLengthChange' : True, + # 'bAutoWidth' : True, + # }, + # ) + + # #plugin which allows the definition of a single flowspace + # univbrisfvform = UnivbrisFvf( + # page = page, + # title = 'univbris_flowspace_form', + # domid = 'univbris_flowspace_form', + # query = query_resource_all, + # query_all = None, + # datatables_options = { + # 'iDisplayLength': 3, + # 'bLengthChange' : True, + # 'bAutoWidth' : True, + # }, + # ) + + # #plugin which allows the definition the match criteria on a single OPTICAL flowspace + # univbrisofvform = UnivbrisFvfo( + # page = page, + # title = 'univbris_oflowspace_form', + # domid = 'univbris_oflowspace_form', + # query = None, + # query_all = None, + # datatables_options = { + # 'iDisplayLength': 3, + # 'bLengthChange' : True, + # 'bAutoWidth' : True, + # }, + # ) + + # #plugin which display the gathered topology + # univbristopology = UnivbrisTopo( + # page = page, + # title = 'univbris_topology', + # domid = 'univbris_topology', + # query = query_resource_all, + # ) + + # # -------------------------------------------------------------------------- + # # Ofelia VTAM Plugin + # # Bristol Plugin + + # #plugin which display a table where an experimenter will add VMs to according to his needs + # # responsible to send the data to Manifold + # univbrisvtamplugin = UnivbrisVtamPlugin( + # page = page, + # title = 'univbris_vtam', + # domid = 'univbris_vtam', + # query = sq_vms, + # #query = sq_resource, + # ) + + # #plugin which display a form where an experimenter will specify + # # in which testbed and which physical server to setup the VM + # univbrisvtamform = UnivbrisVtamForm( + # page = page, + # title = 'univbris_vtam_form', + # domid = 'univbris_vtam_form', + # query = query_resource_all, + # query_all = None, + # datatables_options = { + # 'iDisplayLength': 3, + # 'bLengthChange' : True, + # 'bAutoWidth' : True, + # }, + # ) + + # # -------------------------------------------------------------------------- + # # SLA View and accept dialog + # + # sla_dialog = SlaDialog( + # page = page, + # title = 'sla dialog', + # query = main_query, + # togglable = False, + # # start turned off, it will open up itself when stuff comes in + # toggled = True, + # domid = 'sla_dialog', + # outline_complete = True, + # username = request.user, + # ) + # ## check user is pi or not platform_query = Query().get('local:platform').select('platform_id','platform','gateway_type','disabled') account_query = Query().get('local:account').select('user_id','platform_id','auth_type','config') platform_details = execute_query(self.request, platform_query) account_details = execute_query(self.request, account_query) + + # XXX When session has expired, this is None and thus not iterable for platform_detail in platform_details: for account_detail in account_details: if platform_detail['platform_id'] == account_detail['platform_id']: @@ -282,8 +422,19 @@ class SliceResourceView (LoginRequiredView, ThemeView): template_env['map_resources'] = map_resources.render(self.request) template_env['scheduler'] = resources_as_scheduler2.render(self.request) + + # Bristol plugin + # template_env['welcome'] = univbriswelcome.render(self.request) + # template_env['resources'] = univbrisfoamlist.render(self.request) + # template_env['flowspaces'] = univbrisfvlist.render(self.request) + # template_env['oflowspaces_form'] = univbrisofvform.render(self.request) + # template_env['flowspaces_form'] = univbrisfvform.render(self.request) + # template_env['topology'] = univbristopology.render(self.request) + # template_env['vms_list'] = univbrisvtamplugin.render(self.request) + # template_env['vm_form'] = univbrisvtamform.render(self.request) + # template_env['pending_resources'] = pending_resources.render(self.request) - template_env['sla_dialog'] = '' # sla_dialog.render(self.request) + # template_env['sla_dialog'] = '' # sla_dialog.render(self.request) template_env["theme"] = self.theme template_env["username"] = request.user template_env["pi"] = pi