X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=portal%2Fsliceresourceview.py;h=f6d29dbfa0b0aa2e1da4ed1ee38cf3725fd5f661;hb=7094e56df16ae31c7c5059fb4a84de27904145bf;hp=254e2fdeb13bc26fd7e9a5efaad53083e49ff516;hpb=0ea4d9fd262684724c1680c733bd4ea7dfc8df89;p=myslice.git diff --git a/portal/sliceresourceview.py b/portal/sliceresourceview.py index 254e2fde..f6d29dbf 100644 --- a/portal/sliceresourceview.py +++ b/portal/sliceresourceview.py @@ -3,6 +3,7 @@ from django.shortcuts import render_to_response from manifold.core.query import Query, AnalyzedQuery from manifoldapi.manifoldapi import execute_query +import json from django.views.generic.base import TemplateView @@ -19,6 +20,8 @@ from plugins.queryupdater import QueryUpdater from plugins.testbeds import TestbedsPlugin from plugins.scheduler2 import Scheduler2 from plugins.columns_editor import ColumnsEditor +from plugins.sladialog import SlaDialog +from plugins.lists.simplelist import SimpleList from myslice.theme import ThemeView @@ -43,14 +46,17 @@ class SliceResourceView (LoginRequiredView, ThemeView): user_fields = ['user_hrn'] # [column['name'] for column in user_md['column']] # 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_hrn', 'resource.urn', 'resource.hostname', 'resource.type', 'resource.network_hrn', - 'lease.urn', - 'user.user_hrn', + 'lease.resource', + 'lease.start_time', + 'lease.end_time', + #'user.user_hrn', #'application.measurement_point.counter' ) # for internal use in the querytable plugin; @@ -68,8 +74,8 @@ class SliceResourceView (LoginRequiredView, ThemeView): lease_md = metadata.details_by_object('lease') lease_fields = [column['name'] for column in lease_md['column']] - query_all_lease = Query.get('lease').select(lease_fields) - page.enqueue_query(query_all_lease) + query_lease_all = Query.get('lease').select(lease_fields) + page.enqueue_query(query_lease_all) # -------------------------------------------------------------------------- # ALL RESOURCES LIST @@ -95,21 +101,35 @@ class SliceResourceView (LoginRequiredView, ThemeView): # RESERVED RESOURCES LIST # resources as a list using datatable plugin - list_reserved_resources = QueryTable( - page = page, - domid = 'resources-reserved-list', - title = 'List view', - query = sq_resource, - query_all = sq_resource, - init_key = "urn", - checkboxes = True, - datatables_options = { - 'iDisplayLength': 25, - 'bLengthChange' : True, - 'bAutoWidth' : True, - }, + list_reserved_resources = SimpleList( + title = None, + page = page, + key = 'urn', + query = sq_resource, + ) + + list_reserved_leases = SimpleList( + title = None, + page = page, + key = 'resource', + query = sq_lease, ) +# list_reserved_resources = QueryTable( +# page = page, +# domid = 'resources-reserved-list', +# title = 'List view', +# query = sq_resource, +# query_all = sq_resource, +# init_key = "urn", +# checkboxes = True, +# datatables_options = { +# 'iDisplayLength': 25, +# 'bLengthChange' : True, +# 'bAutoWidth' : True, +# }, +# ) + # -------------------------------------------------------------------------- # COLUMNS EDITOR # list of fields to be applied on the query @@ -143,7 +163,7 @@ class SliceResourceView (LoginRequiredView, ThemeView): # center on Paris latitude = 49., longitude = 9, - zoom = 4, + zoom = 8, ) # -------------------------------------------------------------------------- @@ -156,8 +176,9 @@ class SliceResourceView (LoginRequiredView, ThemeView): title = 'Scheduler', # this is the query at the core of the slice list query = sq_resource, + query_lease = sq_lease, query_all_resources = query_resource_all, - query_lease = query_all_lease, + query_all_leases = query_lease_all, ) # -------------------------------------------------------------------------- @@ -167,11 +188,12 @@ class SliceResourceView (LoginRequiredView, ThemeView): page = page, title = 'Pending operations', query = main_query, - togglable = True, + togglable = False, # start turned off, it will open up itself when stuff comes in toggled = False, domid = 'pending', outline_complete = True, + username = request.user, ) # -------------------------------------------------------------------------- @@ -181,8 +203,8 @@ class SliceResourceView (LoginRequiredView, ThemeView): network_md = metadata.details_by_object('network') network_fields = [column['name'] for column in network_md['column']] - query_network = Query.get('network').select(network_fields) - page.enqueue_query(query_network) + #query_network = Query.get('network').select(network_fields) + #page.enqueue_query(query_network) filter_testbeds = TestbedsPlugin( page = page, @@ -190,7 +212,7 @@ class SliceResourceView (LoginRequiredView, ThemeView): title = 'Filter by testbeds', query = sq_resource, query_all = query_resource_all, - query_network = query_network, + #query_network = query_network, init_key = "network_hrn", checkboxes = True, datatables_options = { @@ -200,9 +222,43 @@ 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) + 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" + template_env = {} 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) template_env['columns_editor'] = filter_column_editor.render(self.request) @@ -210,8 +266,10 @@ class SliceResourceView (LoginRequiredView, ThemeView): template_env['map_resources'] = map_resources.render(self.request) template_env['scheduler'] = resources_as_scheduler2.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