X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=portal%2Fsliceresourceview.py;h=cdd5f1359794e7a3d3687d7835a90c1d366554b4;hb=d035a1f93e4acbeee79b7c8200264687d940ccc2;hp=85bd368a56e9bdb42f356c89ca14ea2f899e7171;hpb=7bd68468a99af3699d2565447bb067f0d9708f75;p=myslice.git diff --git a/portal/sliceresourceview.py b/portal/sliceresourceview.py index 85bd368a..cdd5f135 100644 --- a/portal/sliceresourceview.py +++ b/portal/sliceresourceview.py @@ -1,16 +1,16 @@ +import json + from django.template import RequestContext from django.shortcuts import render_to_response +from django.views.generic.base import TemplateView +from django.http import HttpResponse +from django.shortcuts import render from manifold.core.query import Query, AnalyzedQuery from manifoldapi.manifoldapi import execute_query -import json -from django.views.generic.base import TemplateView from unfold.loginrequired import LoginRequiredView -from django.http import HttpResponse -from django.shortcuts import render - from unfold.page import Page from myslice.configengine import ConfigEngine @@ -22,6 +22,7 @@ from plugins.googlemap import GoogleMap from plugins.filter_status import FilterStatusPlugin from plugins.testbeds import TestbedsPlugin from plugins.scheduler2 import Scheduler2 +from plugins.asap import AsapPlugin # Bristol plugin from plugins.univbris import Univbris @@ -30,7 +31,7 @@ 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.univbrisvtam import UnivbrisVtam as UnivbrisVtamPlugin from plugins.univbrisvtamform import UnivbrisVtamForm from plugins.columns_editor import ColumnsEditor @@ -38,6 +39,7 @@ from plugins.sladialog import SlaDialog from plugins.lists.simplelist import SimpleList from myslice.theme import ThemeView +from myslice.settings import logger class SliceResourceView (LoginRequiredView, ThemeView): template_name = "slice-resource-view.html" @@ -60,7 +62,7 @@ class SliceResourceView (LoginRequiredView, ThemeView): user_fields = ['user_hrn'] # [column['name'] for column in user_md['column']] 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') @@ -71,11 +73,27 @@ class SliceResourceView (LoginRequiredView, ThemeView): slice_md = metadata.details_by_object('slice') slice_fields = [column['name'] for column in slice_md['column']] - print "SLICE RES VIEW fields = %s" % slice_fields + logger.debug("SLICE RES VIEW fields = {}".format(slice_fields)) # TODO The query to run is embedded in the URL # 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_fields) + + # Columns shown by default in Query_table plugin + page.expose_js_var("QUERYTABLE_MAP","{'Resource name': 'hostname', 'Type': 'type', 'Facility': 'facility_name','Testbed': 'testbed_name', 'Available':'available'}") + + # Columns checked by default in Columns_selector plugin + query_default_fields = ['hostname', 'type', 'facility_name', 'testbed_name', 'available'] + + QUERYTABLE_MAP = { + 'hostname' : 'Resource name', + 'type' : 'Type', + 'facility_name' : 'Facility', + 'testbed_name' : 'Testbed', + 'available' : 'Available', + } + + # # SLICE # 'slice_hrn', # # - The record key is needed otherwise the storage of records @@ -121,14 +139,16 @@ class SliceResourceView (LoginRequiredView, ThemeView): # ALL RESOURCES LIST # resources as a list using datatable plugin - list_resources = QueryTable( - page = page, - domid = 'resources-list', - title = 'List view', - query = sq_resource, - query_all = query_resource_all, - init_key = "urn", - checkboxes = True, + list_resources = QueryTable( + page = page, + domid = 'resources-list', + title = 'List view', + query = sq_resource, + query_all = query_resource_all, + mapping = QUERYTABLE_MAP, + default_fields = query_default_fields, + init_key = "urn", + checkboxes = True, datatables_options = { 'iDisplayLength': 25, 'bLengthChange' : True, @@ -179,6 +199,7 @@ class SliceResourceView (LoginRequiredView, ThemeView): page = page, query = sq_resource, query_all = query_resource_all, + default_fields = query_default_fields, title = "Select Columns", domid = 'select-columns', ) @@ -219,6 +240,20 @@ class SliceResourceView (LoginRequiredView, ThemeView): query_lease = sq_lease, ) + # -------------------------------------------------------------------------- + # LEASES Asap Scheduler + # Select an end_time for all unconfigured resources + # start_time is as soon as possible + + #resources_as_asap = AsapPlugin( + # page = page, + # domid = 'asap', + # title = 'Asap', + # # this is the query at the core of the slice list + # query = sq_resource, + # query_lease = sq_lease, + #) + # -------------------------------------------------------------------------- # QueryUpdater (Pending Operations) @@ -263,6 +298,7 @@ class SliceResourceView (LoginRequiredView, ThemeView): page = page, domid = "filter-status", query = sq_resource, + query_lease = sq_lease, ) apply = ApplyPlugin( page = page, @@ -377,42 +413,25 @@ class SliceResourceView (LoginRequiredView, ThemeView): # }, # ) - # # -------------------------------------------------------------------------- - # # 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']: - if 'config' in account_detail and account_detail['config'] is not '': - account_config = json.loads(account_detail['config']) - if 'myslice' in platform_detail['platform']: - acc_auth_cred = account_config.get('delegated_authority_credentials','N/A') - # assigning values - if acc_auth_cred == {} or acc_auth_cred == 'N/A': - pi = "is_not_pi" - else: - pi = "is_pi" + # -------------------------------------------------------------------------- + # 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, + ) template_env = {} + + template_env['request'] = self.request + template_env['list_resources'] = list_resources.render(self.request) template_env['list_reserved_resources'] = list_reserved_resources.render(self.request) template_env['list_reserved_leases'] = list_reserved_leases.render(self.request) @@ -425,6 +444,7 @@ class SliceResourceView (LoginRequiredView, ThemeView): template_env['map_resources'] = map_resources.render(self.request) template_env['scheduler'] = resources_as_scheduler2.render(self.request) + #template_env['asap'] = resources_as_asap.render(self.request) # Bristol plugin # template_env['welcome'] = univbriswelcome.render(self.request) @@ -436,11 +456,10 @@ class SliceResourceView (LoginRequiredView, ThemeView): # 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['pending_resources'] = pending_resources.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 template_env["slice"] = slicename template_env["section"] = "resources" template_env["msg"] = msg