def get_context_data(self, **kwargs): page = Page(self.request) page.add_js_files(["js/common.functions.js"]) platform_query = Query().get('local:platform').filter_by( 'disabled', '==', '0').select('platform', 'platform_longname', 'gateway_type') #platform_query = Query().get('local:platform').select('platform','platform_longname','gateway_type') page.enqueue_query(platform_query) page.expose_js_metadata() platformlist = QueryTable( page=page, title='List', domid='checkboxes', # this is the query at the core of the slice list query=platform_query, query_all=platform_query, checkboxes=False, init_key='platform', datatables_options={ 'iDisplayLength': 10, 'bLengthChange': True, 'bAutoWidth': True, }, ) context = super(PlatformsView, self).get_context_data(**kwargs) context['person'] = self.request.user context['platforms'] = platformlist.render(self.request) # XXX This is repeated in all pages # more general variables expected in the template context['title'] = 'Platforms connected to MySlice' # the menu items on the top context['topmenu_items'] = topmenu_items_live('Platforms', page) # so we can sho who is logged context['username'] = the_user(self.request) context['theme'] = self.theme context.update(page.prelude_env()) context['layout_1_or_2'] = "layout-unfold2.html" if not context[ 'username'] else "layout-unfold1.html" return context
def get_context_data(self, **kwargs): page = Page(self.request) page.add_js_files ( [ "js/common.functions.js" ] ) platform_query = Query().get('local:platform').filter_by('disabled', '==', '0').select('platform','platform_longname','gateway_type') #platform_query = Query().get('local:platform').select('platform','platform_longname','gateway_type') page.enqueue_query(platform_query) page.expose_js_metadata() platformlist = QueryTable( page = page, title = 'List', domid = 'checkboxes', # this is the query at the core of the slice list query = platform_query, query_all = platform_query, checkboxes = False, init_key = 'platform', datatables_options = { 'iDisplayLength': 10, 'bLengthChange' : True, 'bAutoWidth' : True, }, ) context = super(PlatformsView, self).get_context_data(**kwargs) context['person'] = self.request.user context['platforms'] = platformlist.render(self.request) # XXX This is repeated in all pages # more general variables expected in the template context['title'] = 'Platforms connected to MySlice' # the menu items on the top context['topmenu_items'] = topmenu_items_live('Platforms', page) # so we can sho who is logged context['username'] = the_user(self.request) context.update(page.prelude_env()) context['layout_1_or_2']="layout-unfold2.html" if not context['username'] else "layout-unfold1.html" return context
def get_context_data(self, **kwargs): page = Page(self.request) page.add_js_files ( [ "js/common.functions.js" ] ) for key, value in kwargs.iteritems(): print "%s = %s" % (key, value) if key == "urn": resource_urn=value resource_query = Query().get('resource')\ .filter_by('urn', '==', resource_urn)\ .select('hostname','type','hrn','urn', 'latitude', 'longitude', 'country') page.enqueue_query(resource_query) page.expose_js_metadata() resourcelist = QueryTable( page = page, title = 'List', domid = 'checkboxes', # this is the query at the core of the slice list query = resource_query, query_all = resource_query, checkboxes = False, datatables_options = { 'iDisplayLength' : 25, 'bLengthChange' : True, }, ) resource_as_map = GoogleMap( page = page, title = 'Geographic view', domid = 'resources-map', # tab's sons preferably turn this off togglable = True, query = resource_query, query_all = resource_query, googlemap_api_key = ConfigEngine().googlemap_api_key(), checkboxes = False, # center on Paris #latitude = 49., #longitude = 9, #zoom = 4, ) # resourcelist = SimpleList( # title = None, # page = page, # key = 'hrn', # query = resource_query, # ) resource_stats = SliceStat( title = None, page = page, stats = 'node', key = 'hrn', query = resource_query ) context = super(ResourceView, self).get_context_data(**kwargs) context['person'] = self.request.user context['resource'] = resourcelist.render(self.request) context['resource_as_map'] = resource_as_map.render(self.request) context['resource_stats'] = resource_stats.render(self.request) # XXX This is repeated in all pages # more general variables expected in the template context['title'] = 'Information about a resource' # the menu items on the top context['topmenu_items'] = topmenu_items_live(None, page) # so we can sho who is logged context['username'] = the_user(self.request) context.update(page.prelude_env()) return context
def get_context_data(self, **kwargs): page = Page(self.request) page.add_js_files(["js/common.functions.js"]) for key, value in kwargs.iteritems(): logger.debug("{} = {}".format(key, value)) if key == "platformname": platformname = value network_query = Query().get('local:platform')\ .filter_by('platform', '==', platformname)\ .select('platform','platform_longname','gateway_type') page.enqueue_query(network_query) # ListResources of the platform metadata = page.get_metadata() resource_md = metadata.details_by_object('resource') resource_fields = [column['name'] for column in resource_md['column']] resources = platformname + ':resource' query_resource_all = Query.get(resources).select(resource_fields) page.enqueue_query(query_resource_all) query_resource_default_fields = Query.get(resources).select( 'hrn', 'hostname', 'type', 'country') page.enqueue_query(query_resource_default_fields) page.expose_js_metadata() networklist = QueryTable( page=page, title='List', domid='checkboxes', # this is the query at the core of the slice list query=network_query, query_all=network_query, checkboxes=False, datatables_options={ 'iDisplayLength': 25, 'bLengthChange': True, }, ) # networklist = SimpleList( # title = None, # page = page, # key = 'platform', # query = network_query, # ) # # -------------------------------------------------------------------------- # RESOURCES # for internal use in the querytable plugin; # needs to be a unique column present for each returned record main_query_init_key = 'hrn' # the resources part is made of a Tabs (Geographic, List), resources_as_gmap = GoogleMap( page=page, title='Geographic view', domid='resources-map', # tab's sons preferably turn this off togglable=False, query=query_resource_default_fields, query_all=query_resource_all, # this key is the one issued by google googlemap_api_key=ConfigEngine().googlemap_api_key(), # the key to use at init-time init_key=main_query_init_key, checkboxes=False, # center on Paris latitude=49., longitude=9, zoom=4, ) resources_as_3dmap = SensLabMap( page=page, title='3D Map', domid='senslabmap', query=query_resource_default_fields, query_all=query_resource_all, ) resources_as_list = QueryTable( page=page, domid='resources-list', title='List view', # this is the query at the core of the slice list query=query_resource_default_fields, query_all=query_resource_all, init_key=main_query_init_key, checkboxes=False, datatables_options={ 'iDisplayLength': 25, 'bLengthChange': True, 'bAutoWidth': True, }, ) resources_sons = [ resources_as_gmap, resources_as_3dmap, resources_as_list, ] resources_area = Tabs( page=page, domid="resources", togglable=True, title="Resources", outline_complete=True, sons=resources_sons, active_domid='resources-map', persistent_active=True, ) context = super(PlatformView, self).get_context_data(**kwargs) context['person'] = self.request.user context['networks'] = networklist.render(self.request) context['resources'] = resources_area.render(self.request) # XXX This is repeated in all pages # more general variables expected in the template context['title'] = 'Platforms connected to MySlice' # the menu items on the top context['topmenu_items'] = topmenu_items_live('Platforms', page) # so we can sho who is logged context['username'] = the_user(self.request) context['theme'] = self.theme context.update(page.prelude_env()) return context
def get_context_data(self, **kwargs): page = Page(self.request) page.add_js_files ( [ "js/common.functions.js" ] ) for key, value in kwargs.iteritems(): print "%s = %s" % (key, value) if key == "platformname": platformname=value network_query = Query().get('local:platform')\ .filter_by('platform', '==', platformname)\ .select('platform','platform_longname','gateway_type') page.enqueue_query(network_query) # ListResources of the platform metadata = page.get_metadata() resource_md = metadata.details_by_object('resource') resource_fields = [column['name'] for column in resource_md['column']] resources = platformname + ':resource' query_resource_all = Query.get(resources).select(resource_fields) page.enqueue_query(query_resource_all) query_resource_default_fields = Query.get(resources).select('hrn','hostname', 'type','country') page.enqueue_query(query_resource_default_fields) page.expose_js_metadata() networklist = QueryTable( page = page, title = 'List', domid = 'checkboxes', # this is the query at the core of the slice list query = network_query, query_all = network_query, checkboxes = False, datatables_options = { 'iDisplayLength' : 25, 'bLengthChange' : True, }, ) # networklist = SimpleList( # title = None, # page = page, # key = 'platform', # query = network_query, # ) # # -------------------------------------------------------------------------- # RESOURCES # for internal use in the querytable plugin; # needs to be a unique column present for each returned record main_query_init_key = 'hrn' # the resources part is made of a Tabs (Geographic, List), resources_as_gmap = GoogleMap( page = page, title = 'Geographic view', domid = 'resources-map', # tab's sons preferably turn this off togglable = False, query = query_resource_default_fields, query_all = query_resource_all, # this key is the one issued by google googlemap_api_key = ConfigEngine().googlemap_api_key(), # the key to use at init-time init_key = main_query_init_key, checkboxes = False, # center on Paris latitude = 49., longitude = 9, zoom = 4, ) resources_as_3dmap = SensLabMap( page = page, title = '3D Map', domid = 'senslabmap', query = query_resource_default_fields, query_all = query_resource_all, ) resources_as_list = QueryTable( page = page, domid = 'resources-list', title = 'List view', # this is the query at the core of the slice list query = query_resource_default_fields, query_all = query_resource_all, init_key = main_query_init_key, checkboxes = False, datatables_options = { 'iDisplayLength': 25, 'bLengthChange' : True, 'bAutoWidth' : True, }, ) resources_sons = [ resources_as_gmap, resources_as_3dmap, resources_as_list, ] resources_area = Tabs ( page=page, domid="resources", togglable=True, title="Resources", outline_complete=True, sons= resources_sons, active_domid = 'resources-map', persistent_active=True, ) context = super(PlatformView, self).get_context_data(**kwargs) context['person'] = self.request.user context['networks'] = networklist.render(self.request) context['resources'] = resources_area.render(self.request) # XXX This is repeated in all pages # more general variables expected in the template context['title'] = 'Platforms connected to MySlice' # the menu items on the top context['topmenu_items'] = topmenu_items_live('Platforms', page) # so we can sho who is logged context['username'] = the_user(self.request) context.update(page.prelude_env()) return context
def get (self, request, slicename='ple.inria.f14'): page=Page(request) page.expose_js_metadata() metadata = page.get_metadata() resource_md = metadata.details_by_object('resource') resource_fields = [column['name'] for column in resource_md['column']] main_query = Query.get('slice').filter_by('slice_hrn', '=', slicename) main_query.select( 'slice_hrn', 'resource.hostname', 'resource.type', 'resource.network_hrn', 'lease.urn', 'user.user_hrn', #'application.measurement_point.counter' ) # for internal use in the querytable plugin; # needs to be a unique column present for each returned record main_query_init_key = 'hostname' query_resource_all = Query.get('resource').select(resource_fields) aq = AnalyzedQuery(main_query, metadata=metadata) page.enqueue_query(main_query, analyzed_query=aq) page.enqueue_query(query_resource_all) sq_resource = aq.subquery('resource') resources_as_list = QueryTable( page = page, domid = 'resources-list', title = 'List view', # this is the query at the core of the slice list query = sq_resource, query_all = query_resource_all, # safer to use 'hrn' as the internal unique key for this plugin init_key = main_query_init_key, checkboxes = True, datatables_options = { 'iDisplayLength': 25, 'bLengthChange' : True, 'bAutoWidth' : True, }, ) # variables that will get passed to the view-unfold1.html template template_env = {} # define 'unfold_main' to the template engine - the main contents template_env [ 'unfold_main' ] = resources_as_list.render(request) # more general variables expected in the template template_env [ 'title' ] = 'simple %(slicename)s'%locals() # the menu items on the top template_env [ 'topmenu_items' ] = topmenu_items_live('Slice', page) # so we can sho who is logged template_env [ 'username' ] = the_user (request) # the prelude object in page contains a summary of the requirements() for all plugins # define {js,css}_{files,chunks} prelude_env = page.prelude_env() template_env.update(prelude_env) result=render_to_response ('view-unfold1.html',template_env, context_instance=RequestContext(request)) return result
def get(self, request, slicename): if request.GET.get('message'): msg = "Slice successfully updated" else: msg = None page = Page(request) metadata = page.get_metadata() page.expose_js_metadata() resource_md = metadata.details_by_object('resource') resource_fields = [column['name'] for column in resource_md['column']] user_md = metadata.details_by_object('user') 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) # leases query #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) slice_md = metadata.details_by_object('slice') slice_fields = [column['name'] for column in slice_md['column']] 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 # # bugs ! # 'slice_urn', # # RESOURCES # 'resource', # 'lease', # 'resource.urn', # 'resource.hostname', 'resource.type', # # - 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', # # - 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' #) # for internal use in the querytable plugin; # needs to be a unique column present for each returned record main_query_init_key = 'urn' aq = AnalyzedQuery(main_query, metadata=metadata) 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') # -------------------------------------------------------------------------- # 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, mapping=QUERYTABLE_MAP, default_fields=query_default_fields, init_key="urn", checkboxes=True, datatables_options={ 'iDisplayLength': 25, 'bLengthChange': True, 'bAutoWidth': True, }, ) # -------------------------------------------------------------------------- # RESERVED RESOURCES LIST # resources as a list using datatable plugin 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 # this will add/remove columns in QueryTable plugin filter_column_editor = ColumnsEditor( page=page, query=sq_resource, query_all=query_resource_all, default_fields=query_default_fields, title="Select Columns", domid='select-columns', ) # -------------------------------------------------------------------------- # RESOURCES MAP # the resources part is made of a Tabs (Geographic, List), map_resources = GoogleMap( page=page, title='Geographic view', domid='resources-map', # tab's sons preferably turn this off togglable=False, query=sq_resource, # this key is the one issued by google googlemap_api_key=ConfigEngine().googlemap_api_key(), # the key to use at init-time init_key=main_query_init_key, checkboxes=True, # To center around Europe : 53,9 / 3 latitude=53., longitude=9., zoom=3, ) # -------------------------------------------------------------------------- # LEASES Nitos Scheduler # Display the leases reservation timeslots of the resources resources_as_scheduler2 = Scheduler2( page=page, domid='scheduler', title='Scheduler', # this is the query at the core of the slice list query=sq_resource, 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) # pending_resources = QueryUpdaterPlugin( # page = page, # title = 'Pending operations', # query = main_query, # togglable = False, # # start turned off, it will open up itself when stuff comes in # toggled = False, # domid = 'pending', # outline_complete = True, # username = request.user, # ) # -------------------------------------------------------------------------- # NETWORKS # testbeds as a list of filters 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) 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, # }, ) filter_status = FilterStatusPlugin( page=page, domid="filter-status", query=sq_resource, query_lease=sq_lease, ) apply = ApplyPlugin( page=page, domid="apply", query=main_query, 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, ) 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) template_env['columns_editor'] = filter_column_editor.render( self.request) template_env['filter_testbeds'] = filter_testbeds.render(self.request) template_env['filter_status'] = filter_status.render(self.request) template_env['apply'] = apply.render(self.request) 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) # 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["theme"] = self.theme template_env["username"] = request.user template_env["slice"] = slicename template_env["section"] = "resources" template_env["msg"] = msg template_env.update(page.prelude_env()) return render_to_response(self.template, template_env, context_instance=RequestContext(request))